VMware网络与安全产品解决方案支持广泛的容器平台,以及容器场景下的高级功能,为了加速VMware网络与安全产品解决方案与第三方容器平台的集成拓展,本文将以Redhat OCP与NSX-T,Antrea,AKO集成为例,介绍集成安装及基本测试步骤,旨在更好的推动与第三方产品的集成与整合,节约POC过程中的时间成本,以便快速上手。
OCP安装方式介绍
OCP安装部署主要分为两类,每类依据用户的个性化需求又有细分:
installer-provisioned infrastructure(IPI)
默认安装类型为IPI。缺省情况下,安装程序(installation program)充当安装向导,提示用户输入无法自行确定的值,并为其余参数提供合理的默认值。用户可以自定义安装过程以支持高级基础架构场景。安装程序可以自动部署运行集群的基础设施。
用户可以安装标准集群或自定义集群。对于标准集群,您只需要提供安装集群所需的最少信息。使用自定义集群,您可以指定有关平台的更多详细信息,例如控制平面使用的机器数量、集群部署的虚拟机类型或 Kubernetes 服务网络的 CIDR 范围。
建议使用此方式,来避免必须配置和维护集群基础架构。用户可以使用安装程序来生成配置集群基础架构所需资源。通过安装程序配置的基础设施集群,OpenShift Container Platform 可以管理集群的所有方面,包括操作系统本身。
user-provisioned infrastructure(UPI)
用户还可以在提供的基础架构上安装 OpenShift Container Platform。 也就意味着如果用户不使用安装程序提供的基础架构,则必须自行管理和维护集群资源,包括:
- 构成集群的控制平面和计算节点的底层基础设施
- 负载均衡器
- 集群网络,包括 DNS 记录和所需的子网
- 集群基础设施和应用程序的存储
如果集群使用用户配置的基础架构,可以选择将运行RHEL 的节点添加到集群。
为具备一定的测试灵活性和便捷性,本文采用IPI+network customizations的方式在vSphere平台的安装展开来进行介绍。
OCP安装流程解读
因为集群中的每台机器在配置时都需要有关集群的信息,所以 OpenShift Container Platform 在初始配置期间使用临时bootstrap 节点向生产集群的控制平面提供所需的信息。 它通过使用描述如何创建集群的 Ignition 配置文件启动。 bootstrap创建构成控制平面的control plane 节点(master node)。 然后,control plane 节点创建compute 节点(worker node),整个流程如下图所示:
引导并安装OCP集群涉及以下步骤:
- Bootstrap node启动并开始托管控制平面节点启动所需的远程资源。 (如果自己配置基础架构,则需要手动干预)
- bootstrap node启动一个单节点 etcd 集群和一个临时的 Kubernetes 控制平面。
- Controller node从bootstrap node获取远程资源并完成引导。(如果自己配置基础架构,则需要手动干预)
- bootstrap node上的临时控制平面将生产控制平面调度到Controller node上。
- Cluster Version Operator (CVO) 上线并安装 etcd Operator。 etcd Operator 在所有Controller node上扩展 etcd。
- 临时控制平面关闭并将控制权交给生产控制平面。
- bootstrap node将 OpenShift Container Platform 组件注入生产控制平面。
- 安装程序关闭bootstrap node。 (如果自己配置基础架构,则需要手动干预)
- 控制平面设置Compute Node。
- 控制平面以一组 Operator 的形式安装附加服务。
这个引导过程的结果是一个正在运行的 OpenShift Container Platform 集群。然后集群下载并配置日常操作所需的剩余组件,包括在支持的环境中创建Compute Node。
OCP安装资源要求(Minimum)
注意: |
Bootstrap节点与Control Plane节点必须使用RHCOS作为操作系统,但是计算节点可以选择RHCOS或RHEL8.4/8.5 |
部署环境介绍
软件版本
本次测试安装VMware产品均使用当前时间(2022.8.25)下的最新安装镜像,具体版本信息如下:
Product |
Version |
NSX-ALB(Avi) |
22.1.1 |
NSX-T |
4.0.0.1 |
VCSA Version |
7.0.3.00700 |
OpenShift Container Platform |
4.10.26 |
Antrea (Advanced) |
1.5.0(对应社区版1.7.1) |
AKO |
1.7.2 |
测试拓扑
网络规划
# 基础环境部分
HOST NAME |
IP INFORMATION |
||||||
MGT |
TEP |
UPLINK |
Storage |
||||
IP |
VLAN |
IP |
VLAN |
IP/MASK |
VLAN |
IP |
|
c01avictl31 |
192.168.60.11 |
||||||
c01esxiedge31 |
192.168.60.12 |
||||||
c01esxiedge32 |
192.168.60.13 |
||||||
c01esxicpt31 |
192.168.60.14 |
610 |
192.166.10.102 192.166.10.103 |
52 |
192.168.52.111 |
||
c01esxicpt32 |
192.168.60.15 |
610 |
192.166.10.100 192.166.10.101 |
52 |
192.168.52.112 |
||
c01esxicpt33 |
192.168.60.16 |
610 |
192.166.10.104 192.166.10.105 |
52 |
192.168.52.113 |
||
vcsa7sddc31 |
192.168.60.17 |
||||||
nsxtmgr31 |
192.168.60.19 |
||||||
c01edgenode31 |
192.168.60.20 |
611 |
192.166.11.100 192.166.11.100 |
620 |
192.166.20.101 |
||
621 |
192.166.21.101 |
||||||
Operator |
192.168.60.31 |
注意: |
1.绿色部分为VIP地址 |
2.所有网段均为/24位掩码 |
# OCP集群部分
在部署OCP集群过程中,bootstap虚拟机、master节点虚拟机以及worker节点虚拟机需要DHCP为其分配IP地址,本次测试中地址段规划为172.36.1.0/24,DHCP具体配置方法详见8.1章节
Pod、Service地址段规划:
Pod 10.128.0.0/16
Service 10.129.0.0/16
# AVI网络部分
AVI以单臂方式部署,SE数据平面与VIP地址段规划如下:
172.16.111.0/24
准备OCP部署机
在整个OCP安装过程中需要准备一台Linux虚拟机来执行所有相关的远程部署操作,本文以Centos8为例(VM主机名为Operator )。
关闭相关安全选项
[root@Operator ~]# systemctl stop firewalld [root@Operator ~]# systemctl disable firewalld [root@Operator ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config [root@Operator ~]# reboot |
安装Linux基础工具
[root@Operator ~]# yum install -y epel-release && \ yum install -y \ jq \ bind-utils \ tcpdump \ chrony \ httpd-tools \ dos2unix \ strace \ unzip \ lrzsz \ tmux \ net-tools \ wget |
安装Docker环境
[root@Operator ~]# yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
[root@Operator ~]# yum install -y docker-ce |
[root@Operator ~]# systemctl start docker |
[root@Operator ~]# systemctl enable docker |
上安装Helm环境
[root@Operator ~]# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 |
[root@Operator ~]# chmod 700 get_helm.sh |
[root@Operator ~]# ./get_helm.sh |
[root@Operator ~]# source <(helm completion bash) |
[root@Operator ~]# echo “source <(helm completion bash)” >> ~/.bashrc |
其它安装方法请参阅官网 https://helm.sh/docs/intro/install/ |
OCP相关文件下载
# 下载pull secret,地址如下(需要注册redhat账户):
https://console.redhat.com/openshift/install/vsphere/installer-provisioned
本文以OCP 4.10.26 为例展开介绍,并未使用最新版本4.11.0 。所以对于client/install工具需要下载对应版本。
# 通过指定大版本号来查找每个大版本下的具体version,相应的下载不同版本的OCP工具。
[root@Operator ~]# export OCP_RELEASE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.10/release.txt | grep ‘Name:’ | awk ‘{print $NF}’) [root@Operator ~]# echo ${OCP_RELEASE} |
# 指定版本的openshift-client-linux工具下载
[root@Operator ~]# wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${OCP_RELEASE}/openshift-client-linux-${OCP_RELEASE}.tar.gz -P ${OCP_PATH}/root [root@Operator ~]# tar xvf openshift-client-linux-4.10.26.tar.gz [root@Operator ~]# mv kubectl oc /usr/local/bin/ [root@Operator ~]# oc version -o json |
# 指定版本的openshift-install-linux工具下载
[root@Operator ~]# wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${OCP_RELEASE}/openshift-install-linux-${OCP_RELEASE}.tar.gz -P ${OCP_PATH}/root [root@Operator ~]# tar xvf openshift-install-linux-4.10.26.tar.gz |
准备安装镜像(Optional)
缺省情况下会通过internet从online Quay.io仓库来拉取OCP安装所需镜像,由于严重依赖互联网接入质量,在安装过程中可能会导致安装超时,如果网络环境不理想,推荐本地离线安装,此时需要构建本地镜像仓库(本文以Harbor为例),本地私有Harbor仓库对OCP 镜像的获取也有多种方式,本章将以相对简单的同步方式来介绍OCP 核心镜像在线同步至私有Harbor仓库的操作步骤。当然,如果Harbor仓库所在VM本身无法访问互联网,也可以选择离线下载后再上传的方式来完成(Harbor证书生成请参阅附录部分)。
加载Harbor的根证书ca.crt至Operator VM
root@harbor:~# scp ca.crt root@192.168.60.31:/root #192.168.60.31为OperatorVM 的IP地址 [root@Operator ~]# cp ca.crt /etc/pki/ca-trust/source/anchors/ca.crt [root@Operator ~]# update-ca-trust extract [root@Operator ~]# systemctl restart docker |
验证登录情况
[root@Operator ~]# docker login harbor.vmwlab.net |
|
添加私有仓库访问凭证至访问凭证文件(pull-secret.json)
# 转换pull-secret为json格式
[root@Operator ~]# jq . pull-secret > pull-secret.json |
# 获取私有仓库登录密码的base64格式,用于镜像同步时使用pull-secret.json文件来登录私有仓库
[root@Operator ~]# echo -n admin:xxxxxxxxx | base64 |
# 修改pull-secret.json文件内容,加入私有仓库访问凭证, auth部分为上步骤中密码的Base64字符
[root@Operator ~]# vi pull-secret.json |
|
OCP 镜像同步
# 定义变量,便于运行oc adm cli
# 4.10.26 [root@Operator ~]# OCP_VERSION=$(oc version -o json | jq -r .releaseClientVersion) # 4.10.26-x86_64 [root@Operator ~]# OCP_RELEASE=$OCP_VERSION-$(arch) # 4 [root@Operator ~]# OCP_MAJOR=${OCP_VERSION%%.*} # Local Repository URL [root@Operator ~]# LOCAL_REGISTRY=’harbor.vmwlab.net’ # Project in Harbor Repository [root@Operator ~]# LOCAL_REPOSITORY=”ocp/ocp4.10″ [root@Operator ~]# PRODUCT_REPO=’openshift-release-dev’ [root@Operator ~]# RELEASE_NAME=”ocp-release” [root@Operator ~]# LOCAL_SECRET_JSON=’pull-secret.json’ |
# 新建Harbor项目ocp
# 开始image同步,由quay.io同步到harbor.vmwlab.net
[root@Operator ~]# 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} \ –insecure –v=4 |
# 同步完成后记录末尾的提示信息
To use the new mirrored repository to install, add the following section to the install-config.yaml: imageContentSources: – mirrors: – harbor.vmwlab.net/ocp/ocp4.10 source: quay.io/openshift-release-dev/ocp-release – mirrors: – harbor.vmwlab.net/ocp/ocp4.10 source: quay.io/openshift-release-dev/ocp-v4.0-art-dev To use the new mirrored repository for upgrades, use the following to create an ImageContentSourcePolicy: apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: name: example spec: repositoryDigestMirrors: – mirrors: – harbor.vmwlab.net/ocp/ocp4.10 source: quay.io/openshift-release-dev/ocp-release – mirrors: – harbor.vmwlab.net/ocp/ocp4.10 source: quay.io/openshift-release-dev/ocp-v4.0-art-dev |
Antrea 镜像准备
# 镜像下载
https://customerconnect.vmware.com/en/downloads/details?downloadGroup=ANT-150-LE&productId=1226&rPId=93382
# 镜像上传至本地私有harbor仓库
[root@Operator ~]# docker load -i antrea-operator-v1.7.1_vmware.tar.gz [root@Operator ~]# docker load -i antrea-ubi-v1.7.1_vmware.1.tar.gz |
[root@Operator ~]# docker tag localhost:5000/vmware.io/antrea/antrea-operator:v1.7.1_vmware harbor.vmwlab.net/ocp/antrea1.7.1/antrea-operator:v1.7.1 |
[root@Operator ~]# docker push harbor.vmwlab.net/ocp/antrea1.7.1/antrea-operator:v1.7.1 |
[root@Operator ~]# docker tag localhost:5000/vmware.io/antrea/antrea-ubi:v1.7.1_vmware.2 harbor.vmwlab.net/ocp/antrea1.7.1/antrea-ubi:v1.7.1 [root@Operator ~]# docker push harbor.vmwlab.net/ocp/antrea1.7.1/antrea-ubi:v1.7.1 |
[root@Operator ~]# docker load -i interworking-ubi-0.7.0.tar [root@Operator ~]# docker tag vmware.io/antrea/interworking:0.7.0 harbor.vmwlab.net/ocp/antrea1.7.1/interworking:0.7.0 [root@Operator ~]# docker push harbor.vmwlab.net/ocp/antrea1.7.1/interworking:0.7.0 |
如需测试Antrea的IDPS功能,IDPS 镜像也需上传,操作方式相同,在此不做赘述。
- antrea-suricata-v1.7.1_vmware.1.tar.gz
- antrea-idps-v1.7.1_vmware.1.tar.gz
注意:本文使用离线下载方式,当然也可以直接在线拉取image,link如下所示: |
|
AKO镜像准备
# 镜像下载
https://portal.avipulse.vmware.com/software/additional-tools
# 解压ako安装包
[root@Operator ~]# tar -zxvf ako-1.7.2.tar.gz |
# 镜像上传至本地私有harbor仓库
[root@Operator ~]# docker load -i ako-1.7.2-docker.tar.gz |
[root@Operator ~]# docker tag projects.registry.vmware.com/ako/ako harbor.vmwlab.net/ocp/ako1.7.2/ako |
[root@Operator ~]# docker push harbor.vmwlab.net/ocp/ako1.7.2/ako |