新增环境和交付目标
在左侧环境列表中新增 prod 环境,先后创建并添加两个交付目标,
- local 集群,wordpress-test 命名空间
- cluster-worker 集群,wordpress-prod 命名空间
发布应用
在 wordpress 应用配置中
1. 绑定 prod 环境
2. 新增一个策略使其在生产环境的副本数为 2。这里要添加的策略是配置覆盖。首先选择应用到的工作流和步骤,在组件中选择
选择 Add a component patch来添加一个 Patch,选择 wordpress 组件。由于 Properties 的 patch 非常自由,VelaUX 提供了黑屏编写 YAML 的方式开放该接口。选择 Assign the default properties 并点击右上角绿框中的“切换黑屏”图标。在如图的 value 字段中,添加 replicaCount: 2 一行并最终创建策略。
点击上方的 prod 环境,VelaUX 以可视化的方式编辑应用的工作流。选择工作流画板,在两个步骤之间添加 suspend 步骤并保存。这允许我们在工作流中暂停并检查测试环境的应用状态,并人工确认继续工作流完成发布到生产环境。
点击部署并选择 prod 环境的工作流、部署。
由于我们添加的 suspend 步骤,在 local/wordpress-test 部署成功后,我们将看到状态 SUSPENDING 旁边提示我们是否继续工作流,假设此时我们通过访问测试环境
- 确认应用工作正常,就可以批准继续执行。
- 或者发现测试环境的应用工作异常,选择停止发布工作流进行排查。
这里我们继续执行工作流。
工作流成功执行后,通过状态栏可以查看到:我们作为生产环境的 cluster-worker 集群中 wordpress-prod 有两个正在运行的 Pod 副本。验证了我们对于应用策略的设置。
当然 KubeVela 有更多对多集群管控的能力,你可以在 KubeVela 文档中找到更多用法。
高可用的控制平面
具有单个 master 节点的控制平面满足了一些使用需求,但是对于控制平面稳定性要求更高的用户,VelaD 还能帮助搭建一个具备更高可用性的多集群控制平面。它由以下部分组成
- 两个及以上的 server 节点
- 一个外部数据库
- 一个负载均衡器
Note:这些组件的要求:server 和负载均衡节点要求是 Linux 系统,外部数据库可以采用云服务或者自建数据库。
VelaD 尽量将全部的搭建过程变得简单且顺手,为了搭建具备高可用性的控制平面,你仅需运行几条命令:
1. 在第一个 server 节点上运行
velad install --bind-ip=<LB_IP> --database-endpoint=<DB_ENNDPOINT> --token=<TOKEN> --node-ip=<IP>
其中 是负载均衡节点的 IP 地址。 是外部数据库的连接串,其格式可见数据库格式文档。
2. 在其他 server 节点运行几乎相同的命令,额外加上 --cluster-only 参数,这意味着仅将节点作为 master 加入集群,跳过安装 KubeVela,因为在第一个 server 节点运行命令时,已经安装了 KubeVela。
velad install --bind-ip=<LB_IP> --database-endpoint=<DB_ENNDPOINT>\ --token=<TOKEN> \ --cluster-only --node-ip=<IP>
3. 通过在任意一个节点上运行配置负载均衡的向导,获得负载均衡的配置命令。
velad load-balancer wizard
To setup load-balancer, run the following command on node acts as load-balancer: velad load-balancer install --http-port 32196 --https-port 30297 --host=<IP1>,<IP2>
4. 在负载均衡节点上,将上述向导输出的第二行复制过来并运行。
velad load-balancer install --http-port 32355 --https-port 30421 --host=172.19.0.5
Tips:其中 IP1 等为 server 节点的 IP 地址,load-balancer install 命令背后帮助用户设置了一个转发到 Server 的 Nginx 服务。
5. 在任何一个 server 节点打印 kubeconfig 的位置,并将该文件复制到任何可以访问到负载均衡节点的位置(例如你的笔记本上)。其中 --external 表示该 kubeconfig 是从外部访问集群所需要的。
velad kubeconfig --external
Boom!你可以通过这个 kubeconfig 访问和管理这个控制平面了!任何一个 server 节点故障都不会影响控制平面的可用性。
结语
以上就是本次的全部内容,感谢你的阅读和尝试。云原生的逐渐成熟涌现出了大量开箱即用的生态功能,但是广大开发者群体往往被云原生复杂的生态图景劝退,今天我们介绍了 VelaD 项目,期望以最简单、最快的方式帮助你上手云原生并立刻开始交付应用。随着你的需要,VelaD 能不断提高控制平面的容量和可用性。你还能通过向控制面注册子集群的方式,将应用部署到更多你需要的位置。
其背后的 KubeVela 项目在开箱即用的应用交付功能的基础上,不断以插件形式将云原生领域的最佳实践带给你,让你以更快更简单的方式增强自己的应用交付过程。官方插件仓库已经拥有了囊括变体工作负载、云资源、可观测性、滚动发布等多个领域的 70+ 插件。目前 KubeVela 的插件生态还在快速成长中,欢迎你来社区提出需求或做出贡献。
近期 KubeVela 即将发布 v1.8 版本,带来集群资源一键纳管功能,帮助你无痛迁移遗留系统。还有对大规模应用场景的压测报告、性能优化以及控制器分片方案,帮助你轻松面对业务规模增长的挑战。