作者:雾雾、玉易才(KubeVela、Nocalhost 团队)
在云原生快速发展的当下,如何让云的技术赋能业务开发?在上线应用时,如何让云的开发者在现代化的多集群、混合云环境中便捷地进行应用的开发和调试?在部署过程中,又该如何让应用部署具备充分的验证和可靠性?
这些至关重要的问题,都是我们急需解决的。
在本文中,我们将结合 KubeVela 以及 Nocalhost 开源项目,给出一个基于 Kubernetes 和容器生态的端云联调、一键完成多集群混合环境部署的解决方案,来回答上述问题。
当一个新应用需要开发上线时,我们希望本地 IDE 中调试的结果能和云端最终部署的状态保持一致。这样一致的姿态,能最大程度上给予我们部署的信心,并且让我们可以采用类似 GitOps 这种更高效、敏捷的方式迭代应用更新。即:当新代码被推送至代码仓库中后,环境中的应用会自动化地实时更新。同时,基于端云联调的模式,可以让这整个过程不仅敏捷高效、同样更加稳定可靠。
基于 KubeVela 和 Nocalhost,我们可以完成这样一种部署过程:
如图:通过 KubeVela 创建应用,将应用部署到测试环境后,暂停部署。使用 Nocalhost 在测试环境中对应用进行云端联调。调试完毕后,将调试完毕的代码推送到代码仓库,通过 KubeVela 进行 GitOps 部署,在测试环境进行验证后,再同步更新到生产环境。
在本文中,我们将介绍如何使用 KubeVela 及 Nocalhost 完成上述云端应用开发及上线的全过程。
01
什么是 KubeVela
Aliware
KubeVela 是一个简单易用且高度可扩展的应用交付和管理平台,基于 Kubernetes 与 OAM 技术构建。其核心功能是让开发人员方便快捷地在 Kubernetes 上定义与交付现代微服务应用,而无需了解任何 Kubernetes 本身相关的细节。
KubeVela 提供了 VelaUX 功能,能够让整个应用分发的过程可视化,使应用组装、分发、交付的流程变得更简单。在 UX 上,不仅可以便捷地通过页面及时了解整个交付链路状态,还可以通过配置触发器,使应用随着制品仓库的更新而更新。
而在本文的场景中,KubeVela 提供了以下能力:
完整的 GitOps 发布:
KubeVela 同时支持了 Pull 模式以及 Push 模式的 GitOps 发布:我们只需要将更新后的代码推送到代码仓库,KubeVela 就能自动基于最新代码完成部署。在本文中,我们将使用 Push 模式的 GitOps,关于 Pull 模式的 GitOps 支持,可以查看文末文章[1]。
强大的工作流能力,实现跨环境(集群)部署、审批以及通知:
KubeVela 借助其工作流能力,可以轻松让应用实现跨环境部署,并且支持用户在编排工作流的过程中,加入例如人工审批、消息通知等功能,使整个部署过程生产级可用。
应用抽象能力,让开发者都能看懂使用并且自定义基础设施能力
KubeVela 遵循 OAM 的开放应用模型,提供了一套简单易用的应用抽象能力,使开发者能够更加清晰地理解应用的功能,并且可以自定义基础设施能力。例如,对于一个简单的应用来说,我们可以将其划分为组件,运维特征,工作流三大部分。在本文的例子中,我们的组件是一个简单的业务应用;在运维特征部分,我们为这个组件绑定了一个 Nocalhost 的运维特征,让这个组件能够使用 Nocalhost 端云联调的能力;在工作流部分,通过多环境管理ÿ