跳到主要内容

Kubernetes 集群版部署指南

说明

K8s 集群版只适用于微搭私有化企业版以上的套餐

1. 资源准备

要部署集群版,需要满足以下要求。

  • kubernetes 版本在 v1.22.0 以上;

  • 集群至少要有两个节点具有 8 核 vCPU 和 16GB 内存 用于微搭部署

    • 推荐 2 台 8C16G 的机器部署底座平台服务 - 多副本,高可用,也可滚动更新

    • 1 台 4C8G 的机器部署 CICD 服务

  • 集群需要安装 kubectlhelm 命令行工具;

  • 需要安装 Ingress-Controller

  • 需要提供存储类中间件: MySQL 和 对象存储 --- 其中 MySQL 数据库要求是 8.x。对象存储要求兼容标准 S3 协议;(如无法提供,请参考中间件部署指南)

  • wget 和 unzip 安装的软件包

  • 放开 weda-private.tencentcloudcr.com 443 端口访问

2. 获取部署包并填写配置信息

111

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.nodeSelectorweda baas 服务 pod 的节点选择器,需要事先在 k8s 节点上设置,不设置的话,将根据资源情况,自行选择合适节点部署
weda.replicaCountweda 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/dev

    weda.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