add vault

This commit is contained in:
2026-01-12 02:08:56 +01:00
parent 91cab475c2
commit 7a5fc8a9e7
3 changed files with 58 additions and 22 deletions

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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"