文档首页/ 容器镜像服务 SWR/ 最佳实践(基础版)/ CCE免密拉取SWR基础版镜像
更新时间:2025-11-03 GMT+08:00
分享

CCE免密拉取SWR基础版镜像

CCE集群每次拉取SWR基础版里的镜像时都需要提供用户名和密码进行认证。CCE集群会将这些凭证存储在Secret中,但当前在部署工作负载时,仍需为每个工作负载手动配置imagePullSecrets才能完成镜像拉取。

为简化部署流程,降低手动操作的复杂度,现提供一种无需配置imagePullSecrets的解决方案,可实现镜像拉取的自动化和便捷化。

该实践仅适用于CCE免密拉取SWR基础版镜像,不适用于CCE免密拉取SWR企业版镜像。

操作步骤

  1. 使用kubectl连接集群,执行以下命令为命名空间test-namespace创建名称为wr-service-account的服务账户。

    kubectl create serviceaccount swr-service-account -n test-namespace 
    • 服务账号即ServiceAccount,下文提到的ServiceAccount即服务账号。
    • 如果您已有ServiceAccount或者您要使用默认的ServiceAccount时可跳过本步骤。

  2. 执行以下命令,把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。

  3. 使用以下 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

  4. 验证配置是否生效。

    步骤3创建工作负载时可以正常拉取镜像,并完成工作负载的部署。等待一段时间后,工作负载状态可变为“运行中”。

相关文档