Установка через 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

Процедура

  1. Создайте 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
  2. Настройте следующие поля в соответствии с вашей средой:

    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" для самоподписанных сертификатов
  3. Как создать секрет для учетных данных 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.

  4. Примените конфигурацию в вашем кластере:

    kubectl apply -f registry-plugin.yaml

Справочник по конфигурации

Обязательные поля

ПараметрОписаниеПример значения
spec.config.global.oidc.ldapIDLDAP ID для аутентификации OIDCldap-test
spec.config.ingress.hosts[0].nameПользовательский домен для доступа к registryregistry.yourcompany.com
spec.config.ingress.hosts[0].tlsCertСсылка на секрет TLS сертификата (namespace/secret-name)cpaas-system/registry-tls
spec.config.ingress.ingressClassNameИмя класса ingress для registrycluster-alb-1
spec.config.persistence.sizeРазмер хранилища для registry10Gi
spec.config.persistence.storageClassИмя StorageClass для registrynfs-storage-sc
spec.config.s3storage.bucketИмя S3 bucket для хранения образовprod-image-store
spec.config.s3storage.regionРегион AWS для S3 хранилищаus-west-1
spec.config.s3storage.regionEndpointURL конечной точки сервиса S3https://s3.amazonaws.com
spec.config.s3storage.secretNameСекрет с учетными данными S3s3-access-keys

Проверка

  1. Проверьте плагин:
    kubectl get clusterplugininstances internal-docker-registry -o yaml
  2. Проверьте поды 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