# k8s-manifests Manifests de Kubernetes gestionados por ArgoCD para el cluster chemavx. ## Regla crítica: secrets en git **Los secrets con datos sensibles NO se guardan en este repo.** Los archivos de secret en este repo sólo contienen metadata (name, namespace, labels, annotations). Los campos `data` / `stringData` se gestionan manualmente fuera de git. ### Por qué Un valor placeholder como `REDACTED` es base64 válido que decodifica a bytes no-UTF-8. Si ArgoCD aplica ese manifest, corrompe el secret en el cluster, lo que puede: - Romper certificados TLS (ERR_CERT_AUTHORITY_INVALID) - Impedir que pods arranquen (`grpc: error while marshaling: string field contains invalid UTF-8`) - Cifrar credenciales con una clave incorrecta ### Secrets TLS (cert-manager) Los secrets TLS los gestiona **cert-manager** automáticamente a partir del recurso `Certificate`. **No crear archivos secret-*-tls.yaml con datos**. ### Secrets de aplicación — crear manualmente antes del primer deploy | Namespace | Secret | Comando | |---|---|---| | `n8n` | `n8n-secret` | `kubectl create secret generic n8n-secret --from-literal=encryption-key='' -n n8n` | | `authentik` | `authentik-secret` | Ver Vaultwarden → "authentik" | | `cloudflare-ddns` | `cloudflare-ddns-secret` | Ver Vaultwarden → "cloudflare-ddns" | | `vaultwarden` | `vaultwarden-secret` | Ver Vaultwarden → "vaultwarden" | | `openclaw` | `openclaw-token` | Ver Vaultwarden → "openclaw" | | `argocd` | `argocd-secret` | Gestionado por ArgoCD bootstrap | | `argocd` | `argocd-redis` | Gestionado por ArgoCD bootstrap | | `monitoring` | `kube-prometheus-stack-grafana` | Ver Vaultwarden → "grafana" | | `monitoring` | `kube-prometheus-stack-admission` | Generado por helm (webhook TLS) | ### ArgoCD ignoreDifferences para secrets Toda ArgoCD Application que gestione un namespace con secrets debe incluir `ignoreDifferences` para el campo `/data`: ```yaml spec: ignoreDifferences: - group: "" kind: Secret name: namespace: jsonPointers: - /data syncPolicy: syncOptions: - RespectIgnoreDifferences=true ``` Ver `n8n` ArgoCD Application como referencia. ## Pre-commit hook Este repo incluye un pre-commit hook que rechaza commits con `REDACTED` en archivos `.yaml`. Instalar con: ```bash cp .githooks/pre-commit .git/hooks/pre-commit chmod +x .git/hooks/pre-commit ``` ## ArgoCD patches Después de instalar ArgoCD aplicar: `kubectl apply -f argocd-patches/redis-patch.yaml`