配置镜像免密下载
在容器化应用部署过程中,通常需要配置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后不支持镜像免密下载。
- 使用过程中请勿删除委托,以及确保委托未过期,否则镜像免密下载将不可用。
创建委托并授权
- 登录统一身份认证服务控制台,选择左侧导航栏中的“委托”。
- 单击右上角“创建委托”,委托类型选择“云服务”,将其授权给“弹性云服务器 ECS 裸金属服务器 BMS”,详情请参见创建委托并授权。
建议您创建永久的委托,否则委托过期之后会影响CCE的业务部署。

- 单击“完成”创建委托,然后继续为创建的委托授予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" ] } ] }
- 如果您只需要使用基础版SWR镜像免密下载,需授予以下权限:
配置启用镜像免密下载
- 登录CCE控制台。
- 单击集群名称进入集群,在左侧选择“节点池”。
- 创建一个节点池,并在“高级配置 > 委托”配置中选择刚才创建的委托,然后继续完成节点池创建。
如果之前已经在集群里创建了节点池,则可以更新节点池,在“高级配置 > 委托”配置中选择刚才创建的委托。
- 如果节点池下已存在节点,由于更新节点池委托对已有节点不生效,需要跳转到节点对应的ECS界面手动为节点关联委托。
- 如果节点池之前已经配置了委托,只需在原有委托里授权SWR相关权限,无需新建委托。
- 单击节点池名称后的“更多 > 配置管理”,在“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的私有镜像可以正常拉取,说明该节点池的镜像免密配置成功。