Создание секретов

Для корректного запуска helm-чарта необходимо создать пару секретов разных типов.

Docker конфиг

Секрет типа kubernetes.io/dockerconfigjson используется для загрузки приватных Docker-образов.

  1. Получите учетные данные для реестра (токен с правами на pull).

  2. Создайте секрет в целевом namespace:

    kubectl create secret docker-registry regcred \ --namespace <your-namespace> \ --docker-server=<REGISTRY_URL> \ --docker-username=<USERNAME> \ --docker-password=<PASSWORD_OR_TOKEN> \ --docker-email=<EMAIL>

Чувствительные переменные

Чувствительные значения (*_TOKEN, *_SECRET, *_PASSWORD, *_APIKEY) передаются в контейнеры через Kubernetes Secret.

Для управления этим поведением используются:

Переменная

Значение

Описание

secrets.create

По умолчанию: true

При true Helm-чарт создает Secret автоматически из значений values.yaml.

secrets.name

По умолчанию: <release-name>-app-secrets

Имя Secret, из которого сервисы читают чувствительные переменные. Если secrets.create=false, этот Secret должен быть создан заранее.

TLS-сертификаты

Секреты типа kubernetes.io/tls используются для работы Ingress с TLS. Для каждого хоста, который указан в values.yaml (ingress.host.GES_URL, ingress.host.PORTAL_URL, ingress.host.APP_URL), необходимо создать отдельный TLS-секрет.

  1. Получите TLS-сертификаты (например, от доверенного CA, через cert-manager или вручную). У вас должны быть файлы:

    • Приватный ключ: tls.key.

    • Сертификат: tls.crt.

  2. Создайте секреты в целевом namespace (по одному на каждый хост):

    kubectl create secret tls <GES_SECRET> \ --namespace <your-namespace> \ --cert=path/to/tls.crt \ --key=path/to/tls.key
    kubectl create secret tls <PORTAL_SECRET> \ --namespace <your-namespace> \ --cert=path/to/tls.crt \ --key=path/to/tls.key
    kubectl create secret tls <APP_SECRET> \ --namespace <your-namespace> \ --cert=path/to/tls.crt \ --key=path/to/tls.key

    Где:

    • <GES_SECRET> — имя секрета, которое должно совпадать со значением ingress.tls.GES_SECRET в values.yaml.

    • <PORTAL_SECRET> — имя секрета для ingress.tls.PORTAL_SECRET.

    • <APP_SECRET> — имя секрета для ingress.tls.APP_SECRET.

  3. Убедитесь, что хосты в сертификатах соответствуют значениям, указанным в values.yaml:

    ingress: enabled: true tls: enabled: true GES_SECRET: ges-tls PORTAL_SECRET: portal-tls APP_SECRET: app-tls host: GES_URL: ges.example.com PORTAL_URL: portal.example.com APP_URL: app.example.com

Проверка

После создания секретов проверьте их наличие и тип:

kubectl get secrets -n <your-namespace>

TLS-секреты должны быть типа kubernetes.io/tls, docker-секрет — kubernetes.io/dockerconfigjson.