云原生之tekton

云原生之tekton,第1张

云原生之tekton Tekton概述 Tekton主要是做什么的

Tekton是一个ci工具类似jenkins,是有go语言开发的,也支持cd发布,他打包主要过程是通过利用k8s资源如pod进行打包,于jenkins不同的是jenkins基于java虚拟机技术,而Tekton基于docker虚拟化技术,Tekton说是谷歌开源的项目,目前看是linux cd基金会的一部分,也是一个正经的项目吧,以下是Tekton相关连接

官网 https://tekton.dev
仓库地址 https://github.com/tektoncd
文档 https://tekton.dev/docs/

Tekton组件介绍

以下是Tekton服务,服务运行时的服务组成部分,其实只需要tekton-pipelines-controller还有tekton-dashboard皆可

组件作用是否使用tekton-pipelines-controllerTekton 控制器核心组件 监听 crd资源根据定义的,Task、TaskRun、Pipeline 执行相应任务逻辑yestekton-triggers-webhookpipeline 触发器,可以在 GitHub 推送或者合并 PR 后,触发流水线。yestekton-dashboardTekton Pipelines 的 Web 图形界面。yesTekton CLITekton CLI 是一个与 Tekton 交互的命令行工具。no Tekton机制原理

在说tekton机制原理之前可以先去看一下https://zhuanlan.zhihu.com/p/59660536 k8s核心设计之一 list/watch

用户创建taskrun,tekton通过watch机制监听到k8s配置变更,进行相关处理,主要有如下
1 创建pod进行,执行前的初始化,以下是任务执行后自动运行初始化的容器,这些自动运行的容器作为 pod 的initContainer会在 step 容器运行之前运行

  • credential-initializer
  • working-dir-initializer
  • place-scripts
  • place-tools

2 任务初始化后根据Step,顺序执行任务,以下是控制pod容器的启动顺序文章相关https://atbug.com/control-process-order-of-pod-containers/。
3 执行任务过程中数据同步,主要通过创建的工作区,实现数据共享,工作区,可以理解为一个挂在到容器上的卷,用于文件的传递

Tekton优缺点

自带优点如下

  • d性伸缩,执行任务过程中,会根据配置的d性伸缩策略进行任务的调度执行,通过d性伸缩能够提高资源利用率
  • 数据迁移,比如你这套东西,从ci到cd到整个测试生产都用k8s,这时候你只需要买一个新集群然后将数据配置备份导入到新技术,你的集群就能迁移过去了,当然会有很多问题,但是迁移这块都是比较方便的。
  • 资源隔离,这个就不说了

使用过程中的优点

  • 开箱即用 安装简单方便,通过官方自带的配置文件apply直接安装,不需要配置什么东西
  • 配置方便 只需要创建一个git资源,然后写一个task和taskrun,皆可实现代码的拉取,到任务的执行打包和上传,并且可以实现参数化构建也是在yaml里面写配置就行了
  • 快速发布 因为是在容器内部打包,如果仓库中心也是在集群内部,那么就直接可以通过集群内网进行上传然后发布,而且在打包过程中,如果你的pod服务调度在宿主机上那么直接可以启动,不需要拉镜像,因为你打包是用宿主机进行的打包

使用过程中的缺点

  • Tekton dashboard 任务实时没有jenkins这么好用,你需要手动刷有时候,很傻逼

  • 对比现有jenkins的优点在哪里
    不依赖jenkins服务器进行打包,jenkins服务器如果挂了也是可以打包的,而且只要k8s有资源就可以打包,集群不崩溃就行
    打包速度快,

Tekton安装和使用 Tekton安装
kubectl apply -f https://raw.githubusercontent.com/LGTH/rawfile/master/tekton-v0.13.2.yaml
kubectl apply -f https://raw.githubusercontent.com/LGTH/rawfile/master/tekton-trigger-0.5.0.yaml
kubectl apply -f https://raw.githubusercontent.com/LGTH/rawfile/master/tekton-dashboard-0.7.0.yaml
kubectl get pods --namespace tekton-pipelines 

Tekton 初体验

task类似于jenkins的job,而这里仅需写一个yaml皆可创建一个job,TaskRun则是运行这个job,当然你想在图形化运行也可以

cat > hello-world.yaml< 

在dashboard上查看运行结果

Tekton demo

本demo主要是通过git 拉取scrm项目代码,然后通过tekton进行打包,这里面不涉及到cd发布

cat > vue-job.yaml<dockerfile< 

这回咱们通过他的仪表盘进行执行任务不用taskrun了

观察到k8s创建了pod基于taskrun控制器,并且有四个contain,其中初始化有上面介绍的,我们不关心只关心我们的step一个是编译一个是上传

任务结果

查看阿里云镜像仓库

启动容器并且进去看是否刚刚打包的index

以上就是vue项目scrm打包过程,过程中其实可以不用docker push上传,可以将镜像导出来,或者直接通过他内置的方法进行上传到仓库,这些没研究过但是知道有这个东西

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5681863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存