diff --git a/README.md b/README.md index 5ff3870..7309eb5 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,30 @@ # K3s cluster -| Name | Usage | Accessibility | Host | DB type | Additional data | Backup configuration | Log management | Status | -|-------------------------|--------------------------------------|---------------|--------------|------------|----------------------|----------------------|----------------|--------------------------------| -| therbron.com | Personal website | Public | Socrates | - | - | - | Not configured | Awaiting configuration | -| Traefik | Reverse proxy and load balancer | Public* | Socrates | - | - | - | Not configured | Yes | -| Adguard | DNS ad blocker and custom DNS server | Private | Socrates | - | - | - | Not configured | Yes | -| Owncloud Infinity Scale | File hosting webUI | Public | Plato | PostgreSQL | Drive files | None | Not configured | Awaiting configuration | -| Home assistant | Home automation and monitoring | Private | Pythagoras-a | PostgreSQL | - | None | Not configured | Awaiting configuration | -| Vikunja | To-do and Kanban boards | Public | Pythagoras-b | - | - | - | Not configured | Migrate to Gitlab | -| Gitlab | Version control system | Public | Pythagoras-b | PostgreSQL | User created content | None | Not configured | Awaiting configuration | -| Wiki | Documentation manager | Public | Pythagoras-b | - | - | - | Not configured | Migrate to VuePress and Gitlab | -| Vaultwarden | Password manager | Public | Pythagoras-b | PostgreSQL | - | 4AM K8s CronJob | Not configured | Awaiting configuration | -| Synapse | Matrix server - Message centralizer | Public | Pythagoras-b | PostgreSQL | User medias | None | Not configured | Awaiting configuration | -| PaperlessNG | PDF viewer and organiser | Public | Pythagoras-b | PostgreSQL | - | - | Not configured | Research migration into OCIS | -| Raspsnir | Bachelor memorial website | Public | Pythagoras-b | PostgreSQL | - | None | Not configured | Awaiting configuration | -| Jellyfin | Media streaming | Public | Archimedes | - | - | - | Not configured | Awaiting configuration | -| Sonarr | TV shows collection manager | Private | Plato | SQLite** | Internal backups | None | Not configured | Awaiting configuration | -| Radarr | Movie collection manager | Private | Plato | SQLite** | Internal backups | None | Not configured | Awaiting configuration | -| Jackett | Torrent indexer | Private | Plato | - |
?
| None | Not configured | Awaiting configuration | -| Deluge | Torrent client | Private | Plato | - |
?
| - | Not configured | Awaiting configuration | -| Minecraft | Vanilla minecraft server for friends | Public | Archimedes | - | Game map | None | Not configured | Yes | -| Satisfactory | Satisfactory server for friends | Public | Archimedes | - | Game map | None | Not configured | Awaiting configuration | -| Space engineers | Space engineers server for friends | Public | Archimedes | - | Game map | None | Not configured | Awaiting configuration | +| Name | Usage | Accessibility | Host | DB type | Additional data | Backup configuration | Loki integration | Prometheus integration | Status | +|-------------------------|--------------------------------------|---------------|--------------|------------|----------------------|----------------------|------------------|------------------------|--------------------------------| +| therbron.com | Personal website | Public | Socrates | - | - | - | Not configured | Not configured | Awaiting configuration | +| Traefik | Reverse proxy and load balancer | Public* | Socrates | - | - | - | Configured | Configured | Completed | +| Adguard | DNS ad blocker and custom DNS server | Private | Socrates | - | - | - | Not configured | Not configured | Completed | +| Owncloud Infinity Scale | File hosting webUI | Public | Plato | PostgreSQL | Drive files | Not configured | Not configured | Not configured | Awaiting configuration | +| Home assistant | Home automation and monitoring | Private | Pythagoras-a | PostgreSQL | - | Not configured | Not configured | Not configured | Awaiting configuration | +| Vikunja | To-do and Kanban boards | Public | Pythagoras-b | - | - | - | Not configured | Not configured | Migrate to Gitlab | +| Gitlab | Version control system | Public | Pythagoras-b | PostgreSQL | User created content | Not configured | Not configured | Not configured | Awaiting configuration | +| Wiki | Documentation manager | Public | Pythagoras-b | - | - | - | Not configured | Not configured | Migrate to VuePress and Gitlab | +| Vaultwarden | Password manager | Public | Pythagoras-b | PostgreSQL | - | 4AM K8s CronJob | Configured | Not available | Completed | +| Synapse | Matrix server - Message centralizer | Public | Pythagoras-b | PostgreSQL | User medias | Not configured | Not configured | Not configured | Awaiting configuration | +| PaperlessNG | PDF viewer and organiser | Public | Pythagoras-b | PostgreSQL | - | - | Not configured | Not configured | Research migration into OCIS | +| Raspsnir | Bachelor memorial website | Public | Pythagoras-b | PostgreSQL | - | Not configured | Not configured | Not configured | Awaiting configuration | +| Jellyfin | Media streaming | Public | Archimedes | - | - | - | Not configured | Not configured | Awaiting configuration | +| Sonarr | TV shows collection manager | Private | Plato | SQLite** | Internal backups | Not configured | Not configured | Not configured | Awaiting configuration | +| Radarr | Movie collection manager | Private | Plato | SQLite** | Internal backups | Not configured | Not configured | Not configured | Awaiting configuration | +| Jackett | Torrent indexer | Private | Plato | - |
?
| Not configured | Not configured | Not configured | Awaiting configuration | +| Deluge | Torrent client | Private | Plato | - |
?
| - | Not configured | Not configured | Awaiting configuration | +| Minecraft | Vanilla minecraft server for friends | Public | Archimedes | - | Game map | Not configured | Not configured | Not configured | Awaiting configuration | +| Satisfactory | Satisfactory server for friends | Public | Archimedes | - | Game map | Not configured | Not configured | Not configured | Awaiting configuration | +| Space engineers | Space engineers server for friends | Public | Archimedes | - | Game map | Not configured | Not configured | Not configured | Awaiting configuration | +| Prometheus | Metrics aggregator | Private | Pythagoras-b | TBD | - | Not configured | Configured | Configured | Partial | +| Loki | Log aggregator | Private | Pythagoras-b | TBD | - | Not configured | Configured | Configured | Partial | +| Grafana | Graph visualizer | Public | Pythagoras-b | - | - | Not configured | Configured | Configured | Partial | \* Configuration panel only available internally
** Current implementation only support SQLite, making manual backups a necessity @@ -54,39 +57,36 @@ longhorn - Write CI/CD pipeline to create environment loaded files - Write CI/CD pipeline to deploy cluster - Setup internal traefik with nodeport as reverse proxy for internal only services -- Setup DB container sidecars for automated backups to Longhorn volume +- ~~Setup DB container sidecars for automated backups to Longhorn volume~~ - Setup secrets configuration through CI/CD variable injection +- Explore permission issues when issuing OVH API keys (not working for wildcard and `beta.halia.dev` subdomain) +- ~~Setup log and metric monitoring~~ +- ~~Define namespaces through yaml files~~ - ~~Look into CockroachDB for redundant database~~ Judged too complicated, moving to a 1 to 1 relationship between services and databases - ~~Configure IP range accessibility through Traefik (Internal vs external services)~~ Impossible because of flannel ip-masq ## Notes -# Cluster base setup +### Cluster base setup Add node to the list of available load balancer `kubectl label node svccontroller.k3s.cattle.io/enablelb=true` +NOTE: For development, don't forget to also add the `cp` to the LB list, in order to access local only services Setup OVH configuration `kubectl apply -f ovh-config.yaml` - -Install traefik through helm -``` -helm repo add traefik https://helm.traefik.io/traefik -helm repo update -helm install -f helm/traefik/values.yaml traefik traefik/traefik -``` - -Setup SSL certificates -``` -kubectl apply -f ovh-config.yaml -``` +Install traefik +`kubectl apply -f traefik` Install longhorn ``` kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml ``` - +Remove `local-path` from default StorageClass +`kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'` Add longhorn storage classes `kubectl apply -f res` +### Convert helm chart to k3s manifest +`helm template chart stable/chart --output-dir ./chart`