戴志强1
Published on 2025-12-19 / 45 Visits
0
0

自动化部署实施案例

自动化部署实施案例

1.实施案例一: 某集团需要安装测试用的k8s集群环境

1. 1部署机器规划

目标:

  1. 部署docker镜像仓库;
  2. 部署nfs服务器;
  3. 部署imom和华为mbm数据库;
  4. 部署k8s集群,并安装kubesphere工作面板;

该集团提供了一台32核, 64GB内存, 2T 的物理机器。在使用自动化脚本部署前,需要使用virtualbox 等虚拟化工具创建虚拟机,将该物理机器划分成以下8个虚拟工作节点,并安装好centos 7.9系统,配置好ip地址。

宿主机名称 IP 用途 宿主机机器配置
host_deploy 192.168.1.104 部署机 4核, 1GB
host_broker_nfs 192.168.1.101 nfs服务器 1核, 0.5GB
host_broker_mysql 192.168.1.102 imom数据库 4核, 4GB
host_broker_mysql_hw 192.168.1.103 华为mbm数据库 4核, 4GB
host_broker_docker_registry 192.168.1.104 docker镜像仓库 4核, 1GB
host_kk 192.168.1.104 kk部署机 4核, 1GB
k8s_master 192.168.1.111 k8s master节点 8核, 4GB
k8s_node1 192.168.1.113 k8s 工作节点1 16核, 24GB
k8s_node2 192.168.1.114 k8s 工作节点2 16核, 24GB

CPU, 内存划分配置举例:

image-gDqG.png

image-lkMw.png

其中host_deploy, host_broker_docker_registry, host_kk 使用同一台机器, 既做部署机器,要作为docker的镜像仓库使用。

1.2 修改配置文件

将自动化安装包使用SSH客户端工具上传到 host_deploy(IP:192.168.1.104) 上/root 目录下,执行解压:

tar -xvf ansible_root20251105.tar.gz

修改 /root/ansible_root/host.ini 文件,按《1. 1部署机器规划》上的主机角色分配,配置好host.ini文件。

[root@ansible ansible_root]# cat host.ini
[host_broker_nfs]
192.168.1.101

[host_broker_mysql]
192.168.1.102

[host_broker_mysql_hw]
192.168.1.103

[host_broker_docker_registry]
192.168.1.104

[host_broker_nexus3]


[host_kk]
192.168.1.104

[k8s_master]
192.168.1.111 ansible_user=root ansible_password=123456


[k8s_node]
192.168.1.113 ansible_user=root ansible_password=123456
192.168.1.114 ansible_user=root ansible_password=123456

[host_monitor]
192.168.1.101


[all:vars]
ansible_user=root
ansible_ssh_pass=123456

此外也需要配置/root/ansible_root/vars/host.yml 文件,配置好mysql, docker镜像仓库, nfs 的地址以及账号信息。

[root@ansible vars]# cat /root/ansible_root/vars/host.yml
# 主机环境 -> kubesphere部署完成
mysql_user: "root"
mysql_password: "MYSQL_PASSWORD_123456"
docker_registry_address: "192.168.1.104:5000"
nfs_address: "192.168.1.101"
kube_cluster_name: "sie-kubesphere"

依次ping通以下宿主机,确保网络可达。

192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.111
192.168.1.113
192.168.1.114

准备工作完毕后,准备开始下个阶段的安装流程。

1.3 开始自动化部署

1.3.1 所有宿主机离线安装基础软件与依赖库

在 host_deploy(IP:192.168.1.104) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh host all

同时启动另外一个ssh终端连接host_deploy(IP:192.168.1.104) 宿主机, 进入 /root/ansible_root 目录下执行以下监控命令:

./monitor.sh

执行成功后终端输出结果如下:

image-SkhJ.png

在monitor.sh 的ssh窗口中,会实时出现自动化脚本执行过程中,输出的日志信息:

image-pyxb.png

该日志详细地描述了任务执行过程中的细节。

1.3.2 离线安装宿主机中间件(mysql, mysql_hw, nfs, docker镜像仓库)

在 host_deploy(IP:192.168.1.104) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh host_broker all

image-gjzc.png

同时启动另外一个ssh终端连接host_deploy(IP:192.168.1.104) 宿主机, 进入 /root/ansible_root 目录下执行以下监控命令:

./monitor.sh

image-tAfv.png

当auto.sh命令执行完毕后,可以检查docker镜像仓库,mysql 等已可正常访问:

image-tdio.png

image-eqKg.png

1.3.3 离线安装k8s集群

在 host_deploy(IP:192.168.1.104) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh k8s all

image-gSOD.png

同时启动另外一个ssh终端连接host_deploy(IP:192.168.1.104) 宿主机, 进入 /root/ansible_root 目录下执行以下监控命令:

./monitor.sh

image-jjId.png

image-NDcW.png

当auto.sh命令执行完毕后,根据终端上输出的登录地址,账号密码,可以正常进入kubesphere面板来管理k8s集群。

image-bIjE.png

至此,所有部署目标已完成。

2.实施案例二: 某集团需要在现有的k8s集群上安装imom应用

2. 1部署机器规划

目标:

  1. 在已有的k8s集群上安装imom应用依赖的中间件;
  2. 在已有的k8s集群上安装imom应用;

该集团要求在原有的k8s集群上安装应用,无需重新安装k8s集群;另外提供一台已安装好mysq的服务器(IP: 192.168.1.102) 作为imom数据库使用.

宿主机名称 IP 用途 宿主机机器配置
host_broker_mysql 192.168.1.102 imom数据库 16核, 32GB
k8s_master 192.168.1.111 k8s master节点 8核, 16GB
host_deploy 192.168.1.111 部署机器 8核, 16GB
host_broker_docker_registry 192.168.1.104 镜像仓库 未知

因为无需部署k8s集群, 因此仅需要专注在现有k8s集群上部署imom应用即可。这里使用k8s_master作为部署机器。

1.2 修改配置文件

将自动化安装包使用SSH客户端工具上传到 host_deploy(IP:192.168.1.111) 上/root 目录下,执行解压:

tar -xvf ansible_root20251105.tar.gz

修改 /root/ansible_root/host.ini 文件,按《2.1. 部署机器规划》上的主机角色分配,配置好host.ini文件。

[root@ansible ansible_root]# cat host.ini
[host_broker_nfs]


[host_broker_mysql]


[host_broker_mysql_hw]


[host_broker_docker_registry]


[host_broker_nexus3]


[host_kk]


[k8s_master]
192.168.1.111 ansible_user=root ansible_password=123456


[k8s_node]

[host_monitor]
192.168.1.101


[all:vars]
ansible_user=root
ansible_ssh_pass=123456

配置/root/ansible_root/vars/host.yml 文件, 配置好 docker_registry_address 的地址,用于上传imom的镜像到该镜像仓库。

[root@ansible ansible_root]# cat vars/host.yml
# 主机环境 -> kubesphere部署完成
mysql_user: ""
mysql_password: ""
docker_registry_address: "192.168.1.104:5000"
nfs_address: ""
nexus3_address: ""
kube_cluster_name: "sie-kubesphere"

此外也需要配置/root/ansible_root/vars/k8s_app.yml 文件,配置好k8s应用的相关配置。

[root@ansible vars]# cat /root/ansible_root/vars/k8s_app.yml
# k8s app, 中间件安装环境配置
imom_namespace: "imom"
imom_common_namespace: "common"
hw_namespace: "mbm"
image_pull_secrets: "default-secret"
default_storage_class: "nfs-client"
external_base_url: "http://192.168.1.101:32555"

enable_imom_apps: "admin-gateway,em-tools-biz,imom-flow-biz,imom-mpm,kernel-biz,led-mes-biz,les-biz,mdm-biz,mes-report-biz,mom-eam-biz,mom-public-biz,qms-fim-biz,qms-process-control-biz,qms-spc-biz,qms-spc-cfg-biz,smt-mes-biz,imom-les-ui,imom-mes-ui,imom-mpm-ui,imom-public-ui,imom-qms-ui"
skip_imom_apps: "imom-flow-biz,mpm-biz,kernel-biz,led-mes-biz,les-biz,mdm-biz,mes-report-biz,mom-eam-biz,mom-public-biz,qms-fim-biz,qms-process-control-biz,qms-spc-biz,qms-spc-cfg-biz,smt-mes-biz"
docker_registry_address: "192.168.1.104:5000"
nfs_address: "192.168.1.102"
nexus3_address: ""

mysql_address: "192.168.1.102"
mysql_user: "root"
mysql_password: "MYSQL_PASSWORD_123456"

redis_address: "sie-redis-broker.{{ imom_common_namespace }}"
redis_master_address: "sie-redis-sentinel-master-svc.{{ imom_common_namespace }}"
redis_password: "Dme123456"
redis_mode: "SENTINEL"

minio_address: "sie-minio-broker.{{ imom_common_namespace }}"
minio_user: "admin"
minio_password: "Minio123456"

powerjob_address: "powerjob-svc.{{ imom_common_namespace }}"
# idme
idme_address: "http://192.168.1.99:8003"
idme_sub_app_id: "rdm_e3231ab62e9d4771bd0df793f62d2282_app"
# hw mbm
hw_mbm_address: "http://mbm-api-gateway.{{ hw_namespace }}:9090"

# ----------- huawei  config -------- #
enable_mbm_apps: "api-gateway-service,em-service,label-service,les-service,mdm-service,mom-web,msm-service,orche-web,qm-service,sfc-service,wom-service,mpdm-service"
hw_skip_mbm_apps: ""
hw_tenant_id: "067cfa58c8404a908780bda7e934e1b1"
hw_org_name: "某集群组织名称"
hw_redis_address: "redis-cluster-service.{{ hw_namespace }}"
hw_redis_password: "Rdis123456"
hw_redis_mode: "CLUSTER"

hw_mysql_address: "192.168.1.102"
hw_mysql_user: "root"
hw_mysql_password: "MYSQL_PASSWORD_123456"

hw_minio_address: "sie-minio-broker.{{ imom_common_namespace }}"
hw_minio_user: "admin"
hw_minio_password: "Minio123456"
# 修复华为qm flyway bug
hw_gen_qm_xdm_db: "1"

依次ping通以下宿主机,确保网络可达。

192.168.1.102
192.168.1.104
192.168.1.111

准备工作完毕后,准备开始下个阶段的安装流程。

1.3 开始自动化部署

1.3.1 推送imom镜像到镜像仓库

在 host_deploy(IP:192.168.1.111) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh k8s docker_image

执行成功后可在镜像仓库上看到上传的imom镜像:

image-srqN.png

1.3.2 部署imom中间件

在 host_deploy(IP:192.168.1.111) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh k8s_app_broker all

执行成功后, 在master机器上,使用kubectl 查看相关的imom中间件已就绪。

[root@master1 ~]# kubectl  get  deployments  -n common
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
haproxy-redis      1/1     1            1           16d
kkfileview         1/1     1            1           16d
powerjob-server    1/1     1            1           16d
sie-minio-broker   1/1     1            1           16d

[root@master1 ~]# kubectl  get statefulsets  -n common
NAME                    READY   AGE
sie-redis-broker-node   3/3     16d

1.3.3 部署imom 应用

在 host_deploy(IP:192.168.1.111) 宿主机上的/root/ansible_root 目录下执行以下命令:

./auto.sh k8s_app all

执行成功后, 在master机器上,使用kubectl 查看相关的imom已就绪。

[root@master1 ~]# kubectl  get  deployments  -n  imom
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
imom-eam               1/1     1            1           9d
imom-flow              1/1     1            1           13d
imom-gateway           1/1     1            1           9d
imom-kernel            1/1     1            1           11d
imom-les               1/1     1            1           13d
imom-les-ui            1/1     1            1           16d
imom-mes-public        1/1     1            1           9d
imom-mes-ui            1/1     1            1           16d
imom-mpm               1/1     1            1           9d
imom-mpm-ui            1/1     1            1           16d
imom-process-control   1/1     1            1           13d
imom-public-ui         1/1     1            1           16d
imom-qms-ui            1/1     1            1           16d
imom-smt               1/1     1            1           13d
imom-spc               1/1     1            1           13d
imom-spc-config        1/1     1            1           13d
imom-tools             1/1     1            1           9d

至此,所有部署目标已完成。


Comment