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支持amd64和arm64。REGISTRY_BASE_PATH必须以/开头和结尾,并与 Helm 配置dockerRegistryBasepathForOnesImage保持一致。- 私有镜像仓不需要认证时,将
REGISTRY_USER和REGISTRY_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