【原创】OCP&VMware网络与安全集成解决方案安装部署向导-01-方法概要及环境准备

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),整个流程如下图所示:

Diagram Description automatically generated

引导并安装OCP集群涉及以下步骤:

  1. Bootstrap node启动并开始托管控制平面节点启动所需的远程资源。 (如果自己配置基础架构,则需要手动干预)
  2. bootstrap node启动一个单节点 etcd 集群和一个临时的 Kubernetes 控制平面。
  3. Controller node从bootstrap node获取远程资源并完成引导。(如果自己配置基础架构,则需要手动干预)
  4. bootstrap node上的临时控制平面将生产控制平面调度到Controller node上。
  5. Cluster Version Operator (CVO) 上线并安装 etcd Operator。 etcd Operator 在所有Controller node上扩展 etcd。
  6. 临时控制平面关闭并将控制权交给生产控制平面。
  7. bootstrap node将 OpenShift Container Platform 组件注入生产控制平面。
  8. 安装程序关闭bootstrap node。 (如果自己配置基础架构,则需要手动干预)
  9. 控制平面设置Compute Node。
  10. 控制平面以一组 Operator 的形式安装附加服务。

这个引导过程的结果是一个正在运行的 OpenShift Container Platform 集群。然后集群下载并配置日常操作所需的剩余组件,包括在支持的环境中创建Compute Node。

OCP安装资源要求(Minimum)

Table Description automatically generated

注意:

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

测试拓扑

Timeline Description automatically generated

网络规划

# 基础环境部分

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

Graphical user interface, text, application Description automatically generated

本文以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

Text Description automatically generated

添加私有仓库访问凭证至访问凭证文件(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

A screenshot of a computer Description automatically generated with medium confidence

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

A screenshot of a computer Description automatically generated with medium confidence

# 开始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

Graphical user interface, text, application, email Description automatically generated

# 镜像上传至本地私有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如下所示:

  • Container images on VMware distribution Harbor:

    • Antrea images:

      • projects.registry.vmware.com/antreainterworking/antrea-standard-debian:v1.7.1_vmware.1
      • projects.registry.vmware.com/antreainterworking/antrea-advanced-debian:v1.7.1_vmware.1
      • projects.registry.vmware.com/antreainterworking/antrea-ubi:v1.7.1_vmware.1
    • Antrea multi-cluster controller images:

      • projects.registry.vmware.com/antreainterworking/antrea-mc-controller-debian:v1.7.1_vmware.1
      • projects.registry.vmware.com/antreainterworking/antrea-mc-controller-ubi:v1.7.1_vmware.1
    • Antrea flow-aggregator images:

      • projects.registry.vmware.com/antreainterworking/flow-aggregator-debian:v1.7.1_vmware.1
      • projects.registry.vmware.com/antreainterworking/flow-aggregator-ubi:v1.7.1_vmware.1
    • Antrea IDPS images:

      • IDPS controller and agent

        • projects.registry.vmware.com/antreainterworking/idps-debian:v1.7.1_vmware.1
        • projects.registry.vmware.com/antreainterworking/idps-ubi:v1.7.1_vmware.1
      • Suricata

        • projects.registry.vmware.com/antreainterworking/suricata:v1.7.1_vmware.1
    • Operator image:

      • projects.registry.vmware.com/antreainterworking/antrea-operator:v1.7.1_vmware
    • Antrea-NSX images:

      • projects.registry.vmware.com/antreainterworking/interworking-debian:0.7.0
      • projects.registry.vmware.com/antreainterworking/interworking-ubuntu:0.7.0
      • projects.registry.vmware.com/antreainterworking/interworking-photon:0.7.0
      • projects.registry.vmware.com/antreainterworking/interworking-ubi:0.7.0

AKO镜像准备

# 镜像下载

https://portal.avipulse.vmware.com/software/additional-tools

Graphical user interface, text, application Description automatically generated

# 解压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

Harbor仓库检查

A screenshot of a computer Description automatically generated with medium confidence

Leave a Reply