NSX ALB + Harbor + OpenShift 4.8 UPI安装配置实验笔记系列目录
目录
5.2 将本地Registry的登录信息加入pull-secret.json
5.6.2 本地Registry不能上外网(或国内下载很慢)
使用CentOS7 ISO安装Operator虚机。(略)
- systemctl stop firewalld
- systemctl disable firewalld
- sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- reboot
- yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- yum -y install wget git net-tools bridge-utils bash-completion kexec-tools tmux screen jq tree httpd-tools ca-certificates httpd unzip
OCP 文档和软件下载在 openshift.com 和 redhat.com 各有一套,但是红帽网站的下载速度、内容更新、文档格式(支持 PDF)均优于 openshift.com,因此建议主要使用前者,不过有些内容需要红帽账号。
本文为了操作方便,直接使用了mirror.openshift.com为软件源。

- export OCP_RELEASE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.8/release.txt | grep 'Name:' | awk '{print $NF}')
- echo ${OCP_RELEASE}
- export OCP_PATH=/data/OCP-${OCP_RELEASE}/ocp
- mkdir -p ${OCP_PATH}/{ocp-client,ocp-image,ocp-installer,rhcos,secret}
- wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${OCP_RELEASE}/openshift-client-linux-${OCP_RELEASE}.tar.gz -P ${OCP_PATH}/ocp-client
- tar -xzf ${OCP_PATH}/ocp-client/openshift-client-linux-${OCP_RELEASE}.tar.gz -C /usr/local/sbin/
- yum install bash-completion
- oc completion bash > ~/.kube/completion.bash.inc
- source '/root/.kube/completion.bash.inc'
- echo "source '/root/.kube/completion.bash.inc'" >> /root/.bash_profile
- wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${OCP_RELEASE}/openshift-install-linux-${OCP_RELEASE}.tar.gz -P ${OCP_PATH}/ocp-installer
- ll -h ${OCP_PATH}/ocp-installer
注:openshift-install命令也可以后面下载了ocp Images后通过本地Image解压,后面会同样提到。
- curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane --output butane
- chmod a+x butane && mv butane /usr/sbin
- RHCOS_RELEASE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.8/latest/sha256sum.txt | grep rhcos | awk -F - '{print $2}' | head -1)
- echo ${RHCOS_RELEASE}
![]()
curl -s https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.8/latest/sha256sum.txt | awk '{print $2}' | grep rhcos

1). 下载RHCOS镜像
- wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.8/${RHCOS_RELEASE}/rhcos-${RHCOS_RELEASE}-x86_64-live.x86_64.iso -P ${OCP_PATH}/rhcos
- wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.8/${RHCOS_RELEASE}/rhcos-${RHCOS_RELEASE}-x86_64-metal.x86_64.raw.gz -P ${OCP_PATH}/rhcos
注:OCP 4.6及之前的版本Bare Metal方式安装时似乎需要使用metal.raw.gz包,经验证OCP4.8可以直接通过ISO安装。
2). 将下载下来的RHCOS ISO文件上传至vCenter内的Storage(略)
Pull Secret下载地址:console.redhat.com
打开以上网页,登录自己注册的帐号,然后下载或是点击“Copy pull secret”。

返回Operator SSH界面,将copy下来的密钥存入一个文本文件,然后由此文件转换成一个密钥json文件:
- export LOCAL_SECRET_JSON=${OCP_PATH}/secret/pull-secret.json
- cat /root/pull-secret.txt | jq . > ${LOCAL_SECRET_JSON}
用echo命令将本地Registry的帐号和密码生成Base64码:
echo -n 'admin:VMware1!' | base64 -w0
将以上命令输出的结果按右侧红字的样式加入pull-secret.json:
vi ${LOCAL_SECRET_JSON}
按下图方式加入本地Registry的域名及生成的Base 64码,并注意符号的完整及正确性。
- {
- "auths": {
- "map.corp.tanzu": {
- "auth": "YWRtaW46Vk13YXJlMSE=",
- "email": ""
- },
- "registry.redhat.io": {
- "auth": "fHVo........==",
- "email": "youmail@163.com"
- }
- }
- }

登录Harbor,创建公开项目“openshift”:

将本地Harbor 的自签名的CA证书Copy至/etc/pki/ca-trust/source/anchors目录,并更新系统受信任的CA列表。
- cp /etc/docker/certs.d/map.corp.tanzu/ca.crt /etc/pki/ca-trust/source/anchors/map-harbor.crt
- updata-ca-trust
因OpenShift会有版本更新情况,当非连续性操作时,可在此使用实际我们上面Download下来的RELEASE版本号更从新声明变量:
- export OCP_RELEASE=4.8.36
- export LOCAL_REGISTRY='map.corp.tanzu'
- export LOCAL_REPOSITORY='openshift/ocp4.8.36'
- export PRODUCT_REPO='openshift-release-dev'
- export RELEASE_NAME='ocp-release'
- export ARCHITECTURE='x86_64'
- export OCP_PATH=/data/OCP-${OCP_RELEASE}/ocp
- export LOCAL_SECRET_JSON=${OCP_PATH}/secret/pull-secret.json
- export REMOVABLE_MEDIA_PATH=${OCP_PATH}/ocp-image
验证镜像信息:
oc adm release info "quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-x86_64"
会获得如下图信息:

直接在Operator主机上使用以下命令将对应版本的核心Images同步至本地Registry:
oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
出现下图,则为同步成功。

5.6.2.1 先将对应版本核心Images同步到本地磁盘
oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-x86_64 --to-dir=${OCP_PATH}/ocp-image/mirror_${OCP_RELEASE}
5.6.2.2 检查下载下来的Images的有效性,并打包留存
1). 检查镜像有效性:
oc adm release info --dir=${OCP_PATH}/ocp-image/mirror_${OCP_RELEASE} file://openshift/release:${OCP_RELEASE}
2). 打包镜像,以便后用
tar -zcvf ${OCP_PATH}/ocp-image/ocp-image-${OCP_RELEASE}.tar -C ${OCP_PATH}/ocp-image ./mirror_${OCP_RELEASE}
3). 删除镜像包
rm -rf ${OCP_PATH}/ocp-image/mirror_${OCP_RELEASE}
5.6.2.3 解压核心Images包,并同步至本地Registry
1). 解压Images压缩包
tar -xvf ${OCP_PATH}/ocp-image/ocp-image-${OCP_RELEASE}.tar -C ${OCP_PATH}/ocp-image/
2). 删除Images压缩包
rm -f ${OCP_PATH}/ocp-image/ocp-image-${OCP_RELEASE}.tar
3). 同步至本地Registry
oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${OCP_PATH}/ocp-image/mirror_${OCP_RELEASE} "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}