Gestion des secrets avec Kustomize

Créer des Secrets à l'aide du fichier kustomization.yaml.

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.

Créer le fichier Kustomization


secretGenerator:
- name: database-creds
  literals:
  - username=admin
  - password=1f2d1e2e67df

  1. 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.

  2. 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

  1. Dans votre fichier kustomization.yaml, modifiez les données, par exemple password.

  2. 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