IBM Cloud Pak for Business Automation安装之部署OpenShift

简介

本文以离线方式安装IBM Cloud Pak for Business Automation所需的OpenShift环境。

系统需求

请参考下面官方链接获得详细信息。
https://docs.openshift.com/container-platform/4.7/installing/installing_bare_metal/installing-bare-metal.html

每个OCP集群必须满足如下最小需求。

Machine

OS

CPU

Memory

Disk Space

Bootstrap

Core OS

4

16 GB

120 GB

Master

Core OS

4

16 GB

120 GB

Compute

Core OS or RHEL

2

8 GB

120 GB

最小OCP集群需包含下面的机器:

l 一台Bootstrap机器,安装OCP完成后可以删除

l 三台 master (or control plane) 机器

l 至少一台compute (worker) 机器

l Bastion 机器(俗称堡垒机)。为了离线安装,它必须能访问外网把所需的镜像从quay.io下载到本地镜像服务器。

机器列表

在OCP安装过从中我们使用了如下的机器。


IP Address

Hostname

OS

Note

182.18.18.65

bastion

RHEL 7.9

堡垒机(访问外网,访问Master/Worker, 部署HAProxy,部署本地镜像服务器)

182.18.18.66

bootstrap

Core OS 4.8


182.18.18.67

master01

Core OS 4.8


182.18.18.68

master02

Core OS 4.8


182.18.18.69

master03

Core OS 4.8


182.18.18.70

worker01

Core OS 4.8


182.18.18.71

worker02

Core OS 4.8


182.18.18.72

worker03

Core OS 4.8


182.18.18.73

worker04

Core OS 4.8


182.18.18.74

worker05

Core OS 4.8


182.18.18.75

worker06

Core OS 4.8


182.18.18.76

worker07

Core OS 4.8


182.18.18.77

worker08

Core OS 4.8


离线安装准备

参考下面官方链接获得详细信息。

https://docs.openshift.com/container-platform/4.2/installing/install_config/installing-restricted-networks-preparations.html

也可以参考下面官方链接获得如何从私有离线镜像服务器安装OCP的详细信息。
https://docs.openshift.com/container-platform/4.6/installing/installing_bare_metal/installing-restricted-networks-bare-metal.html

下载命令行工具

从https://mirror.openshift.com/pub/openshift-v4/clients/ocp/ 下载openshift-client-linux-.tar.gz 下面使用的OCP版本是4.8.14。

把OCP 命令行工具下载到堡垒机的任意路径(如/root/temp),解压并把oc和kubectl文件移动至/usr/bin.

wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.8.14/openshift-client-linux-4.8.14.tar.gz


tar zxvf openshift-client-linux-4.8.14.tar.gz


mv kubectl /usr/bin


mv oc /usr/bin


使用下面命令确认oc命令已正确安装。

oc version

创建镜像服务器

安装所需的软件包。

yum install podman httpd-tools -y

如果在安装过程中提示找不到podman,如下所示:


已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager

没有可用软件包 podman。

错误:无须任何处理


执行下面命令。

sudo subscription-manager repos --enable=rhel-7-server-extras-rpms

sudo yum -y install podman


建立镜像服务器目录。

mkdir -p /home/registry/{auth,certs,data}


为镜像服务器建立证书,如果没有权威机构颁发的证书,可以创建一个自签名的证书。

cd /home/registry/certs


openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt


根据提示输入下面的必要信息。

Country Name (2 letter code)

Specify the two-letter ISO country code for your location. See the ISO 3166 country codes standard.

State or Province Name (full name)

Enter the full name of your state or province

Locality Name (eg, city)

Enter the name of your city.

Organization Name (eg, company)

Enter your company name.

Organizational Unit Name (eg, section)

Enter your department name.

Common Name (eg, your name or your server’s hostname)

Enter the host name for the registry host. Ensure that your hostname is in DNS and that it resolves to the expected IP address.

Email Address

Enter your email address. For more information, see the req description in the OpenSSL documentation.


生成访问镜像服务器的用户名和密码(比如 admin/passw0rd)

htpasswd -bBc /home/registry/auth/htpasswd admin passw0rd


如果堡垒机上防火墙是打开状态,确保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



创建镜像服务器的容器。

podman run --name ocp4-registry -d -p 5000:5000

-v /home/registry/data:/var/lib/registry:z

-v /home/registry/auth:/auth:z

-e "REGISTRY_AUTH=htpasswd"

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"

-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd

-v /home/registry/certs:/certs:z

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt

-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key

docker.io/library/registry:2



注意:如果遇到docker pull 对匿名用户的限制,您可能需要登录 dokcer.io/library 并将该注册表映像拉到 bastion,然后创建注册表。

podman login docker.io/library

podman pull docker.io/library/registry:2


使用此命令来验证它是否有效。这里 testbostion.xxxxx.cn 是镜像服务器的主机,配置在 DNS 上。

curl -u admin:passw0rd -k https://testbostion.xxxxxx.cn:5000/v2/_catalog



使用下面命令来起/停镜像服务器。

podman start ocp4-registry


podman stop ocp4-registry


将自签名证书添加到您的受信任证书列表中


cp /home/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/


update-ca-trust

为镜像服务器创建Pull Secret

使用下面命令生成pull secret


生成的pullsecret_config.json如下所示:


镜像OpenShift Container Platform镜像存储库

访问 https://cloud.redhat.com/openshift/install/pull-secret 并用您的redhat订阅账号登录。然后点击 “Download pull secret”.

把它保存到 /home/registry/pullsecret.json. 编辑它,在它的最后加上本地镜像服务器的pull secret.

创建一个setEnv.sh的脚步,内容如下:



运行以下命令来镜像注册表。

chmod +x setEnv.sh

. ./setEnv.sh


oc adm -a ${LOCAL_SECRET_JSON} release mirror

--from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}

--to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}

--to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}

上述命令运行之后等一会,需要重启POD再运行oc adm。

如果遇到网络超时或连接重置错误,重新运行上面的 oc adm 脚本直到成功,如下图所示。


命令完成后,记下 imageContentSources 部分。以后会用到。

堡垒机准备

可以参考如下官方链接获得详细信息:
https://docs.openshift.com/container-platform/4.6/installing/installing_bare_metal/installing-bare-metal.html

OpenShift 4 需要一些支持服务:DNS 服务器、负载均衡器。我们将在此 VM 上安装负载均衡器,因为 DNS 服务器部署在单独的服务器中。此 VM 也将是登录 OCP 集群的客户端。

我们使用 RHEL 8.5 虚拟机。 IP 地址为 182.18.19.52。主机名为testbostion.xxxxx.cn。

防火墙设置

防火墙默认是打开的,可以运行下面命令关闭它。

systemctl stop firewalld.service


systemctl disable firewalld.service


如果防火墙不能被禁用,添加如下防火墙规则。

l 22623/tcp: OCP machine config server

l 6443/tcp: OCP API server

l 80/tcp: OCP ingress http

l 443/tcp: OCP ingress https

l 9000/tcp: HAProxy health report


例如,使用以下命令修改 firewalld 设置以允许 DNS, API Server, 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

安装负载均衡

可以参考 https://github.com/openshift-tigerteam/guides/blob/master/ocp4/ocp4-haproxy.cfg


我们使用HAProxy作为辅助均衡。

yum -y install haproxy

覆盖 /etc/haproxy/haproxy.cfg,使用以下内容。


# source: https://github.com/openshift-tigerteam/guides/blob/master/ocp4/ocp4-haproxy.cfg

global

log 127.0.0.1 local2


chroot /var/lib/haproxy

pidfile /var/run/haproxy.pid

maxconn 4000

user haproxy

group haproxy

daemon


# turn on stats unix socket

stats socket /var/lib/haproxy/stats


defaults

mode http

log global

option httplog

option dontlognull

option http-server-close

# option forwardfor except 127.0.0.0/8

option redispatch

retries 3

timeout http-request 10s

timeout queue 1m

timeout connect 10s

timeout client 1m

timeout server 1m

timeout http-keep-alive 10s

timeout check 10s

maxconn 3000


#---------------------------------------------------------------------


listen stats

bind :9000

mode http

stats enable

stats uri /

monitor-uri /healthz



frontend openshift-api-server

bind *:6443

default_backend openshift-api-server

mode tcp

option tcplog


backend openshift-api-server

balance source

mode tcp

server bootstrap 182.18.18.66:6443 check

server master-0 182.18.18.67:6443 check

server master-1 182.18.18.68:6443 check

server master-2 182.18.18.69:6443 check


frontend machine-config-server

bind *:22623

default_backend machine-config-server

mode tcp

option tcplog


backend machine-config-server

balance source

mode tcp

server bootstrap 182.18.18.66:22623 check

server master-0 182.18.18.67:22623 check

server master-1 182.18.18.68:22623 check

server master-2 182.18.18.69:22623 check


frontend ingress-http

bind *:80

default_backend ingress-http

mode tcp

option tcplog


backend ingress-http

balance source

mode tcp

server worker-0 182.18.18.70:80 check

server worker-1 182.18.18.71:80 check

server worker-2 182.18.18.72:80 check

server worker-3 182.18.18.73:80 check

server worker-4 182.18.18.74:80 check

server worker-5 182.18.18.75:80 check

server worker-6 182.18.18.76:80 check

server worker-7 182.18.18.77:80 check


frontend ingress-https

bind *:443

default_backend ingress-https

mode tcp

option tcplog


backend ingress-https

balance source

mode tcp

server worker-0 182.18.18.70:443 check

server worker-1 182.18.18.71:443 check

server worker-2 182.18.18.72:443 check

server worker-3 182.18.18.73:443 check

server worker-4 182.18.18.74:443 check

server worker-5 182.18.18.75:443 check

server worker-6 182.18.18.76:443 check

server worker-7 182.18.18.77:443 check

#---------------------------------------------------------------------

将引导程序和所有Master添加到 api-server (6443) 和 machine-config-server (22623) 部分。

将所有Worker添加到 ingress-http (80) 和 ingress-https (443) 部分。


设置 SELinux policy for haproxy

setsebool -P haproxy_connect_any=1


启动HAProxy:

systemctl start haproxy


将HAProxy 激活为服务

systemctl enable haproxy


检查HAProxy状态并确认它是active

systemctl status haproxy


访问http://testbostion.xxxxx.cn:9000/health来检查HAProxy状态。

下载安装文件

wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.8.26/openshift-client-linux-4.8.26.tar.gz

对于离线安装,需要从堡垒主机上的镜像注册表中提取 openshift-install。否则虚拟机可能无法从注册服务器拉取镜像。

运行以下命令以提取 openshift-install。

. ./setEnv.sh


oc adm release extract --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}" -a ${LOCAL_SECRET_JSON}



如果上述 oc admin release 提取脚本由于网络超时问题而失败,请重试直到成功。

对于离线安装,将 openshift-install(从注册表服务器中提取)从堡垒主机复制到 /usr/bin。

cp openshift-install /usr/bin/

生成SSH私钥并添加到代理

mkdir /home/ocp48

转到 /home/ocp48。运行此命令以生成 SSH 密钥。


cd /home/ocp48

ssh-keygen -t rsa -b 4096 -N '' -C noname -f $(pwd)/openshift4_rsa


启动 ssh-agent 进程作为后台任务。

eval "$(ssh-agent -s)"


将您的 SSH 私钥添加到 ssh-agent。

ssh-add $(pwd)/openshift4_rsa

把那个私钥文件拷到/root/.ssh下去,改名id_rsa

然后就可以在创建 ocp 集群后通过 ssh core@node SSO 到 OCP master/worker 节点。

创建安装配置文件

转到 /home/ocp48。创建一个名为 install-config.yaml 的文件,如下所示:


apiVersion: v1

baseDomain: xxxxx.cn

compute:

- hyperthreading: Enabled

name: worker

replicas: 0

controlPlane:

hyperthreading: Enabled

name: master

replicas: 3

metadata:

name: wytestocp

networking:

clusterNetwork:

- cidr: 10.128.0.0/14

hostPrefix: 23

networkType: OpenShiftSDN

serviceNetwork:

- 172.30.0.0/16

platform:

none: {}

pullSecret: '{"auths": {"testbostion.xxxxx.cn:5000": {"auth": "YWRtaW46V1lBZG1pblBhc3N3MHJk"}}}'

sshkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCi+euX5p7uiwoMmFoHOwfzaB/9mLsl2S6HE+tJaTQ1WueB7u8ZaIYHnA7yDlze0e6L6MItHiD2CIWOcGsft+y3V7TK8Fx1m90V0ULXFEPSZXjxOx7EhZoW+2dvwWgtSZdQe4XEZVv6eMhZR1NV+cuXi/A3mFgfd66DdROlXWNSh5xJoSjjHM4yteUF58ZjrX8Rpwwkcr2VNbSVg994pz++0b5QvK2kfvqopxeGLiaMs2hVheGSEq/0OeWfVkIOBiTWocaIRJB27ykzQnEDGcBrMgIWvg74+NPK2wQ5aSetXZr1XpQLaK0ix9Ofo86EkpswSew7l6r/EjdlYUG3rVG+EeHxULjEaP0j+V+lcb80hBW6dvOCfk95qTmUSd20wFFwmYdb4a5Nl10Y6JBACK+y8NaUiOWdYMKiFv8bJfjjqsgnmv8bG9jWfEsbPp+OqSYk7ikcN64TKXWJZQ25HYWRNibdIAdqQgRNSj1CP9hp8GVTlbn98vR16Z/56Ef3k2QBtJVQsYGZJHwODdcX5oAMbLkvREfyZ47Tq+mAT0Hq+oGOHeYrRobXoUHXVbOEBEZozj6QgFbvLfQW2AaOBSBiGC1E3VQmsK6JpMwtcDdqxSVGmuOe2fbjP7rhbsYPqvt3I1x/AFSGzkIS1BKWNLnbkxLY9jsz073J3ddGBsucCw== noname'

additionalTrustBundle: |

-----BEGIN CERTIFICATE-----

MIIGGTCCBAGgAwIBAgIUdp7KiVCgWgpitAasxxDCWdRODe4wDQYJKoZIhvcNAQEL

BQAwgZsxCzAJBgNVBAYTAkNOMQ4wDAYDVQQIDAVIZU5hbjEPMA0GA1UEBwwGSmlZ

dWFuMRUwEwYDVQQKDAx3YW55YW5nZ3JvdXAxCzAJBgNVBAsMAnd5MSQwIgYDVQQD

DBt0ZXN0Ym9zdGlvbi53YW55YW5nZ3JvdXAuY24xITAfBgkqhkiG9w0BCQEWEmR3

QHdhbnlhbmdncm91cC5jbjAeFw0yMjA2MTAwMTMzMjZaFw0zMjA2MDcwMTMzMjZa

MIGbMQswCQYDVQQGEwJDTjEOMAwGA1UECAwFSGVOYW4xDzANBgNVBAcMBkppWXVh

bjEVMBMGA1UECgwMd2FueWFuZ2dyb3VwMQswCQYDVQQLDAJ3eTEkMCIGA1UEAwwb

dGVzdGJvc3Rpb24ud2FueWFuZ2dyb3VwLmNuMSEwHwYJKoZIhvcNAQkBFhJkd0B3

YW55YW5nZ3JvdXAuY24wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDe

JHGEyM20bnutJHZN5EzyS7p1z2PmU30H9Jf7bEQnssNA5FVgBaU8p4KluL8FLJ+8

mOmQexgwnSKz5SuDsgQVgRTkcal7HTjO/dkYedylvdUz18aMXv9bCfLHqUPezhCl

kfMyljbtBmuddQvKJ1xo1dcYHf77lVpeXqSBfQK7PNNUbElqYrfNmS4jRMnh86lq

7pTkHLQ+0Sy/VrM9iVzm2iugy0j3l2be228Ebgwwnmvdw/5mxxe8OpZ2REGla1Fb

Jc4esGnVhYz2X2apIZxVO6d0DXSbp/YCQ+vLCjhH8Rh/ZhfW4UvYErrg0r9n1hj2

QCUhvdtDfkzmxyXQp/JDS+q9fyaf6O/5KotxssShNXbONiSp39g7mXErBgJNur00

bYMYyrkFsp7V6DdbQFU5ZrEdpG154oW7WGJ+ka1LhbjkdLQtN2hlOzyJFUs6NZlZ

s6h5IrFbrSS4rMTuX5kdpwxO8aosLuKYWqVTFDYs9YOuHgWKOalbXbwcn0/qnlek

aUS413Rtnapp5yQp/4YtoiTlrtGS6yJSI7o8+93WYfMI6UKxhRyuDVELAat39oyP

W0tf9cFxYaKVz7+L7qT3UpPx/fm8omprfjGPharhIhnF3NBuy9NEWBPObQM4wDgt

qmn7udZdsgxw656BGKtmf8ig3+0xXRzxR7kxcFwDdQIDAQABo1MwUTAdBgNVHQ4E

FgQU8kb4VI6Pmf0JTMDe4KbKbxV1gp0wHwYDVR0jBBgwFoAU8kb4VI6Pmf0JTMDe

4KbKbxV1gp0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAm7Qq

0cpN54r0lH90UiWB6vBqqprmEQwaMYn7ZtJvNriRlTOi6vBgiQ7g5uSq8xr7xlrV

duMeuHkNyoIBx7+GvXz0Z2mozlDfLTrFIHCnyw2IE4pEDM8d8gfia2/oCrlPa5GQ

p/am+Va22MUwPxutqqdHBCq8hQPn6igDoQl5qoMf18VHnd0fTxzdLSzBp2Silc1T

x6ViD5YPH+Sff7tOgJIDdUF4yfOnv+GFkFwEEXWZfDPAl8JZRkVZCHun/6/6ubIq

RZaD0e0/Yr3GZx5ZWr/JNZZbmq1gNaU0NaaDGV9IclDRLBlkkRIKAn0Neg5oTDIo

1+GToS77+kw5kwGRAhhUBwFRxK+LPBvtjQdeOVLFYOCjY++lXfogzlKCIwj52fF+

g3UJp6Mu0AO+0MYlnK2ohfKtocAApPZL2gogis81D/VjRAOp91YZfcRqnj2VcUUs

K7/lN4CSefNNh+/eqzNDkY18ldZhIddvvUWeBqx8W8GZs51evmPVK///64Hy6n70

WnRnPIyoyAwZv24ZRfooiNkNzHi8+fP+g31m+JP/8ZkxoqWhH0JAqEyZZxKN1vCb

ViHvLyjx3m8e7LoyvH0e+D2bJ/UIB1sVMc+350QGjCamvoGBnbfS4CRi2/9hs1PT

K7ncqGxAUot/5iF+L7+WWnOZ6+RSElW1zhAhBwM=

-----END CERTIFICATE-----

imageContentSources:

- mirrors:

- testbostion.xxxxx.cn:5000/ocp4/openshift4

source: quay.io/openshift-release-dev/ocp-release

- mirrors:

- testbostion.xxxxx.cn:5000/ocp4/openshift4

source: quay.io/openshift-release-dev/ocp-v4.0-art-dev


以上内容有问题,参照文件:

对于离线安装:

创建此文件的备份,因为它会在您稍后创建清单和点火文件时自动删除。


cp install-config.yaml install-config.yaml.bak

创建Kubernetes清单和Ignition配置文件

转到 /home/ocp48。使用此命令生成清单文件。

openshift-install create manifests --dir=$(pwd)

修改 manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件以防止在Master节点上调度 Pod。

vi manifests/cluster-scheduler-02-config.yml

找到 mastersScheduable 参数并将其值设置为 false。

使用此命令创建 Ignition 文件。

openshift-install create ignition-configs --dir=$(pwd)

将创建三个点火文件:bootstrap.ign、master.ign 和 worker.ign。

为每个点火文件创建一个shell脚本,如下所示:

l bootstrap.sh

#!/bin/bash

sudo coreos-installer install --copy-network --ignition-file=/var/home/core/bootstrap.ign /dev/sda

l master.sh

#!/bin/bash

sudo coreos-installer install --copy-network --ignition-file=/var/home/core/master.ign /dev/sda

l worker.sh

#!/bin/bash

sudo coreos-installer install --copy-network --ignition-file=/var/home/core/worker.ign /dev/sda


如果有人需要,后续内容继续连载。

展开阅读全文

页面更新:2024-05-30

标签:离线   详细信息   堡垒   集群   注册表   命令   证书   机器   服务器   文件

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top