更新时间:2025-12-23 GMT+08:00
分享

配置镜像免密下载

在容器化应用部署过程中,通常需要配置imagePullSecrets来确保容器镜像能够从私有仓库中被正确拉取。然而,这一过程不仅操作繁琐,还存在安全风险,因为长期有效的凭据容易泄露,而临时凭据则需要定期更新。为了解决这一问题,CCE引入了免密下载容器镜像的功能。通过节点委托的方式,您在创建CCE工作负载时,无需显式指定imagePullSecrets,即可利用节点的权限自动下载镜像,简化了操作流程,同时提高了安全性。您只需确保节点委托配置正确,即可实现镜像的无缝拉取,无需担心凭据管理和安全问题。

约束与限制

  • 镜像免密下载功能仅支持v1.28.15-r70、v1.29.15-r30、v1.30.14-r30、v1.31.10-r30、v1.32.6-r30、v1.33.5-r20、v1.34.1-r0及以上版本的集群。
  • 镜像免密下载功能仅支持在节点池上使用,且启用该功能需要为节点池配置委托并授予相应权限。
  • 节点池如果已开启镜像免密下载,其中的节点迁移到DefaultPool后不支持镜像免密下载。
  • 使用过程中请勿删除委托,以及确保委托未过期,否则镜像免密下载将不可用。

创建委托并授权

  1. 登录统一身份认证服务控制台,选择左侧导航栏中的“委托”
  2. 单击右上角“创建委托”,委托类型选择“云服务”,将其授权给“弹性云服务器 ECS 裸金属服务器 BMS”,详情请参见创建委托并授权

    建议您创建永久的委托,否则委托过期之后会影响CCE的业务部署。

  3. 单击“完成”创建委托,然后继续为创建的委托授予SWR相关权限。

    • 如果您只需要使用基础版SWR镜像免密下载,需授予以下权限:
      • swr:repo:download:授予共享版仓库下载镜像的权限
      • swr:system:createLoginSecret:授予共享版仓库生成临时登录指令的权限

      JSON示例如下:

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "swr:repo:download",
                      "swr:system:createLoginSecret"
                  ]
              }
          ]
      }
    • 如果您需要使用企业版SWR镜像免密下载,需授予以下权限:
      • swr:repository:downloadArtifact:授予企业版仓库下载镜像的权限
      • swr:instance:createTempCredential:授予企业版仓库创建临时访问凭证的权限
      • swr:instance:list:授予查询企业版实例列表信息的权限

      JSON示例如下:

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "swr:repository:downloadArtifact",
                      "swr:instance:createTempCredential",
                      "swr:instance:list"
                  ]
              }
          ]
      }

配置启用镜像免密下载

  1. 登录CCE控制台
  2. 单击集群名称进入集群,在左侧选择“节点池”
  3. 创建一个节点池,并在“高级配置 > 委托”配置中选择刚才创建的委托,然后继续完成节点池创建。

    如果之前已经在集群里创建了节点池,则可以更新节点池,在“高级配置 > 委托”配置中选择刚才创建的委托。
    • 如果节点池下已存在节点,由于更新节点池委托对已有节点不生效,需要跳转到节点对应的ECS界面手动为节点关联委托。
    • 如果节点池之前已经配置了委托,只需在原有委托里授权SWR相关权限,无需新建委托。

  4. 单击节点池名称后的“更多 > 配置管理”,在“kubelet组件配置”中开启镜像免密下载(enable-swr-credential-provider),单击“确定”

    此操作将触发kubelet进程的重启。为确保平稳过渡,建议在业务低峰期执行此操作,此时节点池内的所有节点配置将逐步生效。

验证免密拉取

在已配置免密拉取的节点池中创建工作负载时,无需配置imagePullSecrets即可成功拉取SWR私有镜像。

工作负载配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    appgroup: ''
    version: v1
  name: deployment1
  namespace: default
spec:
  selector:
    matchLabels:
      app: deployment1
      version: v1
  template:
    metadata:
      labels:
        app: deployment1
        version: v1
    spec:
      containers:
        - name: container-1
          image: "{image_name}"  # SWR私有镜像地址
          imagePullPolicy: Always
      terminationGracePeriodSeconds: 30
      affinity:  # 将工作负载亲和调度至已配置镜像免密拉取的节点池
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: cce.cloud.com/cce-nodepool
                    operator: In
                    values:
                      - "{nodepool_name}"  # 已配置镜像免密拉取的节点池名称
  replicas: 1
  revisionHistoryLimit: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  progressDeadlineSeconds: 600

以上示例中未配置镜像访问凭证imagePullSecrets,创建该工作负载,工作负载被调度到指定的节点池中,且SWR的私有镜像可以正常拉取,说明该节点池的镜像免密配置成功。

相关文档