通过 YAML 安装

目录

何时使用此方法?

推荐用于

  • 具备 Kubernetes 专业知识,偏好手动操作的高级用户
  • 需要企业级存储(NAS、AWS S3、Ceph 等)的生产级部署
  • 需要对 TLS、ingress 进行细粒度控制的环境。
  • 需要完全自定义 YAML 以实现高级配置。

前提条件

  • 安装 Alauda Container Platform Registry 集群插件到目标集群。
  • 配置好 kubectl,能够访问目标 Kubernetes 集群
  • 具有创建集群范围资源的集群管理员权限
  • 获取已注册的域名(例如 registry.yourcompany.com)创建域名
  • 提供有效的 NAS 存储(例如 NFS、GlusterFS 等)。
  • (可选)提供有效的 S3 存储(例如 AWS S3、Ceph 等)。如果没有现成的 S3 存储,可在集群内部署 MinIO(内置 S3)实例 部署 MinIO

通过 YAML 安装 Alauda Container Platform Registry

操作步骤

  1. 创建一个名为 registry-plugin.yaml 的 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>   # [必填] 自定义域名
              tlsCert: <NAMESPACE>/<TLS-SECRET>  # [必填] 命名空间/Secret 名称
          ingressClassName: "<INGRESS-CLASS-NAME>"  # [必填] IngressClassName
          insecure: false
        persistence:
          accessMode: ReadWriteMany
          nodes: ""
          path: <YOUR-HOSTPATH>  # [必填] LocalVolume 本地路径
          size: <STORAGE-SIZE>  # [必填] 存储大小(例如 10Gi)
          storageClass: <STORAGE-CLASS-NAME>  # [必填] StorageClass 名称
          type: StorageClass
        s3storage:
          bucket: <S3-BUCKET-NAME>             # [必填] S3 桶名称
          enabled: false                        # 本地存储设置为 false
          env:
            REGISTRY_STORAGE_S3_SKIPVERIFY: false  # 自签名证书设置为 true
          region: <S3-REGION>                        # S3 区域
          regionEndpoint: <S3-ENDPOINT>  # S3 端点
          secretName: <S3-CREDENTIALS-SECRET>             # S3 凭据 Secret
        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 的 Secret
          env:
            REGISTRY_STORAGE_S3_SKIPVERIFY: "true"  # 自签名证书设置为 "true"
  3. 如何创建 S3 凭据的 Secret

    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 凭据 Secret 名称。

  4. 将配置应用到集群:

    kubectl apply -f registry-plugin.yaml

配置参考

必填字段

参数说明示例值
spec.config.ingress.hosts[0].name用于访问 registry 的自定义域名registry.yourcompany.com
spec.config.ingress.hosts[0].tlsCertTLS 证书 Secret 引用(命名空间/Secret 名称)cpaas-system/registry-tls
spec.config.ingress.ingressClassNameregistry 的 Ingress 类名cluster-alb-1
spec.config.persistence.sizeregistry 的存储大小10Gi
spec.config.persistence.storageClassregistry 使用的 StorageClass 名称nfs-storage-sc
spec.config.s3storage.bucket镜像存储的 S3 桶名称prod-image-store
spec.config.s3storage.regionS3 存储的 AWS 区域us-west-1
spec.config.s3storage.regionEndpointS3 服务端点 URLhttps://s3.amazonaws.com
spec.config.s3storage.secretName包含 S3 凭据的 Secrets3-access-keys

验证

  1. 查看插件状态:

    kubectl get clusterplugininstances internal-docker-registry -o yaml
  2. 验证 registry Pod:

    kubectl get pods -n cpaas-system -l app=internal-docker-registry

更新/卸载 Alauda Container Platform Registry

更新

在 global 集群执行以下命令:

# <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)

卸载

在 global 集群执行以下命令:

# <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