离线部署 Openshift Container Platform 4.3 - 1: 准备离线资源
本系列文章记录了 Openshift Container Platform (OCP) 4.3.5 离线部署的过程. 离线资源包括安装镜像, 所有样例 Image Stream, OperatorHub 下的 RedHat Operators. 虽然这是一个实验系列, 我会尽可能的按照生产实践来进行.
实验环境
跳板机
可以同时访问内外网, 同时具备科学上网的能力, 用来执行安装任务和离线材料准备
私有镜像库
离线镜像会保存到私有镜像库中, 以供 OCP 安装和运行时使用, 要求支持 version 2 schema 2 (manifest list). 我这里选择的是 Quay 3
Nexus 目前还不支持 manifest list: NEXUS-18546Harbor 目前还不支持 manifest list: 6522
关于镜像的获取
发现很多人误以为必须联系红帽销售, 签单之后才可以试用 OCP4, 实际上并不是这样. 注册一个开发者账号 后就可以获得 quay.io, registry.redhat.io 的 pull secret 来进行测试实验了.
准备离线安装介质
获取目前的版本信息
目前最新的 OCP 版本是 4.3.5. 从这里下载 oc 客户端
解压出来的二进制文件放到跳板机 PATH 下. 先看一下当前 4.3.5 的版本信息
1 | oc adm release info quay.io/openshift-release-dev/ocp-release:4.3.5-x86_64 |
下载安装镜像
实验环境中的 quay 在内网 https://quay.svc.vopsdev.com 提供服务. 事先创建好 namespace/organization: openshift-release-dev 用来存放安装镜像仓库
1 | export OCP_RELEASE=4.3.5 |
oc adm release mirror
命令完成后会输出下面类似的信息, 保存下来, 将来会用在 install-config.yaml 文件中
1 | imageContentSources: |
提取安装程序
1 | oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}" |
会产生 openshift-install 二进制程序 (不要直接从 https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.3.5 下载, 后面会有 sha256 匹配不上的问题)
准备 Image Stream 样例镜像
准备一个镜像列表, 然后使用 oc image mirror
将镜像同步到私有仓库中
1 | cat sample-images.txt | while read line; do |
完整的镜像列表如何获取? 如果之前装过 OCP 4.3.5, 把 openshift-cluster-samples-operator 项目下 cluster-samples-operator pod 的 /opt/openshift 目录同步出来, 简单 grep 一下就都有了.
完整列表参考这里
准备 OperatorHub 离线资源
首先构建 RedHat Operators 的 catalog image, 保存为 quay.svc.vopsdev.com/devinfra/redhat-operators:v1.
1 | oc adm catalog build --appregistry-endpoint https://quay.io/cnr --appregistry-org redhat-operators --to=quay.svc.vopsdev.com/devinfra/redhat-operators:v1 |
这个 catalog image 相当于 RedHat Operators 的一个目录, 通过 catalog image 可以找到 RedHat Operators 的所有镜像. 而且 catalog image 使用 sha256 digest 来引用镜像, 能够确保应用有稳定可重复的部署.
然后使用 catalog image 同步 RedHat Operators 的所有镜像到私有仓库. 按照官方文档的做法是
1 | oc adm catalog mirror quay.svc.vopsdev.com/devinfra/redhat-operators:v1 quay.svc.vopsdev.com |
这个命令结束后会产生 redhat-operators-manifests 目录, 下面有两个文件: mapping.txt 和 imageContentSourcePolicy.yaml.
然而这么做目前还有问题 1800674: 同步出来的镜像 manifest digest 不对, 导致后面离线安装 operator 时会报镜像无法获取的错误. 暂时可以使用上面 bugzilla 链接里给出的临时解决方案: skopeo copy --all
1 | cat redhat-operators-manifests/mapping.txt | while read line; do |