Kubernetes 集群版部署指南
K8s 集群版只适用于微搭私有化企业版以上的套餐
1. 资源准备
要部署集群版,需要满足以下要求。
kubernetes 版本在 v1.22.0 以上;
集群至少要有两个节点具有 8 核 vCPU 和 16GB 内存 用于微搭部署;
推荐 2 台 8C16G 的机器部署底座平台服务 - 多副本,高可用,也可滚动更新
1 台 4C8G 的机器部署 CICD 服务
需要安装 Ingress-Controller;
需要提供存储类中间件: MySQL 和 对象存储 --- 其中 MySQL 数据库要求是 8.x。对象存储要求兼容标准 S3 协议;(如无法提供,请参考中间件部署指南)
wget 和 unzip 安装的软件包
放开 weda-private.tencentcloudcr.com 443 端口访问
2. 获取部署包并填写配置信息
2.1 下载部署脚本
下载(执行下面命令)
Linux 服务器为 x86_64 架构的:
mkdir -p k8s_weda && cd k8s_weda
wget -L -O wedaCli https://software-1302110647.cos.ap-guangzhou.myqcloud.com/rc/k8s/x86_64/lastest/wedaCli && chmod +x wedaCli
Linux 服务器为 aarch64 架构的:
mkdir -p k8s_weda && cd k8s_weda
wget -L -O wedaCli https://software-1302110647.cos.ap-guangzhou.myqcloud.com/rc/k8s/arm64/lastest/wedaCli && chmod +x wedaCli
在 k8s_weda 目录下,有 wedaCli 可执行文件, 然后执行下面命令:
./wedaCli init
2.2 填写配置文件 config.yml, 用于生成 helm values.yaml,下面为 config.yml 中字段的描述:
字段 | 含义 |
---|---|
weda.ns | 部署微搭集群在 k8s 中的命名空间【执行 kubectl create ns weda-software 创建,见 2.1 章节】 |
weda.ingressClass | 获取 k8s 集群中 ingressClass 的名字,使用kubectl get ingressClass 获取 |
weda.nodeSelector | weda baas 服务 pod 的节点选择器,需要事先在 k8s 节点上设置,不设置的话,将根据资源情况,自行选择合适节点部署 |
weda.replicaCount | weda baas 服务的副本数,默认为:1 |
weda.disableRollingUpdate | 是否禁用滚动更新,false 为滚动更新(默认),true 禁用【为停服更新】,一般用于资源紧张时使用 |
weda.domain | 用于为微搭服务设置的域名,不需要携带 http 或者 https 协议 |
weda.domainProtocol | 这里填写 http 或者 https 协议名 |
weda.tlsSecretName | 选填项:需要先使用证书与密钥来创建 tls secret,只有当需要使用 https 访问微搭服务且将 tls 证书挂载到 ingress 时,进行填写,具体见 3.4.2 节 |
weda.license | 微搭许可证书 |
middleware.mysql.host | 自建 MySQL 数据库的主机名域名或 IP 地址 |
middleware.mysql.port | 自建 MySQL 数据库的端口号 |
middleware.mysql.username | 自建 MySQL 数据库的用户名 |
middleware.mysql.password | 自建 MySQL 数据库的密码 |
middleware.mysql.dbname | 自建 MySQL 数据库的名称 |
middleware.mysql.dbRuntimeName | 自建 MySQL 数据库的运行时名称 |
middleware.s3.endpoint | 自建 S3 存储的连接 ip 或域名, 不需要携带 http 或者 https 协议 |
middleware.s3.port | 自建 S3 存储的端口号 |
middleware.s3.scheme | 自建 S3 存储的协议, 在这里填写 http 或者 https 协议 |
middleware.s3.accessKey | 自建 S3 存储的访问密钥 |
middleware.s3.secretKey | 自建 S3 存储的秘密密钥 |
middleware.s3.insecureSkipVerify | 是否跳过 自建 S3 存储的证书验证,默认为 false |
middleware.s3.defaultBucket | 需要自建 S3 提供的桶名 1, 访问权限为公有读私有写 |
middleware.s3.cloudStorageBucket | 需要自建 S3 提供的桶名 2, 访问权限为私有读私有写 |
middleware.s3.ciSource | 需要自建 S3 提供的桶名 3, 访问权限为私有读私有写 |
middleware.s3.region | 需要自建 S3 所在 region |
middleware.s3.pathStyle | 需要自建 S3 是否支持 pathStyle: 是,填写 true, 否则填写 false 写 |
3. 使用 helm 安装微搭服务
3.1 安装部署微搭
./wedaCli install
3.3 验证
运行以下命令验证 pod 是否正在运行
kubectl -n weda-software get po
NAME READY STATUS RESTARTS AGE
allin-one-design-b8f855787-58zsj 1/1 Running 0 44m
allin-one-runtime-66cf7b5658-pjw8c 1/1 Running 0 43m
gateway-7c7c786495-vprl6 1/1 Running 0 48m
idaasserver-b6bf65cfc-5dvvg 1/1 Running 0 48m
lcap-service-55dcb9fd-vcpxw 1/1 Running 0 48m
lowcode-5d45ffd9cc-zckxd 1/1 Running 1 48m
proxy-7bf84f8c48-bszw7 1/1 Running 0 48m
weda-plugin-adaptor-dd67659b5-4vcn8 1/1 Running 0 48m
3.4 访问微搭 web UI
3.4.1 暴露微搭服务
将微搭服务暴露,微搭集群版本采用 ingress 将服务暴露于外部访问, 如下所示为 http 服务。 根据 ingress-controller 的暴露方式不同外部访问的 ip 有所不同:
- 使用 NodePort 方式的话,可以直接使用各个节点的外部 ip--集群外的可访问 IP,既可以在集群外部访问微搭。
- 使用 LoadBalancer 方式的话, 查看该 Ingress Controller 负载均衡 VIP,与其绑定的 IP[集群外的可访问 IP],既可以在集群外部访问微搭。
## 例如:下面ingress-controller为LoadBalancer,我们将EXTERNAL-IP与我们“外部IP”绑定,具体以本身集群为准。
kubectl -n ingress-nginx get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.0.134.188 192.168.2.40 80:30252/TCP,443:31414/TCP 52d
说明: ingress-nginx为ingress-controller所在空间
kubectl get ing -n <微搭部署所在的命名空间>
例如:
NAME CLASS HOSTS ADDRESS PORTS AGE
proxy nginx weda-test-cloud.com 192.168.2.40 80 6d20h集群外的可访问 IP 与设置的域名(
weda.domain
)进行映射(1. dns 配置; 2.如果在测试时, 可以在本地配置 hosts,进行解析)访问登录地址: http://
weda.domain
/devweda.domain
为 2.2 节中设置的域名默认用户名/密码: admin/Weda@123456
3.4.2 配置 https tls 证书【选配】
支持在 ingress 上配置 tls,以实现通过 https 访问微搭服务,具体按照下面步骤执行
- 1) 获取 tls 证书文件
- 2) 使用下面命令创建 tls secret
kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file -n weda-software
说明: "NAME"为创建secret时需要起一个名称, 见名识意即可,例如: weda-tls, ---cert 存放证书的文件路径 --key存放证书私钥的文件路径- 3)将“NAME”名称填写到 config.yml 文件的
例如: NAME名称为:weda-tls
tlsSecretName: weda-tls- 4)执行微搭服务的安装或更新命令
- 先执行./helmConfig
- 然后执行 3.2 节(安装或更新)
3.5 更新服务
1) 切到上次部署微搭的目录, 是否需要修改config.yaml? 不修改,则跳过
2) 执行: ./wedaCli install
3.6 续期服务
1) 获取license, 切到上次部署微搭的目录, 替换config.yaml中license的值
2) 执行: ./wedaCli install