当前位置:   article > 正文

官方必读!脚本附赠技术教程系列:麒麟天御安全域管平台V4.0.0服务端应用部署(4)

官方必读!脚本附赠技术教程系列:麒麟天御安全域管平台V4.0.0服务端应用部署(4)

1.部署须知

1.1.前置条件

  • 需按以下顺序完成全部部署工作

需要完成麒麟云底座、麒麟云基础组件的部署。

  1. 部署麒麟云底座:k8s基础集群。参考“01-麒麟云底座部署文档(v3.3版本)”
  2. 部署麒麟云基础组件:MySQL、Redis、Kylinsearch数据库,共享存储等。参考“02-麒麟云基础组件部署文档”。
  3. 部署应用:部署域控系统,即此文档步骤。需要完成前两步底座和基础组件的部署。
  4. 配置应用:业务类配置。参考“04-麒麟天御安全域管平台V4.0应用配置文档”。
  • 需要开通域管平台所需端口,详见“麒麟天御安全域管平台端口申请.xlsx”。

1.2.所需资源

部署应用组件时需要用到以下资源,这些资源通常在进行基础组件部署时就已准备好。(“麒麟云基础组件操作文档”)

  • MySQL数据库地址、端口、账号

需要准备mysql数据库,确认客户方是否能提供,如不能提供可以使用集群自的。

  • 统一网关域名及虚IP
  1. 需要申请域管平台使用的域名,通常根据客户方习惯设定,例如kcm.sdc.icbc。
  2. 需要申请虚IP绑定到三个master节点,用于外部请求
  • 确认服务器架构

执行uname -a,如果结果为amd64或x86_64,代表是amd64架构,如果结果为aarch64或arm64,代表是arm64架构。

1.3.部署物料

上传应用组件部署物料到master1节点。应用组件的部署物料是名称为 container-solution-[项目]-[架构]-[日期]-[时间].iso 格式的ISO文件。

2.部署准备

注:所有部署步骤都在master1节点上执行。

2.1.展开应用镜像

在部署节点(选用master1节点)执行镜像展开操作。

# 将ISO镜像拷贝到部署节点,挂载至一个空目录,如 /mnt/solution, 以镜像名称

container-solution--amd64-231012-163246.iso为例:

$ mkdir -p /mnt/solution
$ mount container-solution--amd64-231012-163246.iso /mnt/solution
# 进入挂载目录
$ cd /mnt/solution

# 执行脚本 expand-mirror 展开镜像

$ bash expand-mirror

​​​​​​​2.2.挂载hostpath

# 在master1上执行以下命令。标红的ip地址换成实际的nfs地址,如果未配置master1-node3的host,则把master1-node3换成对应的ip地址。默认挂载路径为/opt/glusterfs,如果需要挂载到其它路径可自行替换。

$ for host in master1 master2 master3 node1 node2 node3; do ssh root@$host "mkdir -p /opt/glusterfs && echo '10.41.116.236:/opt/nfs /opt/glusterfs nfs defaults 0 0' >> /etc/fstab && mount -a";done

注:这个步骤只做一次,如果nfs地址变化需要重新执行,需先删除各节点/etc/fstab文件里的旧配置。

3.部署kcall容器

# 执行以下命令部署kcall容器(如果是arm64架构把amd64改成arm64)

$ nerdctl run -d --restart always --name kcall --network host -v /root/.ssh:/root/.ssh -v /root/.kube:/root/.kube registry.kylincloud.org:4001/solution/kcall/amd64:v4.0 bash

4.修改应用配置

4.1.进入kcall容器

nerdctl exec -it kcall bash

​​​​​​​4.2.修改conf/charts.yaml配置

vim conf/charts.yaml

​​​​​​​4.2.1.配置共享存储

# 检查chats.yaml里的共享存储配置,挂载类型为hostpath不用改,挂载路径根据实际情况修改。

globals:

   volumeType: "hostpath"

   glusterPath: /opt/glusterfs

​​​​​​​4.2.2配置虚IP地址

# 修改为实际的vip地址。

globals:

   ...

   ingressVip: "172.20.42.63"

​​​​​​​4.2.3.配置统一域名

# apisix.baseUri改为申请到的根域名;kcm.uri改为域控系统使用的完整域名。例如根域名为"kylincloud.org",则域控系统的完整域名为kcm.kylincloud.org。

globals:

   ...

   apisix.baseUri: "kylincloud.org"

   kcm.uri: "kcm.kylincloud.org"

​​​​​​​4.2.4.配置MySQL数据库

# 如果使用的是集群自建数据库无需修改,如果使用客户提供的数据库,则根据实际情况修改以下内容。

globals:

   ...

   mysql.uri: "maxscale.module"

   mysql.port: 3306

   mysql.username: "dbinit"

   mysql.password: "Kylin.2023!"

​​​​​​​4.2.5.配置Redis数据库

# 根据实际情况修改六个Redis节点的地址,如果是三节点、双节点集群,也要填六个,多出来的填重复的即可。例如三节点环境0-2和3-5填一样的,双节点环境0-1,2-3,4-5填一样的。

globals:

   ...

   redis.nodes0: 172.20.43.171

   redis.nodes1: 172.20.43.172

   redis.nodes2: 172.20.43.173

   redis.nodes3: 172.20.43.174

   redis.nodes4: 172.20.43.175

   redis.nodes5: 172.20.43.176

4.2.6.​​​​​​​保存退出

输入:wq保存退出

​​​​​​​4.3.修改kerberos表名

#执行以下命令。注意把命令里标红的kcm_kylincloud_org修改为实际域名,点替换为下划线。例如实际域名是kcm.sdc.icbc,就把krb5_princ_kcm_kylincloud_org修改为krb5_princ_kcm_sdc_icbc,前面的krb5_princ_kylincloud_org不要改。

$ sed -i "s?krb5_princ_kylincloud_org?krb5_princ_kcm_kylincloud_org?g" /opt/deploy/pre-install/dbinit/script/32_kim_create_tables.sql

​​​​​​​4.4.拷贝静态文件目录

# exit退出kcall容器回到master1节点,执行以下步骤。(如果nfs挂载路径不是/opt/glusterfs,下面命令里对应修改)

# 1、拷贝静态文件

$ rm -rf /opt/glusterfs/data/

$ nerdctl cp kcall:/opt/kcall/data /opt/glusterfs/

$ chmod 755 -R /opt/glusterfs/data/

# 2、修改kcm.yaml和远程连接配置。把标红的kcm.kylincloud.org修改为实际域名,前面那个没标红的不要改

$ sed -i "s?kcm.kylinserver.com?kcm.kylincloud.org?g" /opt/glusterfs/data/apt-data/kcm.yaml

$ sed -i "s?kcm.kylinserver.com?kcm.kylincloud.org?g" /opt/glusterfs/data/apt-data/vncPkg/kylin-os-manager-plugin.ini

# 3、修改dhcp服务配置文件,分别替换为实际的master1、master2节点IP(可选配置,仅部署了dhcp功能时需要做)

$ sed -i "s?10.41.116.233?master1IP?g" /opt/glusterfs/data/apt-data/toolsConfig/kdhcp/dhcp_primary.conf

$ sed -i "s?10.41.116.233?master1IP?g" /opt/glusterfs/data/apt-data/toolsConfig/kdhcp/dhcp_secondary.conf

$ sed -i "s?10.41.116.234?master2IP?g" /opt/glusterfs/data/apt-data/toolsConfig/kdhcp/dhcp_primary.conf

$ sed -i "s?10.41.116.234?master2IP?g" /opt/glusterfs/data/apt-data/toolsConfig/kdhcp/dhcp_secondary.conf

$ chmod -R 777 /opt/glusterfs/data/apt-data/toolsConfig/kdns

5.初始化MySQL数据库

使用用户提供的数据库时,需要拿到数据库地址以及具备创建数据库、创建用户权限的初始账号用于建库建表。或者由用户创建dbinit数据库,密码为Kylin.2023!。

​​​​​​​5.1.生成MySQL控制台登录命令变量

# 使用用户提供的MySQL数据库时,执行以下命令,替换数据库地址、账号密码

$ mysql_cmd="mysql -h数据库地址 -udbinit -pKylin.2023!"

# 使用集群自带MySQL数据库时,执行以下命令

$ mysql_cmd="mysql -udbinit -pKylin.2023! --host=$(kubectl get svc -n module | grep maxscale | grep -v maxscale-web | awk -F" " '{print $3}')"

​​​​​​​5.2.初始化数据库

# 在master1节点上执行以下命令。 注意,${mysql_cmd}是变量,前面的$不能忽略。

nerdctl cp kcall:/opt/deploy/pre-install/dbinit/script/ /root/

cd /root/script

${mysql_cmd} -f < 01_kcm_init_database.sql

${mysql_cmd} -f < 02_kcm_create_tables.sql

${mysql_cmd} -f < 03_kcm_insert_datas.sql

${mysql_cmd} -f < 04_kcm_insert_strategy.sql

${mysql_cmd} -f < 11_kuf_init_database.sql

${mysql_cmd} -f < 12_kuf_create_tables.sql

${mysql_cmd} -f < 13_kuf_insert_datas.sql

${mysql_cmd} -f < 21_kuas_init_database.sql

${mysql_cmd} -f < 22_kuas_create_tables.sql

${mysql_cmd} -f < 23_kuas_insert_datas.sql

${mysql_cmd} -f < 31_kim_init_database.sql

${mysql_cmd} -f < 32_kim_create_tables.sql

${mysql_cmd} -f < 33_kim_insert_datas.sql

${mysql_cmd} -f < 41_koms_init_database.sql

${mysql_cmd} -f < 42_koms_create_tables.sql

# 生成机器码

machine_code=$(echo -n "$(kylin_gen_register)" | md5sum | awk '{print substr($1, 1, 6)}')

${mysql_cmd} -D kcm -e "insert into monitor_config (param_type,param_name,param_value) values ('activation','activation_id','${machine_code}')"

6.安装应用组件

# 进入kcall容器

$ nerdctl exec -it kcall bash

# 依次启动tianyu和tianyuan(必须先启动tianyu再启动tianyuan)

$ python3 kcall.py solution deploy install tianyu

$ python3 kcall.py solution deploy install tianyuan

# 执行以下命令可查看应用组件是否全部启动成功。状态为Running代表启动成功

$ kubectl -n kcm get pod

$ kubectl -n kuas get pod

# 附:卸载应用组件命令

$ python3 kcall.py solution deploy uninstall tianyu

$ python3 kcall.py solution deploy uninstall tianyuan

7.配置单点登录和域管理员

# 等待所有应用都启动完成之后在master1节点执行以下步骤

# 1、生成单点登录key。

# 依次执行以下命令,sso.kylincloud.org里的kylincloud.org修改为实际根域名,密码均为Kerberos@1234.

$ kubectl -n kuas exec -it kim-kerberos-0 kim-kadmin -- bash

$ kinit admin/admin

$ kadmin -q "addprinc -randkey HTTP/sso.kylincloud.org"

$ kadmin -q "ktadd -k /var/log/krb5kdc/http.keytab HTTP/sso.kylincloud.org"

$ exit

# 如果nfs挂载路径不是/opt/glusterfs,则修改为实际路径

$ cp /opt/glusterfs/data/logs/kerberos-log/http.keytab /opt/glusterfs/data/apt-data/kerberos/

$ kubectl -n kuas delete pod -l app=kim-server

# 2、设置kerberos管理员密码永不过期。

# 依次执行以下两条命令。标红的krb5_princ_kcm_kylincloud_org修改为3-6步骤修改的表名,KCM.KYLINCLOUD.ORG修改为实际的大写域名。

$ mysql -udbinit -pKylin.2023! --host=$(kubectl get svc -n module | grep maxscale | grep -v maxscale-web | awk -F" " '{print $3}') kim

$ update  `krb5_princ_kcm_kylincloud_org`  set krbPasswordExpiration=NULL where krbprincipalName='admin/admin@KCM.KYLINCLOUD.ORG';

8.访问域控管理平台

8.1.注册域名

把域控域名  虚IP的映射写进/etc/hosts或者注册到DNS服务器。

​​​​​​​8.2.访问域控管理平台

浏览器访问https://域控域名

初始管理员账号密码:admin/Kcm.2021

注:如果未开通443端口,则带上30234端口访问

9.附:重新部署应用镜像步骤

# 1、上传新的应用镜像到master1节点。

# 2、停止和删除当前kcall容器

$ nerdctl stop kcall && nerdctl rm kcall

$ nerdctl rmi registry.kylincloud.org:4001/solution/kcall/amd64:v4.0

注:如果需要保留备份,可以重命名容器:nerdctl rename kcall

# 3、重新执行此文档第三步及之后步骤。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/239224
推荐阅读
相关标签
  

闽ICP备14008679号