
# 拉取自建镜像仓库的镜像
在拉取自建镜像仓库中的镜像时，可能会遇到协议不同或者证书认证失败等问题，从而导致镜像拉取失败。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书两种情况下，如何拉取自建镜像仓库中的镜像来创建CCI Pod。
#### 配置说明
表1配置说明 
| annotation                 | 示例值                                                                           | 配置说明                                                                                                                    |
|:---|:---|:---|
| cci.io/http-registries     | "harbor.\*\*\*.com,192.168.XX.XX:5000,100.95.XX.XX,http://harbor.\*\*\*.com"  | 拉取采用HTTP协议的自建镜像仓库中的镜像时，需配置该Annotation，使用逗号分隔多个地址。允许存在http://前缀，端口，相对路径，允许使用vpc ip地址、域名、公网ip地址，不允许填空地址，最多填入10个地址。        |
| cci.io/insecure-registries | "harbor.\*\*\*.com,192.168.XX.XX:5000,100.95.XX.XX,https://harbor.\*\*\*.com" | 拉取使用自签发证书的自建镜像仓库中的镜像时，需配置该Annotation来跳过证书认证，使用逗号分隔多个地址。允许存在https://前缀，端口，相对路径，允许使用vpc ip地址、域名、公网ip地址，不允许填空地址，最多填入10个地址。 |
   
![](https://support.huaweicloud.com/usermanual-cci2/public_sys-resources/note_3.0-zh-cn.png)
- 如果镜像仓库地址包含端口号，则需要在配置中带上端口号。 例如：镜像地址为"192.168.XX.XX:5000/nginx:latest"，则cci.io/http-registries可设置为"192.168.XX.XX:5000"。
  
- 使用HTTP协议存在数据传输不加密、易受中间人攻击和缺乏身份验证等风险，可能会导致数据泄露、业务受损等，推荐使用https协议拉取镜像。
 
#### 配置示例一：自建镜像仓库采用HTTP协议
- 创建2U4G Deployment
  ```
  apiVersion: cci/v2
  kind: Deployment
  metadata:
    labels:
      app: http
    name: http
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: http
    template:
      metadata:
        labels:
          app: http
        annotations:
          resource.cci.io/pod-size-specs: 2.00_4.0
          cci.io/http-registries: 192.168.XX.XX
      spec:
        containers:
          - image: 192.168.XX.XX/harbor/nginx:latest
            name: container-0
        imagePullSecrets:
          - name: harbor-secret-new
  ```
  
- 创建2U4G Pod
  ```
  apiVersion: cci/v2
  kind: Pod
  metadata:
    annotations:
      resource.cci.io/pod-size-specs: 2.00_4.0
      cci.io/http-registries: 192.168.XX.XX
    name: http
  spec:
    containers:
      - image: '192.168.XX.XX/harbor/nginx:latest'
        imagePullPolicy: IfNotPresent
        name: container-1
    imagePullSecrets:
      - name: harbor-secret
  ```
  
 
#### 配置示例二：自建镜像仓库使用自签发证书
- 创建2U4G Deployment
  ```
  apiVersion: cci/v2
  kind: Deployment
  metadata:
    labels:
      app: insecure
    name: insecure
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: insecure
    template:
      metadata:
        labels:
          app: insecure
        annotations:
          resource.cci.io/pod-size-specs: 2.00_4.0
          cci.io/insecure-registries: 192.168.XX.XX
      spec:
        containers:
          - image: 192.168.XX.XX/harbor/nginx:latest
            name: container-0
        imagePullSecrets:
          - name: harbor-secret-new
  ```
  
- 创建2U4G Pod
  ```
  apiVersion: cci/v2
  kind: Pod
  metadata:
    annotations:
      resource.cci.io/pod-size-specs: 2.00_4.0
      cci.io/insecure-registries: 192.168.XX.XX
    name: insecure
  spec:
    containers:
      - image: '192.168.XX.XX/harbor/nginx:latest'
        imagePullPolicy: IfNotPresent
        name: container-1
    imagePullSecrets:
      - name: harbor-secret
  ```
  
 
