Ministères
sociaux

Atlas
Plateforme d'hébergement des ministères sociaux
Utiliser External Secret Operator pour gérer les secrets
Ce guide pratique vous montre comment utiliser External Secret Operator (ESO) pour récupérer des secrets stockés dans Vault et les utiliser dans vos déploiements Kubernetes sur la plateforme Atlas.
Prérequis
- Avoir un compte sur la plateforme Atlas
- Être administrateur de workspace ou avoir les droits nécessaires
- Avoir un DeploymentTarget déjà créé
- Avoir des secrets stockés dans Vault
Qu'est-ce qu'External Secret Operator ?
External Secret Operator (ESO) est un contrôleur Kubernetes qui permet de récupérer des secrets depuis des sources externes (comme Vault) et de les synchroniser avec des secrets Kubernetes. Dans la plateforme Atlas, ESO est déjà configuré et prêt à être utilisé dans chaque DeploymentTarget.
Note : Sous le capot, les secrets des ressources comme les buckets et les DatabaseClusters sont automatiquement livrés aux DeploymentTargets spécifiés via External Secret Operator. Ce guide vous montre comment utiliser ESO pour récupérer vos propres secrets personnalisés.
Création d'un ExternalSecret
Pour récupérer un secret depuis Vault et le synchroniser avec un secret
Kubernetes, vous devez créer une ressource ExternalSecret
. Voici un exemple
simple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Cet exemple créera ou mettra à jour un secret Kubernetes nommé
mon-secret-kubernetes
avec une clé ma-cle-secrete
dont la valeur sera
récupérée depuis Vault à l'emplacement secret/mon-chemin-vault
et la propriété
ma-valeur
.
Exemple plus avancé avec des templates
External Secret Operator permet également d'utiliser des templates pour transformer les données récupérées avant de les stocker dans le secret Kubernetes. Voici un exemple plus avancé qui crée des identifiants de registre Docker (regcreds) à partir de données stockées dans Vault :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
Dans cet exemple :
- Les données sont récupérées depuis Vault à l'emplacement
harbor/atlas-regcreds
- Ces données doivent contenir les clés
host
,username
etpassword
- Le template transforme ces données en un fichier de configuration Docker au format JSON
- Le secret Kubernetes créé est de type
kubernetes.io/dockerconfigjson
, qui est utilisé pour l'authentification auprès des registres Docker
Utilisation des secrets dans vos déploiements
Une fois que vous avez créé un ExternalSecret et que le secret Kubernetes correspondant a été créé, vous pouvez l'utiliser dans vos déploiements Kubernetes comme n'importe quel autre secret.
Exemple d'utilisation comme variables d'environnement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Exemple d'utilisation comme volume
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Exemple d'utilisation comme identifiants de registre Docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Vérification de l'état des ExternalSecrets
Vous pouvez vérifier l'état de vos ExternalSecrets en utilisant la commande
kubectl
:
1 |
|
Pour voir les détails d'un ExternalSecret spécifique :
1 |
|
Bonnes pratiques
Sécurité
- Limitez l'accès aux secrets aux personnes qui en ont besoin, en suivant le principe du moindre privilège.
- Utilisez des templates pour transformer les données sensibles si nécessaire.
- Évitez de stocker des secrets dans vos fichiers de configuration versionnés.
Organisation
- Utilisez des noms significatifs pour vos ExternalSecrets et vos secrets Kubernetes.
- Regroupez les secrets liés à une même application ou à un même service.
- Documentez vos ExternalSecrets pour faciliter leur utilisation par les autres membres de l'équipe.
Performance
- Utilisez un intervalle de rafraîchissement approprié pour vos ExternalSecrets. Un intervalle trop court peut surcharger Vault, tandis qu'un intervalle trop long peut retarder la propagation des changements.
- Regroupez plusieurs secrets dans un seul ExternalSecret si possible pour réduire le nombre de requêtes à Vault.
Résolution des problèmes courants
L'ExternalSecret ne crée pas de secret Kubernetes
- Vérifiez que l'ExternalSecret est correctement configuré.
- Vérifiez que le SecretStore ou ClusterSecretStore référencé existe et est correctement configuré.
- Vérifiez que vous avez les droits nécessaires pour accéder au secret dans Vault.
- Vérifiez les logs du pod External Secret Operator pour plus d'informations.
Le secret Kubernetes est créé mais ne contient pas les données attendues
- Vérifiez que le chemin et la propriété spécifiés dans
remoteRef
sont corrects. - Vérifiez que le template est correctement configuré si vous en utilisez un.
- Vérifiez que les données existent dans Vault à l'emplacement spécifié.
Le déploiement ne peut pas accéder au secret
- Vérifiez que le secret Kubernetes a été créé avec succès.
- Vérifiez que le nom du secret et la clé référencés dans le déploiement sont corrects.
- Vérifiez que le déploiement a les droits nécessaires pour accéder au secret.