跳到主要内容

ONES 镜像导入私有镜像仓

在 Helm 安装前,需要先将与目标 ONES 版本和 Kubernetes 节点架构匹配的镜像导入客户私有 镜像仓。

导入镜像

下载 ONES 预制离线镜像包后,使用包内基于 image-syncer 的脚本导入客户私有镜像仓。

提示:也可以使用传统 Docker 命令方式拉取和导入镜像。如有需要,请参见附录中的 如何使用 Docker 方式导入

1. 准备导入参数

先在终端执行以下命令,根据实际环境准备导入参数:

ONES_VERSION="v7.25.0"
OS_ARCH="amd64"

REGISTRY="registry.example.com"
REGISTRY_USER="<私有镜像仓用户名>"
REGISTRY_PASSWORD="<私有镜像仓密码或 Token>"
REGISTRY_BASE_PATH="/ones/"
  • OS_ARCH 支持 amd64arm64
  • REGISTRY_BASE_PATH 必须以 / 开头和结尾,并与 Helm 配置 dockerRegistryBasepathForOnesImage 保持一致。
  • 私有镜像仓不需要认证时,将 REGISTRY_USERREGISTRY_PASSWORD 设置为空字符串。
  • 私有镜像仓未启用 TLS 时,再执行 export REGISTRY_INSECURE=true

2. 创建镜像工作目录

创建标准化的镜像工作目录,用于统一保存镜像清单、同步脚本和离线包:

mkdir -p ~/ones/images
cd ~/ones/images

本文后续下载或生成的镜像文件均保存在该目录。

3. 下载离线包

使用已准备的参数下载并校验 ONES 主体镜像包:

# 下载镜像包
curl -fLO \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/ones-${ONES_VERSION}-images-linux-${OS_ARCH}.tar"

# 下载校验信息
curl -fLO \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/ones-${ONES_VERSION}-images-linux-${OS_ARCH}.tar.sha256"

# 校验镜像包
sha256sum -c "ones-${ONES_VERSION}-images-linux-${OS_ARCH}.tar.sha256"

4. 导入业务镜像到私有镜像仓库

解开 ONES 主体镜像包、进入解压目录并执行导入脚本:

# 解压 ONES 主体镜像包
tar -xf "ones-${ONES_VERSION}-images-linux-${OS_ARCH}.tar"

# 进入解压后的镜像包目录
cd "ones-${ONES_VERSION}-images-linux-${OS_ARCH}"

# 将包内镜像导入客户私有镜像仓
REGISTRY="${REGISTRY}" \
REGISTRY_BASE_PATH="${REGISTRY_BASE_PATH}" \
REGISTRY_USER="${REGISTRY_USER}" \
REGISTRY_PASSWORD="${REGISTRY_PASSWORD}" \
bash import-images.sh

5. 导入 MySQL 镜像到私有镜像仓库

仅使用内置 MySQL 时,才需要执行本步骤。使用外置 MySQL 时,请跳过本步骤。

下载并校验镜像包:

cd ~/ones/images

curl -fLO \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/mysql-${ONES_VERSION}-images-linux-${OS_ARCH}.tar"

curl -fLO \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/mysql-${ONES_VERSION}-images-linux-${OS_ARCH}.tar.sha256"

sha256sum -c "mysql-${ONES_VERSION}-images-linux-${OS_ARCH}.tar.sha256"

解开镜像包、进入解压目录并执行导入脚本:

tar -xf "mysql-${ONES_VERSION}-images-linux-${OS_ARCH}.tar"
cd "mysql-${ONES_VERSION}-images-linux-${OS_ARCH}"

REGISTRY="${REGISTRY}" \
REGISTRY_BASE_PATH="${REGISTRY_BASE_PATH}" \
REGISTRY_USER="${REGISTRY_USER}" \
REGISTRY_PASSWORD="${REGISTRY_PASSWORD}" \
bash import-images.sh

镜像导入完成

执行到这里,所需镜像已经全部导入私有镜像仓。现在可以返回 Helm 部署说明,继续部署 ONES 系统。

附录

附录用于说明特殊场景,不是正文完成后的追加步骤。以下 Docker 在线导入方式可以替代正文 中的离线镜像包导入,无需重复执行。命令复用正文第 1 步准备的参数,请在同一终端会话中执行。

如何使用 Docker 方式导入

当前主机能够同时访问 ONES 镜像仓和客户私有镜像仓时,可以使用 Docker 在线导入。 执行前确认已使用 docker login 登录客户私有镜像仓。

通过 Docker 导入业务镜像

如需审核目标版本包含的业务镜像,可以先下载对应节点架构的镜像清单:

curl -fL \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/ones-images-${OS_ARCH}.yaml" \
-o "ones-images-${OS_ARCH}.yaml"

执行 Docker 便捷脚本导入业务镜像:

curl -sfL \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/sync-ones-images-${OS_ARCH}.sh" | \
REGISTRY="${REGISTRY}" REGISTRY_BASE_PATH="${REGISTRY_BASE_PATH}" bash

通过 Docker 导入 MySQL 镜像

仅使用内置 MySQL 时,才需要执行本节操作。

如需在导入前查看内置 MySQL 包含的镜像,可以下载对应节点架构的镜像清单:

curl -fL \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/mysql-images-${OS_ARCH}.yaml" \
-o "mysql-images-${OS_ARCH}.yaml"

执行 Docker 便捷脚本导入 MySQL 镜像:

curl -sfL \
"https://packages.ones.cn/release/${ONES_VERSION}/kubernetes/images/sync-mysql-images-${OS_ARCH}.sh" | \
REGISTRY="${REGISTRY}" REGISTRY_BASE_PATH="${REGISTRY_BASE_PATH}" bash