镜像仓库

Docker 镜像是一个只读的模板,可用于部署容器服务。每个镜像都有一个唯一标识符(即镜像名称:标签)。例如,一个镜像可以包含只安装有 Apache 和几个应用的完整的 Ubuntu 操作系统软件包。镜像仓库可用于存储和分发 Docker 镜像。

本教程演示如何为不同的镜像仓库创建保密字典。

准备工作

您需要创建一个企业空间、一个项目和一个用户(例如 project-regular)。该用户必须已邀请至该项目,并具有 operator 角色。有关更多信息,请参阅创建企业空间、项目、用户和角色

创建保密字典

创建工作负载、服务任务定时任务时,除了从公共仓库选择镜像,您还可以从私有仓库选择镜像。要使用私有仓库中的镜像,您必须先为私有仓库创建保密字典,以便在 KubeSphere 中集成该私有仓库。

步骤 1:进入保密字典页面

project-regular 用户登录 KubeSphere Web 控制台并进入项目,在左侧导航栏中选择配置下的保密字典,然后点击创建

步骤 2:配置基本信息

设置保密字典的名称(例如 demo-registry-secret),然后点击下一步

提示

您可以在对话框右上角启用编辑 YAML 来查看保密字典的 YAML 清单文件,并通过直接编辑清单文件来创建保密字典。您也可以继续执行后续步骤在控制台上创建保密字典。

步骤 3:配置镜像服务信息

类型设置为 镜像服务信息。要在创建应用负载时使用私有仓库中的镜像,您需要配置以下字段:

  • 仓库地址:镜像仓库的地址,其中包含创建应用负载时需要使用的镜像。
  • 用户名:登录镜像仓库所需的用户名。
  • 密码:登录镜像仓库所需的密码。
  • 邮箱(可选):您的邮箱地址。

添加 Docker Hub 仓库

  1. Docker Hub 上添加镜像仓库之前,您需要注册一个 Docker Hub 帐户。在保密字典设置页面,将仓库地址设置为 docker.io,将用户名密码分别设置为您的 Docker ID 和密码,然后点击验证以检查地址是否可用。

  2. 点击创建。保密字典创建后会显示在保密字典界面。有关保密字典创建后如何编辑保密字典,请参阅查看保密字典详情

添加 Harbor 镜像仓库

Harbor 是一个开源的可信云原生仓库项目,用于对内容进行存储、签名和扫描。通过增加用户经常需要的功能,例如安全、身份验证和管理,Harbor 扩展了开源的 Docker Distribution。Harbor 使用 HTTP 和 HTTPS 为仓库请求提供服务。

HTTP

  1. 您需要修改集群中所有节点的 Docker 配置。例如,如果外部 Harbor 仓库的 IP 地址为 http://192.168.0.99,您需要在 /etc/systemd/system/docker.service.d/docker-options.conf 文件中增加 --insecure-registry=192.168.0.99 标签。

    1. [Service]
    2. Environment="DOCKER_OPTS=--registry-mirror=https://registry.docker-cn.com --insecure-registry=10.233.0.0/18 --data-root=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5 \
    3. --insecure-registry=192.168.0.99"

    备注

    • 请将镜像仓库的地址替换成实际的地址。

    • 有关 Environment 字段中的标签,请参阅 Dockerd Options

    • Docker 守护进程需要 --insecure-registry 标签才能与不安全的仓库通信。有关该标签的更多信息,请参阅 Docker 官方文档

  2. 重新加载配置文件并重启 Docker。

    1. sudo systemctl daemon-reload
    1. sudo systemctl restart docker
  3. 在 KubeSphere 控制台上进入创建保密字典的数据设置页面,将类型设置为镜像服务信息,将仓库地址设置为您的 Harbor IP 地址,并设置用户名和密码。

    备注

    如需使用 Harbor 域名而非 IP 地址,您需要在集群中配置 CoreDNS 和 nodelocaldns。

  4. 点击创建。保密字典创建后会显示在保密字典页面。有关保密字典创建后如何编辑保密字典,请参阅查看保密字典详情

HTTPS

有关如何集成基于 HTTPS 的 Harbor 仓库,请参阅 Harbor 官方文档。请确保您已使用 docker login 命令连接到您的 Harbor 仓库。

使用镜像仓库

如果您已提前创建了私有镜像仓库的保密字典,您可以选择私有镜像仓库中的镜像。例如,创建部署时,您可以在添加容器页面点击镜像下拉列表选择一个仓库,然后输入镜像名称和标签使用镜像。

如果您使用 YAML 文件创建工作负载且需要使用私有镜像仓库,需要在本地 YAML 文件中手动添加 kubesphere.io/imagepullsecrets 字段,并且取值是 JSON 格式的字符串(其中 key 为容器名称,value 为保密字典名),以保证 imagepullsecrets 字段不被丢失,如下示例图所示。

kubesphere-ecosystem