• Русский
  • Установка через 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
            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-бакета
            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: internal-docker-registry
    2. Настройте следующие поля в соответствии с вашей средой:

      spec:
        config:
          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.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-бакета для хранения образов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

    Проверка

    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