Секреты Helm-чарта#
Helm-чарт gs-ctk может создавать Kubernetes Secret’ы при включении параметра addSecrets.
Для новых конфигураций scheduler private key используйте stringData. Поле data сохраняется для обратной совместимости.
Для scheduler-token-secret в stringData.private.key указывается исходное содержимое ключа. При использовании
legacy-поля data.private.key значение должно быть в формате base64, как это принято в Kubernetes Secret.
Пример в values.yaml#
# Включить добавление секретов через values.yaml
addSecrets: true
# Настройка секретов по умолчанию
secrets:
gs-admin-auth:
type: kubernetes.io/basic-auth
stringData:
password: admin
username: admin
db-user-secret:
type: kubernetes.io/basic-auth
stringData:
password: admin
username: admin
scheduler-token-secret:
stringData:
private.key: change_me_scheduler_private_key
secret-haproxy-auth:
type: kubernetes.io/basic-auth
stringData:
username: admin
password: t0p-Secret
grafana-admin:
type: kubernetes.io/basic-auth
stringData:
password: admin
username: admin
rabbitmq-global:
type: kubernetes.io/basic-auth
stringData:
password: globalrabbitmq
username: globalrabbitmq
rabbitmq-admin:
type: kubernetes.io/basic-auth
stringData:
password: admin
username: admin
ctk-restapi-secret:
type: Opaque
stringData:
jwt-secret-key: change_me_in_production_min_32_char
admin-password: admin
viewer-password: viewer
prometheus-admin:
type: kubernetes.io/basic-auth
stringData:
password: admin
username: admin
Применить такой файл можно командой:
helm upgrade gs-ctk ~/nscli/helm_chart -f ./my-values.yaml --set addSecrets=true
Обновление через helm upgrade#
helm upgrade gs-ctk . \
--set addSecrets=true \
--set-string secrets.gs-admin-auth.stringData.password="admin" \
--set-string secrets.db-user-secret.stringData.username="dbuser" \
--set-string secrets.db-user-secret.stringData.password="dbpass" \
--set-json 'secrets.scheduler-token-secret.stringData={"private.key":"token..."}' \
--set-string secrets.ctk-restapi-secret.stringData.jwt-secret-key="replace_me_with_32_or_more_chars" \
--set-string secrets.ctk-restapi-secret.stringData.admin-password="admin" \
--set-string secrets.ctk-restapi-secret.stringData.viewer-password="viewer"
Для scheduler-token-secret рекомендуется --set-json, так как имя ключа private.key содержит точку.
_helpers.tpl#
Для всех секретов, кроме scheduler-token-secret, Helm-чарт работает по прежней схеме и просто вставляет их описание
из values.yaml в итоговый Secret.
Отдельный helper gs-ctk.secretSpec используется только для scheduler-token-secret.
Его задача одна: если одновременно заданы data и stringData с одинаковым ключом private.key, chart сохраняет
значение из data. Это нужно, чтобы старые сценарии с secrets.scheduler-token-secret.data продолжали работать после
появления дефолтного stringData.
Обратная совместимость#
Если в уже существующих сценариях используется data, Helm-чарт продолжит принимать такой формат:
helm upgrade gs-ctk . \
--set addSecrets=true \
--set-json 'secrets.scheduler-token-secret.data={"private.key":"token..."}'
Если для одного и того же ключа заданы и data, и stringData, Helm-чарт сохраняет значение из data, чтобы не ломать
legacy-сценарии.