在现有的华为k8s集群上部署(创维现场UAT部署记录)
1. 梳理现有的k8s资源
从stage-master-0001 拷贝.kube/config 文件到isc-mbm-worker-004工作机器下,此后使用 isc-mbm-worker-004 作为imom部署的主要工作机器。
k8s节点:
kubectl get nodes -o wide

k8s默认存储类(没有):
[root@isc-mbm-worker-004 ~]# kubectl get sc
[root@isc-mbm-worker-004 ~]#
数据库:172.31.20.101:30052
MBM平台:http://172.31.20.10:30787
镜像仓库:172.31.20.13:5000
isc-mbm-worker-004机器IP:172.31.20.13
华为mbm命名空间: mbm
2. 部署目标
- 在现有的k8s集群上部署imom应用;
- 跟华为mbm共用同一个数据库;
- imom接入现有的mbm平台;
部署清单如下:
| 部署清单 | 开放端口 | 备注 |
|---|---|---|
| kubepi k8s管理面板 | 10070 | 图形化k8s管理 |
| nfs-client存储类 | k8s默认存储类 | |
| docker registry UI界面 | 5001 | 镜像仓库界面 |
| imom相关中间件 | 32559,32560,32561,32562 | redis-sentinel, kkfileview, powerjob, minio |
| imom服务 | 32556,32557,32558 | kernel, public, aps, otb等 |
3. 开始部署
3.1 导入本地镜像
按以下的方式,分别导入 images, broker_images 内的镜像。
vi push_images.sh
# 修改目标镜像仓库地址
export ANSIBLE_DOCKER_REGISTRY_ADDRESS="172.31.20.13:5000"
# 导入本地镜像到当前镜像仓库
./push_images.sh
3.2 安装kubepi
mkdir -p kubepi/kubepi-data
cd kubepi
docker run --name kubepi -d -p 10070:80 -v kubepi-data:/var/lib/kubepi 172.31.20.103:5000/common/1panel/kubepi:v1.9.0
浏览器访问: http://172.31.20.13:10070, 导入当前的k8s集群配置, 文件使用 stage-master-0001 拷贝.kube/config 文件内容。

进入集群界面:

3.3 安装镜像仓库UI
docker run -d \
--name registry-ui \
--restart always \
-p 5001:80 \
-e SINGLE_REGISTRY=true \
-e REGISTRY_TITLE="Docker Registry UI" \
-e DELETE_IMAGES=true \
-e SHOW_CONTENT_DIGEST=true \
-e NGINX_PROXY_PASS_URL="http://172.31.20.13:5000" \
-e SHOW_CATALOG_NB_TAGS=true \
-e CATALOG_MIN_BRANCHES=1 \
-e CATALOG_MAX_BRANCHES=1 \
-e TAGLIST_PAGE_SIZE=100 \
-e REGISTRY_SECURED=false \
-e CATALOG_ELEMENTS_LIMIT=1000 \
docker.m.daocloud.io/joxit/docker-registry-ui:latest
浏览器访问: http://172.31.20.13:5001

3.4 安装nfs-client 存储类
客户提供了nfs服务连接地址: 172.29.251.1:/imom
使用自动化工程部署nfs_client 存储类
# 1. 将 ansible_root 放置在/root 目录下, 修改k8s_app.yml
# vi ansible_root/vars/k8s_app.yml
# 修改配置
nfs_address: "172.29.251.1"
# 修改sie-nfs-client-values.yaml 文件
# vi sie-nfs-client-values.yaml
# 修改配置
nfs:
server: __IMOM_NFS_ADDRESS
path: /imom
# 修改host.ini
[k8s_master]
172.31.20.13 ansible_user=root ansible_password=实际的密码
执行以下的命令实现自动化部署:
./auto.sh k8s_app_broker nfs_client
安装完毕后使用以下的命令查看存储类是否已经安装好:
[root@isc-mbm-worker-004 ~]# kubectl get sc
[root@isc-mbm-worker-004 ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client (default) cluster.local/nfs-client-nfs-client-provisioner Delete Immediate false 2y362d
3.5 安装imom中间件
由于华为部署的数据库默认账号不具备远程连接的功能,因此需要自行创建数据库账号。
命令如下:
CREATE USER 'sie'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'sie'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
修改 ansible_root/vars/k8s_app.yml 配置文件
imom_namespace: "imom"
imom_common_namespace: "common"
imom_elk_namespace: "elk"
imom_disable_elk: "1"
hw_namespace: "mbm"
mysql_address: "172.31.20.101"
mysql_user: "sie"
mysql_password: "your_password"
# 以下配置根据华为部署的gateway名称确定
hw_mbm_address: "http://api-gateway.{{ hw_namespace }}:9090"
# 以下配置登录华为的mbm平台,查看浏览器应用信息确定
hw_tenant_id: "XXX待确定"
由于自动化工程不支持更改数据库的端口,所以需要将所有的3306端口都改成30052
find ansible/packages -name "*.sh" | xargs grep -rn "3306"
find ansible/packages -name "biz-conf.yaml" | xargs grep -rn "3306"
# 手工更改所有的3306端口都改成30052
分别执行以下的命令安装imom中间件:
./auto.sh k8s_app_broker kkfileview
./auto.sh k8s_app_broker minio
./auto.sh k8s_app_broker powerjob
./auto.sh k8s_app_broker redis
3.6 安装imom服务
分别执行以下的命令安装imom中间件:
./auto.sh k8s_app all
3.7 验证imom服务
查看imom deployment 的工作状态

如果工作负载没有成功启动,查看对应的日志定位问题:

修改对应的配置文件:

并重启工作负载:

3.8 更新imom服务
如果需要升级imom服务, 可按照以下的方式进行。
找一台能访问到 http://172.31.20.13:5000 的本地linux机器(也可本地安装linux虚拟机), 执行以下的命令上传镜像:
docker load -i 你的镜像文件.tar
docker tag XXXX:/镜像名称:标签 172.31.20.13:5000/镜像名称:标签
docker push 172.31.20.13:5000/镜像名称:标签
更新工作负载的容器镜像:

更改为新的容器镜像地址:

等待工作负载启动成功即可。
3.9 添加mbm的转发配置,关联imom
修改mbm命名空间下的 orche-web-nginx-config nginx.conf 配置。

在后面新增以下的路由转发:
location /sieapi {
proxy_pass http://imom-gateway.imom;
rewrite ^/sieapi/(.*)$ /$1 break;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /kkfileview/preview/ {
proxy_pass http://kkfileview-svc.common:8012/;
}
location /kkfileview/ {
proxy_pass http://kkfileview-svc.common:8012/;
}
location /imom-public/{
proxy_pass http://imom-public-ui.imom/;
}
location /imom-skyworth-aps/{
proxy_pass http://imom-skyworth-aps-ui.imom/;
}
location /imom-otb/{
proxy_pass http://imom-otb-ui.imom/;
}
location /imom-les/{
proxy_pass http://imom-les-ui.imom/;
}
之后重启华为的mbm-orche-web服务

4. 业务配置
查看《种子数据配置》 一文初始化种子数据
5. 中间件开放端口,方便本地调试
以powerjob为例, 开放nodeport端口

将type 改为NodePort, 新增nodePort字段

让客户在防火墙配置上开放对应的端口。
按此方法开发其他的中间件端口。
开放的服务访问地址:
1、imom_gateway http://172.31.20.13:32556
2、imom_kernel http://172.31.20.13:32557
3、imom_public_ui,http://172.31.20.13:32558
4、redis, 172.31.20.13:32559
5、MINIO,http://172.31.20.13:32560
6、powerjob,http://172.31.20.13:32561
7、hw_openapi,http://172.31.20.13:32562
8、imom_devops,http://172.31.20.13:32563
9、docker registry,http://172.31.20.13:5001