Керування Secret за допомогою Kustomize
kubectl
підтримує використання інструменту керування обʼєктами Kustomize для керування Secret та ConfigMap. Ви можете створити генератор ресурсів за допомогою Kustomize, який створює Secret, який ви можете застосувати до сервера API за допомогою kubectl
.
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Створення Secret
Ви можете створити Secret, визначивши secretGenerator
у файлі kustomization.yaml
, який посилається на інші наявні файли, файли .env
або літеральні значення. Наприклад, наведені нижче інструкції створюють файл конфігурації kustomization для імені користувача admin
та пароля 1f2d1e2e67df
.
Примітка:
ПолеstringData
для Secret погано працює із застосуванням на стороні сервера.Створення файлу kustomization
secretGenerator:
- name: database-creds
literals:
- username=admin
- password=1f2d1e2e67df
Збережіть дані доступу у файлах. Назви файлів є ключами секрету:
echo -n 'admin' > ./username.txt echo -n '1f2d1e2e67df' > ./password.txt
Прапорець
-n
забезпечує відсутність символу нового рядка в кінці ваших файлів.Створіть файл
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 був створений та розкодувати дані Secret,
kubectl get -k <directory-path> -o jsonpath='{.data}'
Вивід буде подібний до:
{ "password": "MWYyZDFlMmU2N2Rm", "username": "YWRtaW4=" }
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
Вивід буде подібний до:
1f2d1e2e67df
Для отримання додаткової інформації див. Керування Secret за допомогою kubectl та Декларативне керування обʼєктами Kubernetes за допомогою Kustomize.
Редагування Secret
У вашому файлі
kustomization.yaml
змініть дані, наприклад,password
.Застосуйте теку, який містить файл kustomization:
kubectl apply -k <directory-path>
Вивід буде подібний до:
secret/db-user-pass-6f24b56cc8 created
Змінений Secret створюється як новий обʼєкт Secret
, а не оновлюється наявний обʼєкт Secret
. Можливо, вам знадобиться оновити посилання на Secret у ваших контейнерах.
Прибирання
Для видалення Secret використовуйте kubectl
:
kubectl delete secret db-user-pass
Що далі
- Дізнайтеся більше про концепцію Secret
- Дізнайтесь, як керувати Secret за допомогою kubectl
- Дізнайтесь, як керувати Secret за допомогою файлу конфігурації