Аутентификация в приватном registry

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

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

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

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

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

Недостатки:

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

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

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

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

Недостатки:

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

Подробнее шаги для настройки аутентификации рассмотрены в пунктах ниже.

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

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

  1. в файле конфигурации нужно найти строку:
[plugins."io.containerd.grpc.v1.cri".registry.configs]
  1. после нее изменить в своем конфигурационном файле следующее содержимое, указав информацию о своем registry, например:
[plugins."io.containerd.grpc.v1.cri".registry.configs."myprivateregisrty.domain.ltd".auth]
username = "myLogin"
password = "myPassword"
  1. сохранить и закрыть файл;
  2. перезапустить службу ContainerD:
systemctl restart containerd

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

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

  1. создать файл в формате JSON с данными для аутентификации в registry, например:
{
"auths": {
"my-registry.example:5000":
{ "username": "tiger", "password": "pass1234", "email": "tiger@acme.example", "auth": "dGlnZXI6cGFzczEyMzQ=" }
}
}
  1. перейти в неймспейс, в нагрузках которого необходимо использовать приватный registry;
  2. в разделе "Хранилище/Secrets" создать Secret с типом dockerconfigjson;
  3. в блоке "Ключи" нажать на +. В открывшемся боковом окне загрузить созданный файл в формате JSON с данными для аутентификации в registry;
  4. при создании нагрузки в поле "Секреты образов (ImagePullSecrets)" выбрать секрет с данными для аутентификации;
  5. также можно создать секреты с помощью команды в CLI:
kubectl create secret docker-registry Название \
--docker-email=Example@docker.email \
--docker-username=Username \
--docker-password=Pass1234 \
--docker-server=my-registry.example:5000
-n Имя_неймспейса
  1. подставить необходимые значения в выделенные заглавными буквами параметры.

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