Gestion des secrets avec Kustomize
kubectl
prend en charge l'utilisation de l'outil de gestion des objets Kustomize pour gérer les Secrets
et ConfigMaps. Vous créez un générateur de ressources avec Kustomize, qui
génère un Secret que vous pouvez appliquer au serveur API à l'aide de kubectl
.
Pré-requis
Vous devez disposer d'un cluster Kubernetes et l'outil de ligne de commande kubectl doit être configuré pour communiquer avec votre cluster. Si vous ne possédez pas déjà de cluster, vous pouvez en créer un en utilisant Minikube, ou vous pouvez utiliser l'un de ces environnements Kubernetes:
Créer un Secret
Vous pouvez générer un Secret en définissant un secretGenerator
dans un
fichier kustomization.yaml
qui référence d'autres fichiers existants, des fichiers .env
, ou
des valeurs littérales. Par exemple, les instructions suivantes créent un fichier Kustomization
pour le nom d'utilisateur admin
et le mot de passe 1f2d1e2e67df
.
stringData
pour un Secret ne fonctionne pas bien avec le traitement des modifications coté serveur (Server Side Apply).
Créer le fichier Kustomization
secretGenerator:
- name: database-creds
literals:
- username=admin
- password=1f2d1e2e67df
-
Stockez les informations d'identification dans des fichiers. Les noms de fichiers sont les clés du secret :
echo -n 'admin' > ./username.txt echo -n '1f2d1e2e67df' > ./password.txt
L'argument
-n
garantit qu'il n'y a pas de saut de ligne supplémentaire à la fin de vos fichiers. -
Créez le fichier
kustomization.yaml
:secretGenerator: - name: database-creds files: - username.txt - password.txt
Vous pouvez également définir le générateur de secret dans le fichier kustomization.yaml
en
fournissant des fichiers .env
. Par exemple, le fichier kustomization.yaml
suivant
récupère les données du fichier .env.secret
:
secretGenerator:
- name: db-user-pass
envs:
- .env.secret
Dans tous les cas, vous n'avez pas besoin d'encoder les valeurs en base64. Le nom du fichier YAML
doit être kustomization.yaml
ou kustomization.yml
.
Appliquer le fichier kustomization
Pour créer le Secret, appliquez le répertoire contenant le fichier kustomization :
kubectl apply -k <directory-path>
Le résutat est similaire à :
secret/database-creds-5hdh7hhgfk created
Lorsqu'un Secret est généré, le nom du Secret est créé en hashant les données du Secret et en ajoutant la valeur de hachage au nom. Cela garantit qu'un nouveau Secret sera généré à chaque fois que les données sont modifiées.
Pour vérifier que le Secret a été créé et décoder les données du Secret,
kubectl get -k <directory-path> -o jsonpath='{.data}'
Le résutat est similaire à :
{ "password": "UyFCXCpkJHpEc2I9", "username": "YWRtaW4=" }
echo 'UyFCXCpkJHpEc2I9' | base64 --decode
Le résultat est similaire à :
S!B\*d$zDsb=
Pour en savor plus, consultez la gestion des secrets avec kubectl et la Gestion déclarative des objets Kubernetes avec Kustomize.
Modifier un Secret
-
Dans votre fichier
kustomization.yaml
, modifiez les données, par exemplepassword
. -
Appliquez le dossier contenant le fichier kustomization :
kubectl apply -k <directory-path>
Le résultat sera similaire à :
secret/db-user-pass-6f24b56cc8 created
Le Secret modifié est créé en tant que nouvel objet Secret
, au lieu de mettre à jour
le Secret
existant. Il sera peut-être nécessaire de
mettre à jour les références au Secret dans vos Pods.
Nettoyage
Pour supprimer un Secret, utilisez kubectl
:
kubectl delete secret db-user-pass
A suivre
- En savoir plus sur le concept de Secret
- Apprendre comment gérer les Secrets avec kubectl
- Apprendre à gérer les Secrets avec un fichier de configuration