Освоение ImagePullSecrets в Helm 3: упрощение аутентификации образа контейнера

Контейнеризация произвела революцию в развертывании приложений и управлении ими. Поскольку Kubernetes является ведущей платформой оркестровки контейнеров, Helm стал популярным менеджером пакетов для упрощения развертывания приложений в кластерах Kubernetes. В Helm 3 введение imagePullSecretsобеспечивает беспрепятственную аутентификацию при извлечении образов контейнеров из частных репозиториев. В этом сообщении блога мы рассмотрим различные методы использования imagePullSecretsв Helm 3 и оптимизации процесса аутентификации образа контейнера.

Метод 1. Непосредственное указание имени секрета.
Самый простой способ использовать imagePullSecrets— напрямую указать имя секрета в файле values.yamlвашей диаграммы Helm. или с помощью флага --setво время развертывания. Например:

imagePullSecrets:
  - name: regcred

Метод 2: использование секретной ссылки.
В качестве альтернативы вы можете создать секрет Kubernetes с нужным именем и ссылаться на него в диаграмме Helm. Сначала создайте секрет с помощью команды kubectl:

kubectl create secret docker-registry regcred \
  --docker-server=<registry-server> \
  --docker-username=<username> \
  --docker-password=<password> \
  --docker-email=<email>

Затем в файле values.yamlвашей диаграммы Helm или с помощью флага --setукажите имя секрета:

imagePullSecrets:
  - name: regcred

Метод 3: использование файла значений.
Чтобы избежать жесткого кодирования конфиденциальной информации непосредственно в диаграмме Helm, вы можете использовать отдельный файл значений для хранения секретных конфигураций извлечения изображения. Создайте отдельный файл YAML, например, secrets.yaml, со следующим содержимым:

imagePullSecrets:
  - name: regcred
    data:
      .dockerconfigjson: <base64-encoded-config>

Затем во время развертывания обратитесь к файлу значений:

helm install myapp mychart --values secrets.yaml

Метод 4: использование переменных среды:
В некоторых случаях вам может потребоваться передать секретную информацию извлечения изображения в виде переменных среды, а не указывать их напрямую в диаграмме Helm. Этого можно добиться, установив переменные среды в манифесте развертывания и используя эти переменные в файле values.yaml. Например:

imagePullSecrets:
  - name: regcred
    data:
      .dockerconfigjson: "{{ getenv \"DOCKER_CONFIG_JSON\" }}"

В приведенном выше примере переменная среды DOCKER_CONFIG_JSONсодержит секретную конфигурацию извлечения изображения в кодировке Base64.

Освоив использование imagePullSecretsв Helm 3, вы сможете упростить аутентификацию образа контейнера и обеспечить безопасное развертывание ваших приложений Kubernetes. Независимо от того, предпочитаете ли вы напрямую указывать секретное имя, использовать секретную ссылку, использовать файл значений или использовать переменные среды, Helm 3 предоставляет гибкие возможности для удовлетворения ваших потребностей в аутентификации образа контейнера.