• Русский
  • Установка через 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: image-registry
        labels:
          create-by: cluster-transformer
          manage-delete-by: cluster-transformer
          manage-update-by: cluster-transformer
        name: image-registry
      spec:
        config:
          access:
            address: ''
            enabled: false
          fake:
            replicas: 2
          infra:
            enabled: false
          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> # Endpoint S3
            secretName: <S3-CREDENTIALS-SECRET> # Секрет с учетными данными S3
          service:
            nodePort: ''
            type: ClusterIP
        pluginName: image-registry
    2. Настройте следующие поля в соответствии с вашей средой:

      spec:
        config:
          global:
            oidc:
              ldapID: '<LDAP-ID>' # LDAP ID
          infra:
            enabled: false  # Если хотите развернуть компоненты на infra-нодах. По умолчанию false — все ноды.
          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 endpoint сервиса S3https://s3.amazonaws.com
    spec.config.s3storage.secretNameСекрет с учетными данными S3s3-access-keys
    spec.config.s3storage.env.REGISTRY_STORAGE_S3_SKIPVERIFYУстановите true для самоподписанных сертификатовtrue
    spec.config.infra.enabledРазвернуть компоненты на infra-нодах или на всех нодахfalse

    Проверка

    1. Проверить плагин:
      kubectl get clusterplugininstances image-registry -o yaml
    2. Проверить поды registry:
      kubectl get pods -n cpaas-system -l app=image-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=image-registry -o name)

    Удаление

    Выполните следующую команду в глобальном кластере:

    # <CLUSTER-NAME> — кластер, где установлен плагин
    kubectl get moduleinfo -n cpaas-system -l cpaas.io/cluster-name=<CLUSTER-NAME>,cpaas.io/module-name=image-registry -o name | xargs kubectl delete -n cpaas-system