快捷搜索:  汽车  科技

云私有化最新消息(初探云原生应用管理之)

云私有化最新消息(初探云原生应用管理之)接下来,我们看一个创建应用的简单例子:Tekton CD 里的操作具体分为以下几种情况:接下来我们将分享使用 Tekton 自动化应用发布的实践案例。一个基于 Tekton 的应用发布平台的架构如下:这里的流程大致是:

【编者的话】“人间四月芳菲尽,山寺桃花始盛开。” 越来越多专门给 Kubernetes 做应用发布的工具开始缤纷呈现,帮助大家管理和发布不断增多的 Kubernetes 应用。在做技术选型的时候,我们需要给业务选择一个最好的工具、最稳的底座。那我们又该如何比较和衡量这些工具的呢?在这篇文章中阿里一线工程师给大家分享自己独特的体验。洗尽铅华,一起品味这“山寺桃花”。

背景

近年来,伴随着云原生社区(CNCF Community)的迅猛发展,越来越多的应用跑在了 Kubernetes 上。慢慢地,大家的关注点也逐渐从资源层转移到应用层。一方面,我们看到在有越来越多新的 Kubernetes Operators 出现,用来自动化应用的部署和运维。另一方面,随着各路大型云厂商入场,Kubernetes 服务以后就会像家里的水和电一样随心所欲可用,自己再去动手搭建已经没有了意义。于是人们提出了“Kubernetes 将会消失”,这其实指的是以 Kubernetes 为底座来面向全世界任何一个云以及数据中心交付应用,会是接下来的必然趋势。关于这个趋势,我们团队的同学专门写过一篇关于《云原生时代, Kubernetes 多集群架构初探》的文章,欢迎大家进一步阅读。

Tekton 项目有什么特殊之处?

基于 Kubernetes 做应用发布的工具,我们有着许多选择,其中不乏业界知名项目 Jenkins X、Spinnaker,也有创业公司出来的小工具比如 Argo Rollout。不过在这其中,我们团队现在主要使用的是 Tekton。这里也有个重要的背景,那就是我们团队要面向多云/多集群交付的,是复杂有状态的阿里巴巴中间件应用。这因素我马上会详细介绍到。

可以看到,Tekton 在灵活实现定制化功能、Kubernetes 原生性、以及社区里的受欢迎程度等方面可以说还是优势明显的。这也是为什么,我们团队在负责阿里中间件复杂有状态应用的交付工作时,选择了在 Tekton 之上构建应用交付体系。

实践案例:使用 Tekton 自动化应用发布

接下来我们将分享使用 Tekton 自动化应用发布的实践案例。

一个基于 Tekton 的应用发布平台的架构如下:

云私有化最新消息(初探云原生应用管理之)(1)

这里的流程大致是:

  1. 用户把需要部署的应用先按照一套标准的应用定义写成 YAML 文件(类似 Helm Chart);
  2. 用户把应用定义 YAML 推送到 Git 仓库里;
  3. Tekton CD(一个 Kubernetes Operator)会监听到相应的改动,根据不同条件生成不同的 Tekton Pipelines。

Tekton CD 里的操作具体分为以下几种情况:

  • 如果 Git 改动里有一个应用 YAML 且该应用不存在,那么将渲染和生成 Tekton Pipelines 用来创建应用。
  • 如果 Git 改动里有一个应用 YAML 且该应用存在,那么将渲染和生成 Tekton Pipelines 用来升级应用。这里我们会根据应用定义 YAML 里的策略来做升级,比如做金丝雀发布、灰度升级。
  • 如果 Git 改动里有一个应用 YAML 且该应用存在且标记了“被删除”,那么将渲染和生成 Tekton Pipelines 用来删除应用。确认应用被删除后,我们才从 Git 里删除这个应用的 YAML。

接下来,我们看一个创建应用的简单例子:

云私有化最新消息(初探云原生应用管理之)(2)

这个例子里面我们生成了一个 Tekton Pipeline。运行这个 Pipeline 就可以将应用发布到 Kubernetes 集群上。

用户操作的边界就是 Git,之后所有流程都是自动化的。那么整个过程中用户怎么得到反馈信息呢?这里主要有:

  • 过程状态:Tekton Pipeline 本身就是 Kubernetes API object,我们通过汇总 Status 将过程状态信息透出给前端。
  • 日志和监控:由于 Tekton Pipeline 启动的都是 Kubernetes Pod,我们可以复用原有的基础设施去收集,然后做一遍汇总。
经验总结

上面给大家介绍了 Tekton 项目的基本原理、以及使用 Tekton 做底座进行应用发布的主要流程。在这里总结一些经验体会:

  1. 复用开源技术。少去做造轮子的事情就意味着能够多专注更具价值的事情。
  2. 不要只着眼于眼前的需求,还要关注定制化和扩展性,多考虑未来的场景。
  3. Kubernetes 应用层接下来将会加速发展。帮助开发者在 Kubernetes 上更好地开发、部署、管理应用,把相关流程标准化,是未来的重要趋势。

另外,Tekton 2019 发展规划中还包括了 conditional execution,cancelling or pausing a workflow,resuming a paused or failed workflow,enforcing timeouts on Tasks and Pipelines 等功能。站在巨人的肩膀上,未来的应用发布平台将会更加强大。

作者:一绿舟

猜您喜欢: