> ## Documentation Index
> Fetch the complete documentation index at: https://infra-docs.kaeyros.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Sealed Secrets : chiffrer des Secrets Kubernetes committés dans Git

> Le contrôleur sealed-secrets dans kube-system permet de commiter des Secrets Kubernetes chiffrés dans Git. Fallback quand Vault ou external-secrets n'est pas encore prêt.

Le contrôleur sealed-secrets, déployé dans le namespace `kube-system`, permet de chiffrer des ressources `Secret` Kubernetes avant de les commiter dans le dépôt `argo-production`. Cette approche est réservée aux situations où Vault ou external-secrets n'est pas encore configuré pour une nouvelle application. Cette page explique le cas d'usage et la commande à utiliser.

> [!NOTE]
>
> Le contrôleur écoute dans le namespace `kube-system` et déchiffre automatiquement les ressources `SealedSecret` en `Secret` standard dans le cluster.

## Cas d'usage

> **Nouvelle application**
>
> L'application est en cours d'intégration et son chemin Vault n'est pas encore créé ou le ClusterSecretStore n'est pas prêt.

> **Secret temporaire**
>
> Une ressource sensible est nécessaire immédiatement, avant la mise en place complète de external-secrets et Vault.

> **Ressource legacy**
>
> Une application existante n'a pas encore été migrée vers le flux Vault + external-secrets.

## Commande de scellement

Pour transformer un `Secret` Kubernetes standard en `SealedSecret` chiffré :

```bash Sceller un secret theme={null}
kubeseal --controller-namespace kube-system -f secret.yml -o yaml > sealed.yaml
```

## Procédure complète

**1. Créer le Secret standard**

Rédigez un fichier `secret.yml` de type `Secret` Kubernetes contenant vos données sensibles en base64. Exemple :

```yaml secret.yml theme={null}
apiVersion: v1
kind: Secret
metadata:
  name: booking-api-temp-secrets
  namespace: booking-production
type: Opaque
stringData:
  DATABASE_URL: "postgresql://..."
  API_KEY: "sk-..."
```

**2. Sceller le fichier**

Exécutez la commande `kubeseal` pour produire le fichier `sealed.yaml`. Ce fichier est sûr pour Git car il est chiffré avec la clé publique du cluster.

**3. Commiter dans argo-production**

Ajoutez `sealed.yaml` dans le dépôt `github.com/kaeyros-analytics-org/argo-production` à l'emplacement approprié pour votre application. ArgoCD synchronisera la ressource `SealedSecret`.

**4. Vérifier le déchiffrement**

Le contrôleur sealed-secrets détecte la ressource et crée automatiquement le `Secret` standard dans le namespace cible. Vérifiez avec :

```bash Vérifier le Secret créé theme={null}
kubectl get secret booking-api-temp-secrets -n booking-production
```

> [!NOTE]
>
> Considérez sealed-secrets comme un fallback, pas comme un choix par défaut. Dès que possible, migrez la ressource vers Vault et external-secrets pour centraliser la gestion des secrets applicatifs.

> [!WARNING]
>
> Un `SealedSecret` est lié au cluster (ou plus précisément à la clé publique utilisée lors du scellement). Il ne fonctionnera pas tel quel sur un autre cluster sans être re-scellé avec la clé du cluster cible.

> [!TIP]
>
> Pour re-sceller un secret existant vers un autre cluster, exportez la clé publique du cluster cible avec `kubeseal --controller-namespace kube-system --fetch-cert > pub-cert.pem`, puis utilisez `-cert pub-cert.pem` lors du scellement.

> [!NOTE]
>
> Pour toute question sur sealed-secrets ou sur la migration vers Vault, contactez l'équipe DevOps à l'adresse [devops@kaeyros-analytics.com](mailto:devops@kaeyros-analytics.com).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.