Перейти к содержанию

Registry Proxy

Поддержка registry proxy дает возможность настроить проксирование реестра образов, что позволит настроить работу в air-gapped среде или использовать локальный менеджер репозиториев, с контролем загрузки и кэшированием, для ускорения доступа к реестру, обхода лимитов и повышения отказоустойчивости.

Заметка

Проксирование работает только на получение образов (pull).

Обзор

Проксирование реестра поддерживается для всех типов кластеров и включает в себя формирование правильного файла конфигурации сервиса containerd - этот файл конфигурации генерируется в процессе установки и попадает на узлы кластера через cloudinit.

Для baremetal кластеров проксирование также используется при первоначальной инсталляции хоста, когда будущий узел получает специальный инсталляционный скрипт для загрузки bootstrap образа.

Дополнительно, проксирование учитывается в момент инсталляции кластера через bootsmanctl для проверки существования необходимых образов.

Идея состоит в том, что оригинальные адреса образов не меняются, при этом в конфиге bootsmanctl можно указать адрес хоста прокси.
Адрес хоста прокси указывается по аналогии с полем path и не должен содержать схему. Адрес может опционально содержать порт.

Поле называется proxy и является опциональным. Если поле не указано, установка выполняется по стандартной схеме, используя прямой доступ к реестру, указанному в конфигурации или используемому по умолчанию.

Заметка

Если поле proxy указано, то поля username и password считаются относящимися к прокси.
При этом схема прокси регулируется полем insecure (https:// для insecure=false и http:// для insecure=true).

Дополнительно, параметры прокси, как и остальные параметры реестра образов, прописываются в provisioning cluster, в поле capiConfig/registry/credentialsSecret.

Значение поля proxyKey используется как ключ для получения имени хоста прокси из соответсвующего секрета registrycreds-<cluster_name> - это поле является опциональным и может отсутствовать.

Важно

Смена прокси для уже развернутого кластера в настоящее время не поддерживается.
Для смены адреса прокси или логина/пароля необходимо изменение конфигурации containerd на всех узлах кластера.

Важно

Прокси поддерживает только базовую аутентификацию через пару логина/пароль.
Атентификация может отсутствовать - в конфигурации bootsmanctl или секрете provisioning cluster должны быть указаны соотв. ключи или поля с пустыми значениями, наряду с адресом прокси.

Пример конфигурации

Пример конфигурации bootsmanctl

kubernetesVersion: "v1.33.5"
registry:
  proxy: nexus-dev.bootsman.site:8443
  username: admin
  password: *******************
  path: harbor.bootsman.host/bootsman-nimbus/common-artifacts
  insecure: False
wait:
  clusterCtlTimeout: 40m0s
  operationTimeout: 50m0s
  operationRetryInterval: 15s
  objCreateTimeout: 4m0s
  objCreateInterval: 5s
  addonHelmTimeout: 15m
infrastructure:
  clusterNetwork:
    podCidrBlocks: ["172.20.0.0/16"]
    servicesCidrBlocks: ["172.21.0.0/16"]
  baremetalProxy:
    currentIp: 10.0.xxx.xxx
    currentPort: 6443
controlPlane:
  endpoint:
    host: 10.0.xxx.xxx
    port: 6443
  replicas: 3
  label: master
  kubeletExtraArgs: {}
workerPool:
  replicas: 3
  label: worker
  kubeletExtraArgs: {}
web:
  bootstrapPassword: *******************
  hostname: rancher.bootsman.site