diff --git a/helm/homarr/dev/templates/db-encryption-externalsecret.yaml b/helm/homarr/dev/templates/db-encryption-externalsecret.yaml new file mode 100644 index 0000000..9b0856d --- /dev/null +++ b/helm/homarr/dev/templates/db-encryption-externalsecret.yaml @@ -0,0 +1,25 @@ +{{- if .Values.vault.enabled }} +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: db-encryption + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: homarr + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + refreshInterval: {{ .Values.vault.refreshInterval | default "1h" }} + secretStoreRef: + name: {{ .Values.vault.secretStoreName }} + kind: {{ .Values.vault.secretStoreKind | default "SecretStore" }} + target: + name: db-encryption + creationPolicy: Owner + data: + - secretKey: db-encryption-key + remoteRef: + key: {{ .Values.vault.secretPath }} + property: {{ .Values.vault.secretKey }} +{{- end }} + diff --git a/helm/homarr/dev/templates/db-encryption-secret.yaml b/helm/homarr/dev/templates/db-encryption-secret.yaml deleted file mode 100644 index d0d53a3..0000000 --- a/helm/homarr/dev/templates/db-encryption-secret.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: db-encryption - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: homarr - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -type: Opaque -stringData: - # Clé de chiffrement pour la base de données Homarr - # La valeur est définie dans values.yaml sous homarr.dbEncryptionKey - # Pour générer une nouvelle clé: openssl rand -hex 32 - # La valeur sera automatiquement encodée en base64 par Kubernetes - db-encryption-key: {{ .Values.homarr.dbEncryptionKey }} - diff --git a/helm/homarr/dev/values.yaml b/helm/homarr/dev/values.yaml index ba98c40..69dcfdb 100644 --- a/helm/homarr/dev/values.yaml +++ b/helm/homarr/dev/values.yaml @@ -22,13 +22,41 @@ homarr: # Configuration TLS (optionnel) # tls: [] - # Configuration du secret de chiffrement de la base de données - # IMPORTANT: Le secret doit être créé manuellement avant le déploiement - # Créez-le avec: kubectl create secret generic db-encryption -n homarr-dev \ - # --from-literal=db-encryption-key=$(openssl rand -hex 32) + # Configuration pour le chart homarr (référence au secret créé par External Secrets) envSecrets: dbEncryption: - # Nom du secret Kubernetes existant + # Nom du secret Kubernetes créé par External Secrets existingSecret: "db-encryption" # Clé dans le secret contenant la clé de chiffrement key: "db-encryption-key" + +# Configuration spécifique au wrapper (non passée au chart homarr) +# Configuration du secret de chiffrement de la base de données via HashiCorp Vault +# +# PRÉREQUIS: +# 1. External Secrets Operator doit être installé dans le cluster +# 2. Un SecretStore ou ClusterSecretStore doit être configuré pour Vault +# 3. Le secret doit être stocké dans Vault au chemin spécifié +# +# Pour stocker le secret dans Vault: +# vault kv put homarr/dev db-encryption-key=$(openssl rand -hex 32) +# +# Ou via l'API Vault: +# curl -H "X-Vault-Token: $VAULT_TOKEN" \ +# -H "Content-Type: application/json" \ +# -X POST -d '{"data":{"db-encryption-key":"'$(openssl rand -hex 32)'"}}' \ +# https://vault.example.com/v1/secret/data/homarr/dev +vault: + enabled: true + # Nom du SecretStore ou ClusterSecretStore configuré pour Vault + secretStoreName: "vault-backend" + # Kind du SecretStore (SecretStore ou ClusterSecretStore) + secretStoreKind: "SecretStore" + # Chemin dans Vault où se trouve le secret + # Pour KV v2: "secret/data/homarr/dev" (avec le préfixe "secret/data/") + # Pour KV v1: "homarr/dev" (sans préfixe) + secretPath: "homarr/dev" + # Clé dans le secret Vault contenant la clé de chiffrement + secretKey: "db-encryption-key" + # Intervalle de rafraîchissement du secret (par défaut: 1h) + refreshInterval: "1h"