Change namespace certificates
This commit is contained in:
5
helm/.tls-secrets-sync/ops/Chart.yaml
Normal file
5
helm/.tls-secrets-sync/ops/Chart.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
apiVersion: v2
|
||||
name: tls-secrets-sync
|
||||
description: Synchronisation des secrets TLS depuis OPS vers les autres clusters
|
||||
type: application
|
||||
version: 1.0.0
|
||||
50
helm/.tls-secrets-sync/ops/README.md
Normal file
50
helm/.tls-secrets-sync/ops/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Synchronisation des Secrets TLS
|
||||
|
||||
Ce chart gère la synchronisation des secrets TLS depuis le cluster OPS vers les autres clusters (DEV, RCT, PRD).
|
||||
|
||||
## Structure
|
||||
|
||||
- `Chart.yaml` : Définition du chart Helm
|
||||
- `values.yaml` : Configuration par défaut
|
||||
- `templates/` : Templates Kubernetes
|
||||
- `namespace-certificates.yaml` : Namespace pour les certificats sur OPS
|
||||
- `secret-*.yaml` : Secrets de référence (optionnel)
|
||||
- `sync-job-*.yaml` : Jobs de synchronisation
|
||||
- `rbac-secret-sync.yaml` : RBAC pour les Jobs
|
||||
|
||||
## Utilisation
|
||||
|
||||
### Option 1 : Synchronisation manuelle via script (Recommandée)
|
||||
|
||||
Utilisez le script `scripts/sync-tls-secret.sh` :
|
||||
|
||||
```bash
|
||||
./scripts/sync-tls-secret.sh homarr-dev-tls cluster-ops certificates-ops cluster-dev homarr-dev
|
||||
```
|
||||
|
||||
### Option 2 : Synchronisation automatique via Jobs
|
||||
|
||||
Les Jobs Kubernetes tentent de synchroniser automatiquement, mais nécessitent que les contextes kubectl soient configurés dans le pod.
|
||||
|
||||
### Option 3 : Synchronisation via CronJob
|
||||
|
||||
Créez un CronJob qui exécute le script de synchronisation périodiquement.
|
||||
|
||||
## Configuration
|
||||
|
||||
Les secrets sont synchronisés depuis :
|
||||
- **Source** : Namespace `certificates-ops` sur cluster OPS
|
||||
- **Destination** : Namespaces des applications sur clusters DEV/RCT/PRD
|
||||
|
||||
## Ajout d'un nouveau secret à synchroniser
|
||||
|
||||
1. Ajoutez une entrée dans `apps/applicationset-tls-secrets-sync.yaml`
|
||||
2. Créez un template `sync-job-<app>-<env>.yaml` si nécessaire
|
||||
3. Ou utilisez directement le script `sync-tls-secret.sh`
|
||||
|
||||
## Notes importantes
|
||||
|
||||
- Les contextes kubectl doivent être configurés pour accéder aux différents clusters
|
||||
- Le namespace de destination doit exister sur le cluster cible
|
||||
- Les secrets sont copiés avec leurs données, mais les métadonnées sont nettoyées
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: certificates-ops
|
||||
labels:
|
||||
name: certificates-ops
|
||||
managed-by: argocd
|
||||
purpose: tls-certificates
|
||||
|
||||
30
helm/.tls-secrets-sync/ops/templates/rbac-secret-sync.yaml
Normal file
30
helm/.tls-secrets-sync/ops/templates/rbac-secret-sync.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: secret-sync-sa
|
||||
namespace: certificates-ops
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: secret-sync-role
|
||||
namespace: certificates-ops
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get", "list"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: secret-sync-rolebinding
|
||||
namespace: certificates-ops
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: secret-sync-role
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: secret-sync-sa
|
||||
namespace: certificates-ops
|
||||
|
||||
16
helm/.tls-secrets-sync/ops/templates/secret-homarr-dev.yaml
Normal file
16
helm/.tls-secrets-sync/ops/templates/secret-homarr-dev.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: homarr-dev-tls
|
||||
namespace: homarr-dev
|
||||
labels:
|
||||
app: homarr
|
||||
environment: dev
|
||||
managed-by: argocd
|
||||
source-cluster: ops
|
||||
source-namespace: certificates-ops
|
||||
type: kubernetes.io/tls
|
||||
# Les données seront copiées depuis le secret dans OPS
|
||||
# Ce template sert de référence - le secret réel sera synchronisé via un Job ou script
|
||||
data: {}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: sync-tls-secret-homarr-dev
|
||||
namespace: certificates-ops
|
||||
annotations:
|
||||
argocd.argoproj.io/hook: Sync
|
||||
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
serviceAccountName: secret-sync-sa
|
||||
containers:
|
||||
- name: kubectl
|
||||
image: bitnami/kubectl:latest
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
echo "=== Synchronisation du secret TLS homarr-dev-tls ==="
|
||||
echo "Source: cluster-ops, namespace: certificates-ops"
|
||||
echo "Destination: cluster-dev, namespace: homarr-dev"
|
||||
|
||||
# Récupérer le secret depuis OPS (cluster actuel)
|
||||
echo "1. Récupération du secret depuis OPS..."
|
||||
kubectl get secret homarr-dev-tls -n certificates-ops -o yaml > /tmp/secret-source.yaml
|
||||
|
||||
if [ ! -s /tmp/secret-source.yaml ]; then
|
||||
echo "❌ Erreur: Le secret homarr-dev-tls n'existe pas dans certificates-ops sur OPS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Modifier les métadonnées pour la destination
|
||||
echo "2. Préparation du secret pour DEV..."
|
||||
cat /tmp/secret-source.yaml | \
|
||||
sed '/^ uid:/d' | \
|
||||
sed '/^ resourceVersion:/d' | \
|
||||
sed '/^ selfLink:/d' | \
|
||||
sed '/^ creationTimestamp:/d' | \
|
||||
sed 's/namespace: certificates-ops/namespace: homarr-dev/' > /tmp/secret-dest.yaml
|
||||
|
||||
# Appliquer le secret sur DEV
|
||||
# Note: Cela nécessite que kubectl soit configuré avec les contextes des clusters
|
||||
echo "3. Application du secret sur DEV..."
|
||||
|
||||
# Vérifier si le contexte cluster-dev existe
|
||||
if kubectl config get-contexts cluster-dev &>/dev/null; then
|
||||
# Créer le namespace s'il n'existe pas
|
||||
kubectl create namespace homarr-dev --context=cluster-dev --dry-run=client -o yaml | kubectl apply --context=cluster-dev -f - || true
|
||||
|
||||
# Appliquer le secret
|
||||
kubectl apply -f /tmp/secret-dest.yaml --context=cluster-dev
|
||||
|
||||
echo "✅ Secret synchronisé vers cluster-dev"
|
||||
else
|
||||
echo "⚠️ Le contexte cluster-dev n'est pas configuré dans kubectl"
|
||||
echo " Pour synchroniser manuellement, exécutez :"
|
||||
echo " kubectl apply -f /tmp/secret-dest.yaml --context=cluster-dev"
|
||||
echo ""
|
||||
echo " Ou utilisez le script :"
|
||||
echo " ./scripts/sync-tls-secret.sh homarr-dev-tls cluster-ops certificates-ops cluster-dev homarr-dev"
|
||||
fi
|
||||
restartPolicy: Never
|
||||
backoffLimit: 3
|
||||
|
||||
8
helm/.tls-secrets-sync/ops/values.yaml
Normal file
8
helm/.tls-secrets-sync/ops/values.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
# Valeurs par défaut - seront surchargées par l'ApplicationSet
|
||||
app: homarr
|
||||
env: dev
|
||||
secretName: homarr-dev-tls
|
||||
sourceNamespace: certificates-ops
|
||||
sourceCluster: cluster-ops
|
||||
targetNamespace: homarr-dev
|
||||
targetCluster: cluster-dev
|
||||
Reference in New Issue
Block a user