Контейнеризация произвела революцию в развертывании приложений и управлении ими. Поскольку 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 предоставляет гибкие возможности для удовлетворения ваших потребностей в аутентификации образа контейнера.