# 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

