IBM开发者技术沙龙1207
**主题:**基于IBM Cloud平台用Knative和Tekton实现云原生的Devops
github项目地址:https://github.com/daisy-ycguo/devopslab
现场ppt:
外链:https://www.lanzous.com/b03yaejij 密码:4n1c
实现目标:

现场主要操作了
- 1、如何在IBM Cloud上快速准备一个k8s集群环境;通过IBM Cloud命令行工具快速安装Istio和Knative
- 2、通过kubectl快速安装Tekton;创建Tekton pipeline并手动运行;实现github收到push操作后自动触发pipeline resource和pipeline run实现自动发布
- 3、实现Knative监控新服务,实现邮件发送;Knative Serving管控流量,实现不同版本的流量的分发;Knative结合prometheus实现服务的监控

Tekton是什么
引用这篇文章的话:https://segmentfault.com/a/1190000020182215
Tekton是一个谷歌开源的kubernetes原生CI/CD系统,功能强大且灵活,开源社区也正在快速的迭代和发展壮大。google cloud已经推出了基于Tekton的服务(https://tekton.dev/
)。
其实Tekton的前身是Knative的build-pipeline项目,从名字可以看出这个项目是为了给build模块增加pipeline的功能,但是大家发现随着不同的功能加入到Knative build模块中,build模块越来越变得像一个通用的CI/CD系统,这已经脱离了Knative build设计的初衷,于是,索性将build-pipeline剥离出Knative,摇身一变成为Tekton,而Tekton也从此致力于提供全功能、标准化的原生kubernetesCI/CD解决方案。
Tekton虽然还是一个挺新的项目,但是已经成为 Continuous Delivery Foundation (CDF) 的四个初始项目之一,另外三个则是大名鼎鼎的Jenkins、Jenkins X、Spinnaker,实际上Tekton还可以作为插件集成到JenkinsX中。所以,如果你觉得Jenkins太重,没必要用Spinnaker这种专注于多云平台的CD,为了避免和Gitlab耦合不想用gitlab-ci,那么Tekton值得一试。
Tekton的特点是kubernetes原生,什么是kubernetes原生呢?简单的理解,就是all in kubernetes,所以用容器化的方式构建容器镜像是必然,另外,基于kubernetes CRD定义的pipeline流水线也是Tekton最重要的特征。
那Tekton都提供了哪些CRD呢?
- Task:顾名思义,task表示一个构建任务,task里可以定义一系列的steps,例如编译代码、构建镜像、推送镜像等,每个step实际由一个Pod执行。
- TaskRun:task只是定义了一个模版,taskRun才真正代表了一次实际的运行,当然你也可以自己手动创建一个taskRun,taskRun创建出来之后,就会自动触发task描述的构建任务。
- Pipeline:一个或多个task、PipelineResource以及各种定义参数的集合。
- PipelineRun:类似task和taskRun的关系,pipelineRun也表示某一次实际运行的pipeline,下发一个pipelineRun CRD实例到kubernetes后,同样也会触发一次pipeline的构建。
- PipelineResource:表示pipeline input资源,比如github上的源码,或者pipeline output资源,例如一个容器镜像或者构建生成的jar包等。
Knative 是什么
knative 是谷歌开源的 serverless 架构方案,旨在提供一套简单易用的 serverless 方案,把 serverless 标准化。
knative 是建立在 kubernetes 和 istio 平台之上的,使用 kubernetes 提供的容器管理能力(deployment、replicaset、和 pods等),以及 istio 提供的网络管理功能(ingress、LB、dynamic route等)
为了实现 serverless 应用的管理,knative 把整个系统分成了三个部分:
- Build:构建系统,把用户定义的函数和应用 build 成容器镜像
- Serving:服务系统,用来配置应用的路由、升级策略、自动扩缩容等功能
- Eventing:事件系统,用来自动完成事件的绑定和触发
具体内容可以参考:http://www.cainiaoxueyuan.com/yunwei/7585.html 或者百度查更多资料
总而言之,言而总之,这两个工具用好了会极大提高软件开发部署效率。但是, 学习kubernetes,Istio,Tekton,Knative成本一点也不小