diff --git a/README.md b/README.md index ef0fa8b..1468f2a 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ | Name | Usage | Accessibility | Host | DB type | Additional data | Backup configuration | Loki integration | Prometheus integration | Secret management | Status | Standalone migration | |-------------------------|--------------------------------------|------------------|-------------------------|------------|----------------------|----------------------|------------------|------------------------|------------------------|-----------------------------------|----------------------| | Traefik | Reverse proxy and load balancer | Public & Private | Socrates & Pythagoras-b | - | - | - | Configured | Configured | - | Completed5 | Backbone | -| ArgoCD | Declarative GitOPS CD | Private | Pythagoras-b | - | - | - | Configured | Not configured | - | Partial | Backbone | +| ArgoCD | Declarative GitOPS CD | Private | Pythagoras-b | - | - | - | Configured | Configured | - | Completed | Backbone | | Vaultwarden | Password manager | Public | Pythagoras-b | PostgreSQL | - | 4AM K8s CronJob | Configured | Not available | Configured | Completed | Completed | | Gitlab | Version control system | Public | Pythagoras-b | PostgreSQL | User created content | 5AM internal CronJob | Configured | Configured | Not configured | Partial4 | Awaiting | | Radarr | Movie collection manager | Private | Plato | PostgreSQL | - | - | Configured | Configured | Not configured | Partial | Awaiting | @@ -36,6 +36,8 @@ 3 Missing Longhorn scheduling for saving media_store and secret management
4 Backup management is not handled by k3s but by an internal cronjob rule (Change image name when putting to production)
5 Missing dashboard configuration
+6 Done through volume backup, because not possible otherwise
+7 Done, but needs a reimplementation using kustomize for secret separation from configmap
## Backup management @@ -61,22 +63,25 @@ longhorn │ ... ``` ## TODO -- Migrate Vaultwarden & Homeassistant to PostgreSQL instead of MariaDB -- Deploy PostgresQL cluster using operator for database HA and easy maintenance +- Add AntiAffinities to `outsider` nodes +- Migrate Homeassistant to PostgreSQL instead of MariaDB +- Move Prometheus connection management to ServiceMonitors instead of ConfigMap +- Schedule longhorn S3 backups +- ~~Migrate Vaultwarden to PostgreSQL instead of MariaDB~~ +- ~~Deploy PostgresQL cluster using operator for database HA and easy maintenance~~ - To be tested properly - Change host/deployment specific variables to use environment variables (using Kustomize) - ~~Write CI/CD pipeline to create environment loaded files~~ Done with Kustomize migration -- Write CI/CD pipeline to deploy cluster +- ~~Write CI/CD pipeline to deploy cluster~~ Done with ArgoCD - ~~Setup internal traefik with nodeport as reverse proxy for internal only services~~ Done through double ingress class and LB - ~~Setup DB container sidecars for automated backups to Longhorn volume~~ -- Setup secrets configuration through CI/CD variable injection (using Kustomzie) +- Setup secrets configuration through CI/CD variable injection (using Kustomize) - Explore permission issues when issuing OVH API keys (not working for wildcard and `beta.halia.dev` subdomain) - Setup default users for deployments - ~~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 -- Schedule longhorn S3 backups -- Move secrets to separate, private Git repository ? +- ~~Move secrets to separate, private Git repository ?~~ Done with SOPS - ~~Configure NFS connection for media library~~ - ~~Research IPv6 configuration for outsider node~~ Impossible in Denmark while using YouSee as an ISP for now (no IPv6 support) @@ -118,4 +123,3 @@ Secrets are decrypted on the fly when applied to the kluster using the SOPS Oper Inject the AGE key in the cluster to allow the operator to decrypt secrets : ``` kubectl create secret generic age-key --from-file= -n sops -```