Секреты 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-сценарии.