Change namespace certificates
This commit is contained in:
62
docs/TLS-SECRETS-SYNC.md
Normal file
62
docs/TLS-SECRETS-SYNC.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Synchronisation des Secrets TLS Multi-Cluster
|
||||
|
||||
## Architecture
|
||||
|
||||
Les certificats Let's Encrypt sont générés dans le cluster OPS (qui a cert-manager et accès Internet). Les secrets TLS doivent ensuite être synchronisés vers les clusters DEV, RCT et PRD où les applications sont déployées.
|
||||
|
||||
## Solution actuelle
|
||||
|
||||
La solution actuelle utilise des Jobs Kubernetes pour copier les secrets, mais nécessite une configuration manuelle des contextes kubectl.
|
||||
|
||||
## Solution recommandée : Utiliser ArgoCD avec des Applications
|
||||
|
||||
### Option 1 : Synchronisation manuelle via script
|
||||
|
||||
Créez un script qui copie les secrets depuis OPS vers les autres clusters :
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# sync-tls-secrets.sh
|
||||
|
||||
SECRET_NAME="homarr-dev-tls"
|
||||
SOURCE_CLUSTER="cluster-ops"
|
||||
SOURCE_NS="certificates-ops"
|
||||
TARGET_CLUSTER="cluster-dev"
|
||||
TARGET_NS="homarr-dev"
|
||||
|
||||
# Récupérer le secret depuis OPS
|
||||
kubectl get secret $SECRET_NAME -n $SOURCE_NS --context=$SOURCE_CLUSTER -o yaml > /tmp/secret.yaml
|
||||
|
||||
# Modifier les métadonnées
|
||||
sed -i '/^ uid:/d' /tmp/secret.yaml
|
||||
sed -i '/^ resourceVersion:/d' /tmp/secret.yaml
|
||||
sed -i '/^ selfLink:/d' /tmp/secret.yaml
|
||||
sed -i '/^ creationTimestamp:/d' /tmp/secret.yaml
|
||||
sed -i "s/namespace: $SOURCE_NS/namespace: $TARGET_NS/" /tmp/secret.yaml
|
||||
|
||||
# Appliquer sur le cluster cible
|
||||
kubectl apply -f /tmp/secret.yaml --context=$TARGET_CLUSTER
|
||||
|
||||
echo "Secret $SECRET_NAME synchronisé de $SOURCE_CLUSTER vers $TARGET_CLUSTER"
|
||||
```
|
||||
|
||||
### Option 2 : Utiliser External Secrets Operator (Recommandé)
|
||||
|
||||
External Secrets Operator peut synchroniser les secrets depuis un backend (comme Kubernetes secrets dans OPS) vers les autres clusters.
|
||||
|
||||
### Option 3 : Utiliser un CronJob pour synchronisation automatique
|
||||
|
||||
Créez un CronJob qui synchronise automatiquement les secrets toutes les heures ou à chaque changement.
|
||||
|
||||
## Configuration actuelle
|
||||
|
||||
- **Source** : Namespace `certificates-ops` sur cluster OPS
|
||||
- **Destination** : Namespaces des applications sur clusters DEV/RCT/PRD
|
||||
- **Mécanisme** : Jobs Kubernetes (nécessite configuration manuelle)
|
||||
|
||||
## Prochaines étapes
|
||||
|
||||
1. Configurer les contextes kubectl pour accéder aux différents clusters
|
||||
2. Tester la synchronisation manuelle
|
||||
3. Automatiser via CronJob ou External Secrets Operator
|
||||
|
||||
Reference in New Issue
Block a user