
# CCE免密拉取SWR基础版镜像
CCE集群每次拉取SWR基础版里的镜像时都需要提供用户名和密码进行认证。CCE集群会将这些凭证存储在Secret中，但当前在部署工作负载时，仍需为每个工作负载手动配置imagePullSecrets才能完成镜像拉取。
为简化部署流程，降低手动操作的复杂度，现提供一种无需配置imagePullSecrets的解决方案，可实现镜像拉取的自动化和便捷化。
#### 操作步骤
1. [使用kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，执行以下命令为命名空间test-namespace创建名称为swr-service-account的服务账户。
   
   ```
   kubectl create serviceaccount swr-service-account -n test-namespace
   ```
   ![](https://support.huaweicloud.com/bestpractice-swr/public_sys-resources/note_3.0-zh-cn.png)
   - 服务账号即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]创建工作负载时可以正常拉取镜像，并完成工作负载的部署。等待一段时间后，工作负载状态可变为"运行中"。
   
   
 
