Приватный registry

В текущей реализации доступно два варианта настройки аутентификации в приватном registry: с помощью изменения конфига ContainerD (для cluster_admin) и при помощи ImagePullSecrets (для namespace_admin).

Преимущества и недостатки

Изменение конфигурации ContainerD:

Преимущества:

  1. Этот метод легко реализовать и понять.
  2. Возможность управлять registry в упрощенной форме.
  3. Удобен при большом количестве проектов с использованием приватного registry.

Недостатки:

  1. Если есть необходимость обновления или модификации registry, вам придется повторно редактировать и перезапускать ContainerD.
  2. Данный метод может не обеспечить достаточного уровня безопасности, поскольку учетные данные пользователя сохраняются в абсолютно открытом виде.

С использованием ImagePullSecrets:

Преимущества:

  1. Большая безопасность по сравнению с прямым редактированием конфигурации ContainerD.
  2. Управление секретами обеспечивает гибкость и контроль.

Недостатки:

  1. Больше шагов для настройки по сравнению с редактированием конфигурации ContainerD.

Рассмотрим подробнее шаги для настройки аутентификации:

Изменение конфигурации ContainerD

На каждом узле кластера необходимо изменить конфиг ContainerD. Его можно отредактировать по пути /etc/containerd/config.toml

В файле конфига найдите строку

[plugins."io.containerd.grpc.v1.cri".registry.configs]

После нее измените в своем конфигурационном файле следующее содержимое, укажите информацию о своем registry:

[plugins."io.containerd.grpc.v1.cri".registry.configs."myprivateregisrty.domain.ltd".auth]
username = "myLogin"
password = "myPassword"

Сохраните и закройте файл.

Перезапустите службу ContainerD systemctl restart containerd.

Использование ImagePullSecrets

Второй способ настройки аутентификации в приватном registry включает использование ImagePullSecrets:

Создайте файл в формате json с данными для аутентификации в registry. Пример данных:

{
"auths": {
"my-registry.example:5000":
{ "username": "tiger", "password": "pass1234", "email": "tiger@acme.example", "auth": "dGlnZXI6cGFzczEyMzQ=" }

}
}

Перейдите в неймспейс, в нагрузках которого необходимо использовать приватный registry. В разделе Хранилище/Secrets создайте Secret с типом dockerconfigjson.

В блоке Ключи нажмите на +. В открывшемся боковом окне загрузите созданный в формате json с данными для аутентификации в registry.

При создании нагрузки в поле Секреты образов (ImagePullSecrets) выберите секрет с данными для аутентификации.

Также можно создать секреты с помощью команды в cli:

kubectl create secret docker-registry Название \
--docker-email=Example@docker.email \
--docker-username=Username \
--docker-password=Pass1234 \
--docker-server=my-registry.example:5000
-n Имя_неймспейса

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

Обратите внимание, созданный секрет может быть использован только в этом неймспейсе. При необходимости аутентификации к этому registry в другом неймспейсе, создайте новый секрет.