Secret store
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
{{- if .Values.vault.enabled }}
|
{{- if .Values.vault.enabled }}
|
||||||
apiVersion: external-secrets.io/v1beta1
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
name: db-encryption
|
name: db-encryption
|
||||||
@@ -9,10 +10,10 @@ metadata:
|
|||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
spec:
|
spec:
|
||||||
refreshInterval: {{ .Values.vault.refreshInterval | default "1h" }}
|
refreshInterval: {{ .Values.vault.refreshInterval | default "5m" }}
|
||||||
secretStoreRef:
|
secretStoreRef:
|
||||||
name: {{ .Values.vault.secretStoreName }}
|
name: {{ .Values.vault.secretStoreName }}
|
||||||
kind: {{ .Values.vault.secretStoreKind | default "SecretStore" }}
|
kind: SecretStore
|
||||||
target:
|
target:
|
||||||
name: db-encryption
|
name: db-encryption
|
||||||
creationPolicy: Owner
|
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:
|
# PRÉREQUIS:
|
||||||
# 1. External Secrets Operator doit être installé dans le cluster
|
# 1. External Secrets Operator doit être installé dans le cluster
|
||||||
# 2. Un SecretStore ou ClusterSecretStore doit être configuré pour Vault
|
# 2. Le secret doit être stocké dans Vault au chemin spécifié
|
||||||
# 3. 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:
|
# Pour stocker le secret dans Vault (KV v2):
|
||||||
# vault kv put homarr/dev db-encryption-key=$(openssl rand -hex 32)
|
# vault kv put secret/homarr/dev db-encryption-key=$(openssl rand -hex 32)
|
||||||
#
|
#
|
||||||
# Ou via l'API Vault:
|
# Structure dans Vault (KV v2):
|
||||||
# curl -H "X-Vault-Token: $VAULT_TOKEN" \
|
# secret/
|
||||||
# -H "Content-Type: application/json" \
|
# homarr/
|
||||||
# -X POST -d '{"data":{"db-encryption-key":"'$(openssl rand -hex 32)'"}}' \
|
# dev/
|
||||||
# https://vault.example.com/v1/secret/data/homarr/dev
|
# db-encryption-key: "votre-clé-générée"
|
||||||
vault:
|
vault:
|
||||||
enabled: true
|
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"
|
secretStoreName: "vault-backend"
|
||||||
# Kind du SecretStore (SecretStore ou ClusterSecretStore)
|
# Chemin dans Vault où se trouve le secret (sans le préfixe "secret/data/")
|
||||||
secretStoreKind: "SecretStore"
|
# Exemple: "homarr/dev" pour secret/data/homarr/dev dans KV v2
|
||||||
# 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"
|
secretPath: "homarr/dev"
|
||||||
# Clé dans le secret Vault contenant la clé de chiffrement
|
# Clé dans le secret Vault contenant la clé de chiffrement
|
||||||
secretKey: "db-encryption-key"
|
secretKey: "db-encryption-key"
|
||||||
# Intervalle de rafraîchissement du secret (par défaut: 1h)
|
# Intervalle de rafraîchissement du secret (par défaut: 5m)
|
||||||
refreshInterval: "1h"
|
refreshInterval: "5m"
|
||||||
|
|||||||
Reference in New Issue
Block a user