作者 | 邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交付与管理领域知名技术专家
导读:近年来,越来越多专门给 Kubernetes 做应用发布的工具开始缤纷呈现,帮助大家管理和发布不断增多的 Kubernetes 应用。在做技术选型的时候,我们需要给业务选择一个最好的工具、最稳的底座。那么又该如何比较和衡量这些工具呢?本篇文章中阿里云技术专家邓洪超将会和大家分享自己独特的体验,帮助读者初步了解 Tekton 项目。
近年来,伴随着云原生社区 (CNCF Community) 的迅猛发展,越来越多的应用跑在了 K8s 上。慢慢地,大家的关注点也逐渐从资源层转移到应用层。一方面,我们看到在有越来越多新的 K8s Operators 出现,用来自动化应用的部署和运维。另一方面,随着各路大型云厂商入场,K8s 服务以后就会像家里的水和电一样随心所欲可用,自己再去动手搭建已经没有了意义。于是人们提出了“K8s 将会消失”,这其实指的是以 k8s 为底座来面向全世界任何一个云以及数据中心交付应用,会是接下来的必然趋势。关于这个趋势,我们团队的同学专门写过一篇关于《K8s 多集群/多云技术与发展》的文章,欢迎大家进一步阅读。
相关链接:
基于 k8s 做应用发布的工具,我们有着许多选择,其中不乏业界知名项目 Jenkins X、Spinnaker,也有创业公司出来的小工具比如 Argo Rollout。不过在这其中,我们团队现在主要使用的是 Tekton。这里也有个重要的背景,那就是我们团队要面向多云/多集群交付的,是复杂有状态的阿里巴巴中间件应用。这因素我马上会详细介绍到。
可能还有部分同学还不了解 Tekton 项目是什么?这里我先简单介绍下。Tekton 是一款 k8s 原生的应用发布框架,主要用来构建 CI/CD 系统。它原本是 knative 项目里面一个叫做 build-pipeline 的子项目,用来作为 knative-build 的下一代引擎。然而,随着 k8s 社区里各种各样的需求涌入,这个子项目慢慢成长为一个通用的框架,能够提供灵活强大的能力去做基于 k8s 的构建发布。
可能不少同学会感到疑惑,有这么多功能丰富、声名远扬的项目,为什么我们选择了灰姑娘般的 Tekton?客官别急,容我们先来梳理一下这个平台底座的要求:
接下来我们在几个候选项目之间做比较:
可以看到,Tekton 在灵活实现定制化功能、K8s 原生性、以及社区里的受欢迎程度等方面可以说还是优势明显的。这也是为什么,我们团队在负责阿里中间件复杂有状态应用的交付工作时,选择了在 Tekton 之上构建应用交付体系。
接下来我们将分享使用 Tekton 自动化应用发布的实践案例。
一个基于 Tekton 的应用发布平台的架构如下:
这里的流程大致是:
Tekton CD 里的操作具体分为以下几种情况:
接下来,我们看一个创建应用的简单例子:
这个例子里面我们生成了一个 Tekton Pipeline。运行这个 pipeline 就可以将应用发布到 K8s 集群上。
用户操作的边界就是 Git,之后所有流程都是自动化的。那么整个过程中用户怎么得到反馈信息呢?这里主要有:
上面给大家介绍了 Tekton 项目的基本原理、以及使用 Tekton 做底座进行应用发布的主要流程。在这里总结一些经验体会:
另外,Tekton 2019 发展规划中还包括了 conditional execution, cancelling or pausing a workflow, resuming a paused or failed workflow, enforcing timeouts on Tasks and Pipelines 等功能。站在巨人的肩膀上,未来的应用发布平台将会更加强大。
基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?
原文:https://www.cnblogs.com/alisystemsoftware/p/11398737.html