CCE免密拉取SWR基础版镜像
CCE集群每次拉取SWR基础版里的镜像时都需要提供用户名和密码进行认证。CCE集群会将这些凭证存储在Secret中,但当前在部署工作负载时,仍需为每个工作负载手动配置imagePullSecrets才能完成镜像拉取。
为简化部署流程,降低手动操作的复杂度,现提供一种无需配置imagePullSecrets的解决方案,可实现镜像拉取的自动化和便捷化。
该实践仅适用于CCE免密拉取SWR基础版镜像,不适用于CCE免密拉取SWR企业版镜像。
操作步骤
- 使用kubectl连接集群,执行以下命令为命名空间test-namespace创建名称为wr-service-account的服务账户。
kubectl create serviceaccount swr-service-account -n test-namespace
- 服务账号即ServiceAccount,下文提到的ServiceAccount即服务账号。
- 如果您已有ServiceAccount或者您要使用默认的ServiceAccount时可跳过本步骤。
- 执行以下命令,把CCE default-secret关联到步骤1创建的ServiceAccount上。
kubectl patch serviceaccount swr-service-account -p '{"imagePullSecrets": [{"name": "default-secret"}]}' -n test-namespace上述命令中,
- test-namespace为CCE的命名空间,指定哪个命名空间下应用部署可以免密拉取镜像。
- swr-service-account是ServiceAccount名称,即步骤1创建的服务账户名称。如果您使用默认的ServiceAccount时,请将上述命令中的swr-service-account替换为default。
- 使用以下 YAML 创建工作负载时,ServiceAccountName参数请配置为步骤1创建的ServiceAccount,如果您使用默认的ServiceAccount,则无需配置ServiceAccountName参数。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: test-namespace # 指定CCE可以免密拉取镜像的namespace labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: serviceAccountName: swr-service-account # 指定CCE default-secret关联的ServiceAccount containers: - name: nginx image: swr.cn-north-4.myhuaweicloud.com/nginx/nginx:latest # 指定SWR镜像地址 ports: - containerPort: 80 - 验证配置是否生效。
步骤3创建工作负载时可以正常拉取镜像,并完成工作负载的部署。等待一段时间后,工作负载状态可变为“运行中”。