本文以离线方式安装IBMCloudPakforBusinessAutomation所需的OpenShift环境。
系统需求请参考下面官方链接获得详细信息。
每个OCP集群必须满足如下最小需求。
Machine
OS
CPU
Memory
DiskSpace
Bootstrap
CoreOS
4
16GB
120GB
Master
CoreOS
4
16GB
120GB
Compute
CoreOSorRHEL
2
8GB
120GB
最小OCP集群需包含下面的机器:
l一台Bootstrap机器,安装OCP完成后可以删除
l三台master(orcontrolplane)机器
l至少一台compute(worker)机器
lBastion机器(俗称堡垒机)。为了离线安装,它必须能访问外网把所需的镜像从下载到本地镜像服务器。
机器列表在OCP安装过从中我们使用了如下的机器。
IPAddress
Hostname
OS
Note
182.18.18.65
bastion
堡垒机(访问外网,访问Master/Worker,部署HAProxy,部署本地镜像服务器)
182.18.18.66
bootstrap
182.18.18.67
master01
182.18.18.68
master02
182.18.18.69
master03
182.18.18.70
worker01
182.18.18.71
worker02
182.18.18.72
worker03
182.18.18.73
worker04
182.18.18.74
worker05
182.18.18.75
worker06
182.18.18.76
worker07
182.18.18.77
worker08
离线安装准备参考下面官方链接获得详细信息。
也可以参考下面官方链接获得如何从私有离线镜像服务器安装OCP的详细信息。
从;下面使用的OCP版本是4.8.14。
把OCP命令行工具下载到堡垒机的任意路径(如/root/temp),解压并把oc和kubectl文件移动至/usr/bin.
wget
mvkubectl/usr/bin
mvoc/usr/bin
使用下面命令确认oc命令已正确安装。
ocversion
创建镜像服务器安装所需的软件包。
yuminstallpodmanhttpd-tools-y
如果在安装过程中提示找不到podman,如下所示:
已加载插件:langpacks,product-id,search-disabled-repos,subscription-manager
没有可用软件包podman。
错误:无须任何处理
执行下面命令。
sudosubscription-managerrepos--enable=rhel-7-server-extras-rpms
sudoyum-yinstallpodman
建立镜像服务器目录。
mkdir-p/home/registry/{auth,certs,data}
为镜像服务器建立证书,如果没有权威机构颁发的证书,可以创建一个自签名的证书。
cd/home/registry/certs
opensslreq-newkeyrsa:4096-
根据提示输入下面的必要信息。
CountryName(2lettercode)
StateorProvinceName(fullname)
Enterthefullnameofyourstateorprovince
LocalityName(eg,city)
Enterthenameofyourcity.
OrganizationName(eg,company)
Enteryourcompanyname.
OrganizationalUnitName(eg,section)
Enteryourdepartmentname.
CommonName(eg,yournameoryourserver’shostname)
dress.
EmailAddress
,seethereqdescriptionintheOpenSSLdocumentation.

生成访问镜像服务器的用户名和密码(比如admin/passw0rd)
htpasswd-bBc/home/registry/auth/htpasswdadminpassw0rd
如果堡垒机上防火墙是打开状态,确保5000端口可以从外面访问。
firewall-cmd--add-port=5000/tcp--zone=internal--permanent
firewall-cmd--add-port=5000/tcp--zone=public--permanent
firewall-cmd--reload
firewall-cmd--add-port=5002/tcp--zone=internal--permanent
firewall-cmd--add-port=5002/tcp--zone=public--permanent
创建镜像服务器的容器。
podmanrun--nameocp4-registry-d-p5000:5000\
-v/home/registry/data:/var/lib/registry:z\
-v/home/registry/auth:/auth:z\
-e"REGISTRY_AUTH=htpasswd"\
-e"REGISTRY_AUTH_HTPASSWD_REALM=RegistryRealm"\
-eREGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd\
-v/home/registry/certs:/certs:z\
-eREGISTRY_HTTP_TLS_CERTIFICATE=/certs/\
-eREGISTRY_HTTP_TLS_KEY=/certs/\
/library/registry:2
注意:如果遇到dockerpull对匿名用户的限制,您可能需要登录/library并将该注册表映像拉到bastion,然后创建注册表。
/library
/library/registry:2
使用此命令来验证它是否有效。这里是镜像服务器的主机,配置在DNS上。
curl-uadmin:passw0rd-k
使用下面命令来起/停镜像服务器。
podmanstartocp4-registry
podmanstopocp4-registry
将自签名证书添加到您的受信任证书列表中
cp/home/registry/certs//etc/pki/ca-trust/source/anchors/
update-ca-trust
为镜像服务器创建PullSecret使用下面命令生成pullsecret

生成的pullsecret_如下所示:

把它保存到/home/registry/编辑它,在它的最后加上本地镜像服务器的pullsecret.
创建一个的脚步,内容如下:

lOCP_RELEASE:设置为发布版本,如4.8.14-x86_64,具体版本可以在。
lLOCAL_REGISTRY:本地镜像服务器的host:port
lLOCAL_REPOSITORY:本地存储库的名字,设置为ocp4/openshift4
lPRODUCT_REPO:必须为openshift-release-dev
lLOCAL_SECRET_JSON:之前下载并编辑过的的完整路径
lGODEBUG=x509ignoreCN=0:支持使用未设置SubjectAlternativeName的自签名证书,必须在oc命令之前使用此设置
运行以下命令来镜像注册表。
chmod+
../
ocadm-a${LOCAL_SECRET_JSON}releasemirror\
--from=/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}\
--to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}\
--to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}
上述命令运行之后等一会,需要重启POD再运行ocadm。
如果遇到网络超时或连接重置错误,重新运行上面的ocadm脚本直到成功,如下图所示。

命令完成后,记下imageContentSources部分。以后会用到。
堡垒机准备可以参考如下官方链接获得详细信息:
OpenShift4需要一些支持服务:DNS服务器、负载均衡器。我们将在此VM上安装负载均衡器,因为DNS服务器部署在单独的服务器中。此VM也将是登录OCP集群的客户端。
我们使用虚拟机。IP地址为182.18.19.52。主机名为。
防火墙设置防火墙默认是打开的,可以运行下面命令关闭它。
如果防火墙不能被禁用,添加如下防火墙规则。
l22623/tcp:OCPmachineconfigserver
l6443/tcp:OCPAPIserver
l80/tcp:OCPingresshttp
l443/tcp:OCPingresshttps
l9000/tcp:HAProxyhealthreport
例如,使用以下命令修改firewalld设置以允许DNS,APIServer,Ingress,HAProxy。
firewall-cmd--add-port=22623/tcp--zone=internal--permanent
firewall-cmd--add-port=22623/tcp--zone=public--permanent
firewall-cmd--add-port=6443/tcp--zone=internal--permanent
firewall-cmd--add-port=6443/tcp--zone=public--permanent
firewall-cmd--add-port=80/tcp--zone=internal--permanent
firewall-cmd--add-port=80/tcp--zone=public--permanent
firewall-cmd--add-port=443/tcp--zone=internal--permanent
firewall-cmd--add-port=443/tcp--zone=public--permanent
firewall-cmd--add-port=9000/tcp--zone=internal--permanent
firewall-cmd--add-port=9000/tcp--zone=public--permanent
firewall-cmd--reload
安装负载均衡可以参考
我们使用HAProxy作为辅助均衡。
yum-yinstallhaproxy
覆盖/etc/haproxy/,使用以下内容。
turnonstatsunixsocket
statssocket/var/lib/haproxy/stats
defaults
modehttp
logglobal
optionhttplog
optiondontlognull
optionhttp-server-close
---------------------------------------------------------------------
listenstats
bind:9000
modehttp
statsenable
statsuri/
monitor-uri/healthz
frontopenshift-api-server
bind*:6443
default_backopenshift-api-server
modetcp
optiontcplog
backopenshift-api-server
balancesource
modetcp
:6443check
:6443check
:6443check
:6443check
frontmachine-config-server
bind*:22623
default_backmachine-config-server
modetcp
optiontcplog
backmachine-config-server
balancesource
modetcp
:22623check
:22623check
:22623check
:22623check
frontingress-http
bind*:80
default_backingress-http
modetcp
optiontcplog
backingress-http
balancesource
modetcp
:80check
:80check
:80check
:80check
:80check
:80check
:80check
:80check
frontingress-https
bind*:443
default_backingress-https
modetcp
optiontcplog
backingress-https
balancesource
modetcp
:443check
:443check
:443check
:443check
:443check
:443check
:443check
:443check
!/bin/bash
sudocoreos-installerinstall--copy-network--ignition-file=/var/home/core//dev/sda
!/bin/bash
sudocoreos-installerinstall--copy-network--ignition-file=/var/home/core//dev/sda
如果有人需要,后续内容继续连载。