Owenliu
作者Owenliu·2020-07-14 16:03
售前工程师·浪潮商用机器有限公司

如何在PowerVC上快速的搭建一套OpenShift 4 容器云环境

字数 5949阅读 5473评论 0赞 2

OpenShift 正在成为最流行的企业级开源 PaaS 平台。 OpenShift 底层以 CRI-O 等作为容器引擎驱动,以 K8s 作为容器编排引擎组件,并提供了开发语言,中间件, DevOps 自动化流程工具,网络与存储的管理,以及对 Service Mesh 、 Serverless 等前沿技术的支持。 Inspur Power Systems 产品家族采用最新的 POWER9 处理器 , 面向关键应用场景深度优化,灵活资源调度 , 优化系统整合,原生云化保障弹性架构,丰富的产品平台应对复杂应用场景。本文我们结合 K1 POWER 和 K1 POWER Linux 服务器,分别展示在 K1 POWER 上基于 PowerVC 管理的 POWER VM 虚拟机上搭建 Openshift 集群

在 K1 POWER 上 Openshift 在 PowerVC 上的自动化离线部署

PowerVC (Power Virtualization Center ) 是 Power 上基于 OpenStack 技术的高级 IaaS 云解决方案,旨在简化 Power Systems 环境资源虚拟化和高可用的管理 , 具有友好的 GUI 管理界面与丰富的 REST API 服务。通过使用 Terraform 我们可以借助 PowerVC 自动创建 PowerVM 虚拟机和自动安装 Openshift 集群。

部署架构图

节点列表

Node (VMs on KVM)RoleSpec
Work运行Terraform的ocp4-upi-powervm-4.3自动化脚本的机器CPU 1 core, memory 2GB, disk 40GB
PowerVCPowerVC管理节点CPU 2 cores, memory 10 GB, disk 100GB
PowerVM主机一台K1 POWER主机 ,安装PowerVM虚拟化
Mirror Registry克隆openshift4.3镜像的镜像库CPU 2 cores, memory 4 GB, disk 100GB

注: bastion,bootstrap,master,work 节点均由 terraform 通过 powervc 自动创建和安装。

部署过程

1 准备 Mirror Registry

1.1 创建 mirror registry 的认证文件

mkdir -p /opt/registry/{auth,certs,data}
cd /opt/registry/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key -x509 -days 4096 -out /opt/registry/certs/domain.crt

注 common name 必须和 hostname 一致 (mirror registry).

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]: Inspur
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:bastion.ocp.inspur.com
Email Address []:

1.2 更新 Linux 系统证书

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

添加本地镜像库用户名和密码 . (user=reguser, password=reguser in this example)

htpasswd -bBc /opt/registry/auth/htpasswd reguser reguser

1.3 创建 镜像容器

podman run --name mirror-registry -p 5000:5000 -v /opt/registry/data:/var/lib/registry:z -v /opt/registry/auth:/auth:z -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /opt/registry/certs:/certs:z -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -d docker.io/ppc64le/registry:2

1.4 检查容器是否正常

# curl -u reguser:reguser -k https://bastion.ocp.inspur.com:5000/v2/_catalog 
{"repositories":[]}

1.5 下载 pull_sercet 文件

登录 cloud.redhat.com 使用账号和密码登录 , 下载 openshift 的镜像文件所需的 pull_sercet 文件

1.6 创建 mirror registry 的 auth key

echo -n 'reguser:reguser' | base64 -w0
cmVndXNlcjpyZWd1c2Vy

加入本地镜像库的 auth key 到 the pull-secret.yaml

  "auths": {
...
    " bastion.ocp.inspur.com:5000": {
      "auth": "cmVndXNlcjpyZWd1c2Vy",
    }
…

1.7 下载镜像到本地镜像库

export BUILDNUMBER=4.3.22-ppc64le
echo ${BUILDNUMBER}
export OCP_RELEASE=${BUILDNUMBER}
export LOCAL_REG='bastion.ocp.inspur.com:5000'
export LOCAL_REPO='ocp4/openshift4'
export UPSTREAM_REPO='openshift-release-dev'
export LOCAL_SECRET_JSON="/home/ocp4.3/pull-secret.json"
export OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE=${LOCAL_REG}/${LOCAL_REPO}:${OCP_RELEASE}
export RELEASE_NAME="ocp-release"


oc adm release mirror -a ${LOCAL_SECRET_JSON} \\
--from=quay.io/${UPSTREAM_REPO}/${RELEASE_NAME}:${OCP_RELEASE} \\
--to-release-image=${LOCAL_REG}/${LOCAL_REPO}:${OCP_RELEASE} \\
--to=${LOCAL_REG}/${LOCAL_REPO} 

2 PowerVC 环境准备

2.1 准备 PowerVC 基础

PowerVC 的主机,存储和网络。操作指南可以参考 IBM PowerVC 官网 https://www.ibm.com/support/knowledgecenter/zh/SSVSPA_1.4.4/com.ibm.powervc.cloud.help.doc/powervc_cloud_installing.html

2.2 创建 RHCOS 的镜像文件

操作步骤请参考 https://github.com/ocp-power-automation/ocp4-upi-powervm/blob/4.3/coreos-image-creation.md

3 工作节点准备

3.1 工作节点安装 git, terraform

这个节点可以是 x86 的也可以是 power 的。( Power 架构需要手工编译 terraform 源码,才能执行 terrafrom 脚本)

4 安装步骤

4.1 下载 ocp4-upi-powervm 脚本

git clone https://github.com/ocp-power-automation/ocp4-upi-powervm.git
cd ocp4_upi_powervm

4.2 配置参数

cd ocp4_upi_powervm
vi var.tfvars

主要修改的参数

openstack_availability_zone对应powervc中的主机名称
network_name对应PowerVC中的网络名称
scg_id对应PowerVC中的存储器连接组ID
instance_type对应PowerVC中的计算模板名称
image_id镜像ID
release_image_override使用本地镜像仓库时填写
pull_secret_file 使用本地镜像仓库时需包含仓库认证信息使用本地镜像仓库时需包含仓库认证信息

4.3 配置 install-config.tpl

使用本地镜像仓库同时需要更新 modules/2_preinstall/templates/install-config.tpl/ 的 pullSecret 里加入 additionalTrustBundle 部分 , 内容和本地镜像库的认证文件 /opt/registry/certs/domain.crt 一致

注意 : additionalTrustBundle 证书那里需要空两格。就是 -----BEGIN CERTIFICATE----- 开始下面的内容 如下

4.4 配置 dns-server.tf

如果 OCP 集群的 hostname 和本地镜像库在同一个域名之下这一步可以忽略,如果不在同一域名下需要修改 ocp4-upi-powervm-4.3/modules/5_dns_haproxy/dns-server.tf 的文件,添加如下配置

provisioner "file" {
        content     = templatefile("${path.module}/templates/inspur-zone.db", local.named_cfg)
        destination = "${local.script_cfg.sourcedir}/inspur-zone.db"
    }

templates 目录下加了一个 inspur-zone.db 配置文件

; Zone file for the cluster's domain.
;
$TTL 12H
@                      IN   SOA   ns hostmaster (
                                  ${zone_serial_number}              ; serial
                                  1H                      ; refresh (1 hour)
                                  15M                     ; retry   (15 minutes)
                                  1W                      ; expiry  (1 week)
                                  1H )                    ; nx = nxdomain RRL (1 hour)
                       IN   NS    ns
ns                     IN   A     ${external_zone_dns_ip}
;
; A records for the API as referenced externally and by cluster nodes. Both point to
; the KEG's load balancer, using either its external address or cluster-internal
; address as the case may be.
;
bastion    IN   A     172.16.104.37

在 named.conf 添加

zone "ocp.inspur.com" IN {
    type master;
    file "/etc/named/zones/inspur-zone.db";
};

示例

更多的参数说明请参考 github 说明文件 ( https://github.com/ocp-power-automation/ocp4-upi-powervm/tree/4.3 )

4.5 开始安装

terraform init
terraform apply -var-file var.tfvars

安装过程如下图:

5 过程监控:

在安装过程中,通过 powervc 的界面可以看见 vm 会自动创建,然后登陆 bootstrap 可以监控 openshift 的安装状态。在全部安装完成后我们可以看到如下图界面

登陆 bastion 节点运行命令

6 Openshift Web 访问

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广