Secret store
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
{{- if .Values.vault.enabled }}
|
||||
apiVersion: external-secrets.io/v1beta1
|
||||
---
|
||||
apiVersion: external-secrets.io/v1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: db-encryption
|
||||
@@ -9,10 +10,10 @@ metadata:
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
spec:
|
||||
refreshInterval: {{ .Values.vault.refreshInterval | default "1h" }}
|
||||
refreshInterval: {{ .Values.vault.refreshInterval | default "5m" }}
|
||||
secretStoreRef:
|
||||
name: {{ .Values.vault.secretStoreName }}
|
||||
kind: {{ .Values.vault.secretStoreKind | default "SecretStore" }}
|
||||
kind: SecretStore
|
||||
target:
|
||||
name: db-encryption
|
||||
creationPolicy: Owner
|
||||
|
||||
24
helm/homarr/dev/templates/vault-secretstore.yaml
Normal file
24
helm/homarr/dev/templates/vault-secretstore.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
{{- if .Values.vault.enabled }}
|
||||
################
|
||||
# SECRET STORE #
|
||||
################
|
||||
---
|
||||
apiVersion: external-secrets.io/v1
|
||||
kind: SecretStore
|
||||
metadata:
|
||||
name: vault-backend
|
||||
namespace: {{ .Release.Namespace }}
|
||||
spec:
|
||||
provider:
|
||||
vault:
|
||||
server: {{ .Values.vault.server }}
|
||||
path: {{ .Values.vault.path | default "secret" }}
|
||||
version: {{ .Values.vault.version | default "v2" }}
|
||||
auth:
|
||||
kubernetes:
|
||||
mountPath: {{ .Values.vault.auth.kubernetes.mountPath }}
|
||||
role: {{ .Values.vault.auth.kubernetes.role }}
|
||||
serviceAccountRef:
|
||||
name: {{ .Values.vault.auth.kubernetes.serviceAccountRef.name }}
|
||||
{{- end }}
|
||||
|
||||
@@ -35,28 +35,41 @@ homarr:
|
||||
#
|
||||
# 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é
|
||||
# 2. Le secret doit être stocké dans Vault au chemin spécifié
|
||||
# 3. Un rôle Vault doit être configuré pour l'authentification Kubernetes
|
||||
#
|
||||
# Pour stocker le secret dans Vault:
|
||||
# vault kv put homarr/dev db-encryption-key=$(openssl rand -hex 32)
|
||||
# Pour stocker le secret dans Vault (KV v2):
|
||||
# vault kv put secret/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
|
||||
# Structure dans Vault (KV v2):
|
||||
# secret/
|
||||
# homarr/
|
||||
# dev/
|
||||
# db-encryption-key: "votre-clé-générée"
|
||||
vault:
|
||||
enabled: true
|
||||
# Nom du SecretStore ou ClusterSecretStore configuré pour Vault
|
||||
# Configuration du serveur Vault
|
||||
server: "http://hashicorp-vault.hashi-vault.svc.cluster.local:8200"
|
||||
# Chemin du mount KV dans Vault (par défaut: "secret")
|
||||
path: "secret"
|
||||
# Version du KV store (v1 ou v2)
|
||||
version: "v2"
|
||||
# Configuration d'authentification Kubernetes
|
||||
auth:
|
||||
kubernetes:
|
||||
# Chemin du mount d'authentification Kubernetes dans Vault
|
||||
mountPath: "kubernetes"
|
||||
# Rôle Vault configuré pour cette application
|
||||
role: "homarr-dev-role"
|
||||
# Service Account utilisé pour l'authentification
|
||||
serviceAccountRef:
|
||||
name: "homarr-dev-sa"
|
||||
# Nom du SecretStore créé (utilisé par ExternalSecret)
|
||||
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)
|
||||
# Chemin dans Vault où se trouve le secret (sans le préfixe "secret/data/")
|
||||
# Exemple: "homarr/dev" pour secret/data/homarr/dev dans KV v2
|
||||
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"
|
||||
# Intervalle de rafraîchissement du secret (par défaut: 5m)
|
||||
refreshInterval: "5m"
|
||||
|
||||
Reference in New Issue
Block a user