Управление образами

С помощью Alauda Container Platform вы можете взаимодействовать с образами в зависимости от того, где расположены реестры образов, какие требования к аутентификации существуют для этих реестров и как вы хотите, чтобы ваши сборки и развертывания работали.

Политика загрузки образа

Каждый контейнер в pod использует образ контейнера. После того как вы создали образ и загрузили его в реестр, вы можете ссылаться на него в pod.

Содержание

Обзор политики загрузки образа

Когда Alauda Container Platform создает контейнеры, она использует параметр imagePullPolicy контейнера, чтобы определить, нужно ли загружать образ перед запуском контейнера. Существует три возможных значения для imagePullPolicy:

Таблица значений imagePullPolicy:

ЗначениеОписание
AlwaysВсегда загружать образ.
IfNotPresentЗагружать образ только если он отсутствует на узле.
NeverНикогда не загружать образ.

Если параметр imagePullPolicy контейнера не указан, Alauda Container Platform устанавливает его в зависимости от тега образа:

  1. Если тег latest, по умолчанию устанавливается Always.
  2. В противном случае по умолчанию устанавливается IfNotPresent.

Использование секретов для загрузки образов

Если вы используете реестр образов Alauda Container Platform, то учетная запись сервиса вашего pod уже должна иметь необходимые разрешения, и дополнительных действий не требуется.

Однако в других сценариях, например, при обращении к образам из других проектов Alauda Container Platform или из защищенных реестров, необходима дополнительная настройка.

Разрешение pod ссылаться на образы из других защищенных реестров

Чтобы загрузить защищенный контейнер из других приватных или защищенных реестров, необходимо создать pull secret на основе учетных данных вашего контейнерного клиента, например Docker, и добавить его в вашу учетную запись сервиса.

Docker использует конфигурационный файл для хранения данных аутентификации для входа в защищенный или незащищенный реестр:

По умолчанию Docker использует файл $HOME/.docker/config.json.

Эти файлы хранят информацию для аутентификации, если вы ранее входили в защищенный или незащищенный реестр.

Создание pull secret

Вы можете получить секрет для загрузки образа из приватного реестра контейнерных образов или репозитория. Подробнее см. Pull an Image from a Private Registry.

Использование pull secret в рабочей нагрузке

Вы можете использовать pull secret, чтобы разрешить рабочим нагрузкам загружать образы из приватного реестра одним из следующих способов:

  • Связав секрет с ServiceAccount, что автоматически применит секрет ко всем pod, использующим эту учетную запись сервиса.
  • Определив imagePullSecrets в спецификации pod, что удобно для таких сред, как GitOps или ArgoCD.

Вы можете использовать секрет для загрузки образов pod, добавив секрет в вашу учетную запись сервиса. Обратите внимание, что имя учетной записи сервиса должно совпадать с именем учетной записи, которую использует pod.

Пример вывода:

apiVersion: v1
imagePullSecrets:
- name: default-dockercfg-123456
- name: <pull_secret_name>
kind: ServiceAccount
metadata:
  name: default
  namespace: default
secrets:
- name: <pull_secret_name>

Вместо связывания секрета с учетной записью сервиса, вы можете ссылаться на него напрямую в определении pod или рабочей нагрузки. Это удобно для GitOps-процессов, таких как ArgoCD. Например:

Пример спецификации pod:

apiVersion: v1
kind: Pod
metadata:
  name: <secure_pod_name>
spec:
  containers:
  - name: <container_name>
    image: your.registry.io/my-private-image
  imagePullSecrets:
  - name: <pull_secret_name>

Пример workflow ArgoCD:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: <example_workflow>
spec:
  entrypoint: <main_task>
  imagePullSecrets:
  - name: <pull_secret_name>