Установка через YAML
Содержание
Когда использовать этот метод?
Рекомендуется для:
- Продвинутых пользователей с опытом работы с Kubernetes, предпочитающих ручной подход.
- Промышленных развертываний, требующих корпоративного хранилища (NAS, AWS S3, Ceph и др.).
- Сред, где необходим тонкий контроль над TLS, ingress.
- Полной настройки YAML для сложных конфигураций.
Предварительные требования
- Установить плагин кластера Alauda Container Platform Registry в целевой кластер.
- Иметь доступ к целевому Kubernetes кластеру с настроенным kubectl.
- Права администратора кластера для создания ресурсов с областью действия кластера.
- Получить зарегистрированный домен (например, registry.yourcompany.com) Create a Domain
- Обеспечить действующее NAS-хранилище (например, NFS, GlusterFS и др.).
- (Опционально) Обеспечить действующее S3-хранилище (например, AWS S3, Ceph и др.). Если S3-хранилище отсутствует, разверните MinIO (встроенный S3) в кластере Deploy MinIO.
Установка Alauda Container Platform Registry через YAML
Процедура
-
Создайте YAML-файл конфигурации с именем registry-plugin.yaml по следующему шаблону:
apiVersion: cluster.alauda.io/v1alpha1
kind: ClusterPluginInstance
metadata:
annotations:
cpaas.io/display-name: internal-docker-registry
labels:
create-by: cluster-transformer
manage-delete-by: cluster-transformer
manage-update-by: cluster-transformer
name: internal-docker-registry
spec:
config:
access:
address: ""
enabled: false
fake:
replicas: 2
global:
expose: false
isIPv6: false
replicas: 2
oidc:
ldapID: ""
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
ingress:
enabled: true
hosts:
- name: <YOUR-DOMAIN> # [REQUIRED] Настройте домен
tlsCert: <NAMESPACE>/<TLS-SECRET> # [REQUIRED] Namespace/SecretName
ingressClassName: "<INGRESS-CLASS-NAME>" # [REQUIRED] IngressClassName
insecure: false
persistence:
accessMode: ReadWriteMany
nodes: ""
path: <YOUR-HOSTPATH> # [REQUIRED] Локальный путь для LocalVolume
size: <STORAGE-SIZE> # [REQUIRED] Размер хранилища (например, 10Gi)
storageClass: <STORAGE-CLASS-NAME> # [REQUIRED] Имя StorageClass
type: StorageClass
s3storage:
bucket: <S3-BUCKET-NAME> # [REQUIRED] Имя S3 bucket
enabled: false # Установите false для локального хранилища
env:
REGISTRY_STORAGE_S3_SKIPVERIFY: false # Установите true для самоподписанных сертификатов
region: <S3-REGION> # Регион S3
regionEndpoint: <S3-ENDPOINT> # Конечная точка S3
secretName: <S3-CREDENTIALS-SECRET> # Секрет с учетными данными S3
service:
nodePort: ""
type: ClusterIP
pluginName: internal-docker-registry
-
Настройте следующие поля в соответствии с вашей средой:
spec:
config:
global:
oidc:
ldapID: "<LDAP-ID>" # LDAP ID
ingress:
hosts:
- name: "<YOUR-DOMAIN>" # например, registry.your-company.com
tlsCert: "<NAMESPACE>/<TLS-SECRET>" # например, cpaas-system/tls-secret
ingressClassName: "<INGRESS-CLASS-NAME>" # например, cluster-alb-1
persistence:
size: "<STORAGE-SIZE>" # например, 10Gi
storageClass: "<STORAGE-CLASS-NAME>" # например, cpaas-system-storage
s3storage:
bucket: "<S3-BUCKET-NAME>" # например, prod-registry
region: "<S3-REGION>" # например, us-west-1
regionEndpoint: "<S3-ENDPOINT>" # например, https://s3.amazonaws.com
secretName: "<S3-CREDENTIALS-SECRET>" # Секрет с AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY
env:
REGISTRY_STORAGE_S3_SKIPVERIFY: "true" # Установите "true" для самоподписанных сертификатов
-
Как создать секрет для учетных данных S3:
kubectl create secret generic <S3-CREDENTIALS-SECRET> \
--from-literal=access-key-id=<YOUR-S3-ACCESS-KEY-ID> \
--from-literal=secret-access-key=<YOUR-S3-SECRET-ACCESS-KEY> \
-n cpaas-system
Замените <S3-CREDENTIALS-SECRET>
на имя вашего секрета с учетными данными S3.
-
Примените конфигурацию в вашем кластере:
kubectl apply -f registry-plugin.yaml
Справочник по конфигурации
Обязательные поля
Параметр | Описание | Пример значения |
---|
spec.config.global.oidc.ldapID | LDAP ID для аутентификации OIDC | ldap-test |
spec.config.ingress.hosts[0].name | Пользовательский домен для доступа к registry | registry.yourcompany.com |
spec.config.ingress.hosts[0].tlsCert | Ссылка на секрет TLS сертификата (namespace/secret-name) | cpaas-system/registry-tls |
spec.config.ingress.ingressClassName | Имя класса ingress для registry | cluster-alb-1 |
spec.config.persistence.size | Размер хранилища для registry | 10Gi |
spec.config.persistence.storageClass | Имя StorageClass для registry | nfs-storage-sc |
spec.config.s3storage.bucket | Имя S3 bucket для хранения образов | prod-image-store |
spec.config.s3storage.region | Регион AWS для S3 хранилища | us-west-1 |
spec.config.s3storage.regionEndpoint | URL конечной точки сервиса S3 | https://s3.amazonaws.com |
spec.config.s3storage.secretName | Секрет с учетными данными S3 | s3-access-keys |
Проверка
- Проверьте плагин:
kubectl get clusterplugininstances internal-docker-registry -o yaml
- Проверьте поды registry:
kubectl get pods -n cpaas-system -l app=internal-docker-registry
Обновление/Удаление Alauda Container Platform Registry
Обновление
Выполните следующую команду на глобальном кластере и обновите значения в ресурсе согласно описанию параметров выше для завершения обновления:
# <CLUSTER-NAME> — кластер, где установлен плагин
kubectl edit -n cpaas-system \
$(kubectl get moduleinfo -n cpaas-system -l cpaas.io/cluster-name=<CLUSTER-NAME>,cpaas.io/module-name=internal-docker-registry -o name)
Удаление
Выполните следующую команду на глобальном кластере:
# <CLUSTER-NAME> — кластер, где установлен плагин
kubectl get moduleinfo -n cpaas-system -l cpaas.io/cluster-name=<CLUSTER-NAME>,cpaas.io/module-name=internal-docker-registry -o name | xargs kubectl delete -n cpaas-system