Керування Secrets за допомогою Kustomize

Керування Secrets за допомогою Kustomize

Створення обʼєктів Secret за допомогою файлу kustomization.yaml.

kubectl підтримує використання інструмента керування обʼєктами Kustomize для керування Secrets і ConfigMaps. За допомогою Kustomize ви створюєте генератор ресурсів, який генерує Secret, що його можна застосувати до API-сервера за допомогою kubectl.

Перш ніж ви розпочнете

Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:

Створення Secret

Ви можете згенерувати Secret, визначивши secretGenerator у файлі kustomization.yaml, який посилається на інші наявні файли, файли .env або літеральні значення. Наприклад, наведені нижче інструкції створюють файл kustomization для імені користувача admin і пароля 1f2d1e2e67df.

Примітка:

Поле stringData у Secret погано працює із застосуванням на боці сервера (server-side apply).

Створення файлу kustomization


secretGenerator:
- name: database-creds
  literals:
  - username=admin
  - password=1f2d1e2e67df
  1. Збережіть облікові дані у файлах. Назви файлів є ключами Secret:

    echo -n 'admin' > ./username.txt
    echo -n '1f2d1e2e67df' > ./password.txt
    

    Прапорець -n гарантує, що в кінці ваших файлів немає символу нового рядка.

  2. Створіть файл kustomization.yaml:

    secretGenerator:
    - name: database-creds
      files:
      - username.txt
      - password.txt
    

Ви також можете визначити secretGenerator у файлі kustomization.yaml, надавши файли .env. Наприклад, наведений нижче файл kustomization.yaml отримує дані з файлу .env.secret:

secretGenerator:
- name: db-user-pass
  envs:
  - .env.secret

У всіх випадках значення не потрібно кодувати в base64. Назва файлу YAML має бути kustomization.yaml або kustomization.yml.

Застосування файлу kustomization

Щоб створити Secret, застосуйте теку, яка містить файл kustomization:

kubectl apply -k <directory-path>

Вивід подібний до такого:

secret/database-creds-5hdh7hhgfk created

Під час генерації Secret його назву створюють шляхом хешування даних Secret і додавання значення хешу до назви. Це гарантує, що під час кожної зміни даних генерується новий Secret.

Щоб перевірити, що Secret створено, і розкодувати дані Secret,

kubectl get -k <directory-path> -o jsonpath='{.data}'

Вивід подібний до такого:

{ "password": "MWYyZDFlMmU2N2Rm", "username": "YWRtaW4=" }
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode

Вивід подібний до такого:

1f2d1e2e67df

Докладніше дивіться Керування Secrets за допомогою kubectl і Декларативне керування обʼєктами Kubernetes за допомогою Kustomize.

Редагування Secret

  1. У файлі kustomization.yaml змініть дані, наприклад password.

  2. Застосуйте теку, яка містить файл kustomization:

    kubectl apply -k <directory-path>
    

    Вивід подібний до такого:

    secret/db-user-pass-6f24b56cc8 created
    

Змінений Secret створюється як новий обʼєкт Secret, а не оновлює наявний обʼєкт Secret. Можливо, вам доведеться оновити посилання на Secret у ваших Podʼах.

Очищення

Щоб видалити Secret, використайте kubectl:

kubectl delete secret db-user-pass

Що далі