Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
Для использования образов из пользовательского хранилища внутри кластера DKP, в котором оно располагается, воспользуйтесь способами описанными ниже.
Предварительные условия
Для доступа к хранилищу образов используется Ingress, публикующий сервис по адресу payload-registry.${PUBLIC_DOMAIN}. Сертификат для HTTPS выпускается автоматически, в соответствии с настройками управления сертификатами.
В случае использования собственного удостоверяющего центра (CA) или иного CA, который не может быть проверен узлами кластера, необходимо добавить соответствующую конфигурацию для дополнительного хранилища образов. В противном случае узлы кластера не смогут загрузить образы из-за ошибки проверки сертификата.
Использование образов при аутентификации с помощью токенов Kubernetes
Подробнее об этом способе аутентификации — в разделе «Аутентификация с использованием токенов Kubernetes»
Для использования токенов Kubernetes в роли imagePullSecrets:
-
Создайте ServiceAccount и выдайте ему права с использованием PayloadRepositoryAccess (подробнее — в разделе «RBAC и PayloadRepositoryAccess»):
d8 k create serviceaccount my-pull-sa -
Создайте секрет, который будет использоваться как
imagePullSecrets:apiVersion: v1 kind: Secret metadata: name: my-pull-secret annotations: payload-registry.deckhouse.io/service-account.name: my-pull-sa type: kubernetes.io/dockerconfigjson data: # Временное значение, которое будет перезаписано актуальными значениями. .dockerconfigjson: eyJhdXRocyI6e319Указанный секрет будет удалён автоматически при удалении соответствующего ServiceAccount.
-
Проверьте что данные в секрете обновились:
d8 k get secret my-pull-secret -o yamlПример вывода:
apiVersion: v1 kind: Secret metadata: name: my-pull-secret annotations: payload-registry.deckhouse.io/expires-at: "2026-03-06T02:14:19Z" payload-registry.deckhouse.io/hash: e3ba7bd9aeae15fdbce8ae1eed05f26732ebd82e4563115d34f335702071929e payload-registry.deckhouse.io/service-account.name: my-pull-sa payload-registry.deckhouse.io/service-account.uid: f847810d-bcdd-42b8-9f95-2c2d8d10bc8c type: kubernetes.io/dockerconfigjson data: # Значение, заполненное актуальными данными. .dockerconfigjson: ...Наличие аннотаций показывает что данные для доступа к хранилищу образов успешно добавлены и будут обновляться.
Данные в секрете действительны в течение 24 часов с момента последнего обновления. Время истечения срока действия указывается в аннотации
payload-registry.deckhouse.io/expires-at. Данные обновляются за некоторое время до истечения срока действия. -
Добавьте
imagePullSecretsк компоненту кластера и укажите образ:apiVersion: v1 kind: Pod metadata: name: ubuntu spec: containers: - name: ubuntu image: payload-registry.${PUBLIC_DOMAIN}/project-1/ubuntu:latest imagePullSecrets: - name: my-pull-secret
Использование образов при статической конфигурации пользователей (устаревший способ)
Данный способ аутентификации устарел (deprecated). Используйте токены Kubernetes вместо него.
Статическая конфигурация может быть удалена в будущих версиях.
Подробнее об этом способе аутентификации — в разделе «Статическая конфигурация пользователей (устаревший способ)».
Для использования статической конфигурации пользователей:
-
Настройте пользователя с правами доступа
READ/FULLк проекту. Пример:apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: payload-registry spec: version: 1 enabled: true settings: users: user-1: # Bcrypt-хеш пароля `password123`. passwordHash: "$2y$10$CeP/hYvBJ05Ih2azafVyIuuMRpf60am4z6USm4jhHfUPsFDBAmn/u" projects: - name: "project-1" subPath: "*" access: READ -
Создайте секрет в неймспейсе проекта
project-1, используя следующую команду:d8 k create secret docker-registry my-img-pull-secret \ --docker-server="https://payload-registry.${PUBLIC_DOMAIN}" \ --docker-username=user-1 \ --docker-password=password123 \ --namespace=project-1 -
Добавьте
imagePullSecretsк компоненту кластера и укажите образ:apiVersion: v1 kind: Pod metadata: name: ubuntu spec: containers: - name: ubuntu image: payload-registry.${PUBLIC_DOMAIN}/project-1/ubuntu:latest imagePullSecrets: - name: my-img-pull-secret