Управление Secrets с помощью Kustomize

Создание Secret с использованием файла kustomization.yaml.

kubectl поддерживает использование инструмента управления объектами Kustomize для управления Secrets и ConfigMaps. С помощью Kustomize создаётся генератор ресурсов, который формирует Secret, применяемый к API-серверу командой kubectl.

Подготовка к работе

Вам нужен Kubernetes кластер и инструмент командной строки kubectl должен быть настроен на связь с вашим кластером. Если у вас ещё нет кластера, вы можете создать, его используя Minikube, или вы можете использовать одну из песочниц Kubernetes:

Создание 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 был создан, и декодировать его данные:

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 в ваших Pod'ах.

Очистка

Чтобы удалить Secret, используйте kubectl:

kubectl delete secret db-user-pass

Что дальше


Изменено April 15, 2026 at 9:56 AM PST: [ru] Localization of tasks/configmap-secret (13aef114d2)