Kubernetes 集群版部署指南
说明
K8s 集群版只适用于微搭私有化企业版以上的套餐
1. 资源准备
1.1 部署要求
说明
须具备 K8s 集群运维能力,K8s 底层相关运维不做维保
硬件要求:
- Kubernetes 版本在 v1.22.0 以上
- 集群至少要有 3 个节点具有 8 核 vCPU 和 16GB 内存用于微搭部署
- 推荐 3 台 8C16G 的机器部署底座平台服务(多副本、高可用、支持滚动更新)
- 1 台 至少配置为4C8G 的机器部署CI/CD 服务(可内置自动部署,需要在k8s上再增加一个节点), 也可以单独部署
软件要求:
- 集群需要安装 kubectl 和 helm 命令行工具
- 需要安装 Ingress-Controller
- 需要提供存储类中间件:MySQL 和对象存储
- MySQL 数据库要求是 8.x
- 对象存储要求兼容标准 S3 协议
- 如无法提供,请参考 中间件部署指南
- wget 和 unzip 安装的软件包
1.2 网络放通
需要放通以下地址访问:
weda-private.tencentcloudcr.com:443(镜像仓库访问)https://license.tcloudbasegateway.com(证书激活/获取最新版本)https://weda-private.tencentcloudcr.com(镜像拉取)https://tcr-9r3x9jec-1302110647.cos.ap-guangzhou.myqcloud.com(镜像拉取)
2. 获取部署包并填写配置信息

2.1 下载部署脚本
根据服务器架构选择对应的下载命令:
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
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 init
2.2 配置文件说明
编辑 config.yml 文件,用于生成 Helm values.yaml。下面是配置字段说明:
| 字段 | 含义 |
|---|---|
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 数据库的名称(存储设计态数据), 一般可以命名为:lowcode, 创建数据库的语句为:CREATE DATABASE `lowcode` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
middleware.mysql.dbRuntimeName | 填写自建 MySQL 数据库的名称(存储运行态数据), 一般可以命名为:lcruntime, 创建数据库的语句为: CREATE DATABASE `lcruntime` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
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 对象存储服务中创建桶名,并确保该桶的访问权限设置为 公有读私有写 |
middleware.s3.cloudStorageBucket | 自建 S3 对象存储服务中创建桶名, 访问权限为私有读私有写 |
middleware.s3.ciSource | 自建 S3 对象存储服务中创建桶名, 访问权限为私有读私有写 |
middleware.s3.region | 需要自建 S3 所在 region |
middleware.s3.pathStyle | 需要自建 S3 是否支持 pathStyle: 是,填写 true, 否则填写 false 写 |
middleware.build.enabled | 开启外部构建cicd服务(需要先部署好,cicd服务) |
middleware.build.wedaInternalHost | 果没有dns,则需要配置hosts, 配置格式为"weda_web_ip weda_domain",例如:"6.55.46.15 software.test.com" |
middleware.build.gitness.host | gitness访问地址。 |
middleware.build.gitness.proxy | 微搭访问域名,该域名需要在当前机器可访问,如果没有 DNS 解析,需要配置内网解析 Host。 |
middleware.internalBuild.enabled | 开启内置的cicd服务, 如果middleware.build.enabled和middleware.internalBuild.enabled都为true时,则只自动部署和使用内置cicd服务;【详见内置cicd部署服务说明】 |
middleware.internalBuild.hostPath | 在节点上创建的cicd服务的数据存放目录;【详见内置cicd部署服务说明】 |
middleware.internalBuild.nodeSelector | 节点标签值,cicd服务 pod 的节点选择器,需要事先在 k8s 节点上设置,不设置的话,将根据资源情况,自行选择合适节点部署;【详见内置cicd部署服务说明】 |
注意
上述三个桶(defaultBucket、cloudStorageBucket、ciSource)不能同名,具体配置可参考: 自定义 S3 对象存储桶配置指南
3. 安装微搭服务
3.1 安装部署
执行安装命令:
./wedaCli install
3.2 验证部署
运行以下命令验证 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.3 访问微搭 Web UI
3.3.1 暴露微搭服务
微搭集群版本采用 Ingress 将服务暴露于外部访问。根据 Ingress Controller 的暴露方式不同,外部访问的 IP 有所不同:
NodePort 方式:
- 可以直接使用各个节点的外部 IP(集群外可访问 IP)访问微搭
- 需要外接 LB(负载均衡器)
LoadBalancer 方式:
- 查看 Ingress Controller 负载均衡的 EXTERNAL-IP
- 将 EXTERNAL-IP 与外部 IP 绑定即可访问微搭
示例:
# 查看 Ingress Controller 服务
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 所在命名空间
# 查看 Ingress 配置
kubectl get ing -n <微搭部署所在的命名空间>
# 示例输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
proxy nginx weda-test-cloud.com 192.168.2.40 80 6d20h
DNS 配置:
将集群外可访问的 IP 与配置的域名(weda.domain)进行映射:
- 通过 DNS 配置解析
- 测试环境可在本地配置 hosts 文件进行解析
访问地址:
- 登录地址:
http://<weda.domain>/dev - 默认用户名/密码:
admin/Weda@123456
说明
weda.domain 为 2.2 节中设置的域名
3.3.2 配置 HTTPS TLS 证书(选配)
支持在 Ingress 上配置 TLS,以实现通过 HTTPS 访问微搭服务。
操作步骤:
获取 TLS 证书文件
创建 TLS Secret
# "NAME" 为创建 Secret 时的名称,例如:weda-tls
# --cert 指定证书文件路径
# --key 指定证书私钥文件路径
kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file -n weda-software
- 配置 config.yml 文件
将创建的 Secret 名称填写到 config.yml 文件中:
# 例如: NAME 名称为 weda-tls
tlsSecretName: weda-tls
- 执行安装或更新命令
参考 3.4 节执行安装或更新操作
3.4 更新服务
操作步骤:
- 切换到上次部署微搭的目录
- 根据需要修改
config.yaml文件(不修改则跳过) - 删除之前的
wedaCli文件 - 下载执行脚本到部署目录下
- 执行更新命令:
./wedaCli install
3.5 续期服务
操作步骤:
- 获取新的 License
- 切换到上次部署微搭的目录
- 替换
config.yaml中license的值 - 备份环境文件:
mv env env-bak
- 执行续期命令:
./wedaCli install
3.6 卸载服务
说明
需要使用 Helm 卸载服务
操作步骤:
- 查询服务:
helm list -n weda-software # -n 后接命名空间
- 卸载服务:
helm delete wedabaas -n weda-software # delete 后接服务名