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成本一点也不小