作者 | AddoZhang

来源 | 云原生指北

Tekton 是 Google 开源的 Kubernetes 原生CI/CD 系统,功能强大扩展性强。前身是 Knavite 里的 build-pipeline 项目,后期孵化成独立的项目。并成为 CDF 下的四个项目之一, 其他三个分别是 Jenkins, Jenkins X, Spinnaker。

为什么说 Tekton 是 Kubernetes 原生的, 因其基于 Kubernetes 的 CRD 定义了 Pipeline 流水线。

CRD 及说明:

  • Task: 构建任务, 可以定义一些列的 steps. 每个 step 由一个 container 执行.

  • TaskRun: task 实际的执行, 并提供执行所需的参数. 这个对象创建后, 就会有 pod 被创建。

  • Pipeline: 定义一个或者多个 task 的执行, 以及 PipelineResource 和各种定义参数的集合。

  • PipelineRun: 类似 task 和 taskrun 的关系: 一个定义一个执行. PipelineRun 则是 pipeline 的实际执行. 创建后也会创建 pod 来执行各个 task。

  • PipelineResource: 流水线的输入资源, 比如 github/gitlab 的源码, 某种存储服务的文件, 或者镜像等. 执行时, 也会作为 pod 的其中一个 container 来运行(比如拉取代码)。

  • Condition: 在 pipeline 的 task 执行时通过添加 condition 来对条件进行评估, 进而判断是否执行 task. 目前是WIP的状态, 待#1137的完成、

组件:

  • tekton-pipelines-controller: 监控 CRD 对象(TaskRun, PipelineRun)的创建, 为该次执行创建 pod.

  • tekton-pipelines-webhook: 对 apiserver 提供 http 接口做 CRD 对象的校验

安装

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

检查安装的tekton相关的CRD:

kubectl api-resources | grep tekton
clustertasks                                   tekton.dev                     false        ClusterTask
conditions                                     tekton.dev                     true         Condition
pipelineresources                              tekton.dev                     true         PipelineResource
pipelineruns                      pr,prs       tekton.dev                     true         PipelineRun
pipelines                                      tekton.dev                     true         Pipeline
taskruns                          tr,trs       tekton.dev                     true         TaskRun
tasks                                          tekton.dev                     true         Task

tekton 的两个pod:

kubectl get pods --namespace tekton-pipelines
NAME                                           READY   STATUS    RESTARTS   AGE
tekton-pipelines-controller-556d8f4494-2qthv   1/1     Running   0          11m
tekton-pipelines-webhook-849cff5cf-8m5qq       1/1     Running   0          11m

安装CLI

cli: https://github.com/tektoncd/cli#installing-tkn

brew install tektoncd-cli

Tekton: hello world

创建一个简单的Task, 只有一个step就是打印出”hello world”

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:name: echo-hello-world
spec:steps:- name: echoimage: alpinecommand:- echoargs:- "hello world"

创建一个TaskRun执行上面的Task

apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:name: echo-hello-world-task-run
spec:taskRef:name: echo-hello-world

运行task:

kubectl apply -f <name-of-file.yaml>

检查TaskRun的输出, 执行命令:

tkn taskrun describe echo-hello-world-task-run
Name:        echo-hello-world-task-run
Namespace:   tekton-pipelines
Task Ref:    echo-hello-worldStatus
STARTED          DURATION    STATUS
21 minutes ago   1 minute    SucceededInput Resources
No resourcesOutput Resources
No resourcesParams
No paramsSteps
NAME   STATUS
echo   Completed

Succeeded状态表示task执行成功.

查看实际的输出, 执行命令:

tkn taskrun logs echo-hello-world-task-run

结果:

[echo] hello world

往期推荐

read 文件一个字节实际会发生多大的磁盘IO?

Docker 容器为什么傲娇?全靠镜像撑腰!

Redis 内存满了怎么办?这样置才正确!

云原生的本手、妙手和俗手

点分享

点收藏

点点赞

点在看

云原生的 CICD 框架:Tekton相关推荐

  1. 云原生CI/CD框架Tekton国内部署方式

    Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...

  2. 云原生 CI/CD 框架 Tekton 初体验

    Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pi ...

  3. 开源云原生CI/CD框架Tekton国内部署方式

    Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...

  4. 云原生CI/CD:tekton/pipeline之认证篇

    云原生CI/CD:tekton/pipeline之认证篇 既然说tekton/pipeline是CI/CD,必然需要用到拉取git仓库代码,仓库代码可能是私有的,看下tekton/pipeline在这 ...

  5. 云原生CI/CD:Tekton之trigger介绍

    云原生CI/CD:Tekton之trigger组件 简介 上面背景图片用了一张手枪扳机的图片,啥意思呢?trigger对于pipeline的作用就像扳机对于手枪的作用的,读完文章再来体会这句话. 前面 ...

  6. 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦

    秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...

  7. 云原生CI/CD:Tekton/pipelin之pipeline概念篇

    云原生CI/CD:Tekton/pipelin之pipeline概念篇 本节介绍下tekton中pipeline概念.作为云原生的CI/CD神器在之前介绍的task和taskrun之后,还有什么强大的 ...

  8. 云原生Web服务框架ESA Restlight

    云原生Web服务框架ESA Restlight ESA Stack(Elastic Service Architecture) 是OPPO云计算中心孵化的技术品牌,致力于微服务相关技术栈,帮助用户快速 ...

  9. 谐云魏欢:浅谈云原生边缘计算框架演进

    近日,首届云原生边缘计算峰会(KubeEdge Summit 2022)于线上成功举办.现场,谐云资深技术总监.边缘计算负责人魏欢分享了云原生边缘计算框架的演进.从边缘计算框架的基本概念切入,详细讲解 ...

最新文章

  1. 装java 无法应用转换程序_应用程序崩溃“android.app.Application无法强制转换为”...
  2. 基于ffmpeg的流媒体服务器
  3. Linux / openwrt / Ubuntu 18.04 虚拟机中的 openwrt 如何联网
  4. 【实施工程师】Linux查看日志后100行
  5. Streaming的算法Reservoir Sampling
  6. 【渝粤教育】电大中专电商运营实操 (19)作业 题库
  7. tensorflow4 代价函数、dropout、优化器
  8. python成绩转换、百分制到五分制_设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~90分为B,...
  9. 美团回应整改;贾跃亭卷土重来;乐视再度换帅| CSDN极客头条
  10. Call for Speaker!Flink Forward 全球在线会议议题征集 ing
  11. AES加密报错Given final block not properly padded
  12. 最新影牛视频双端影视视频APP网站源码+详细视频教程
  13. u盘刻录光盘后空间缩小解决方法
  14. USB-C接口 OTG协议芯片 支持同时传输数据充电
  15. TELNET协议笔记
  16. 我是如何”黑掉”91Ri的
  17. python - Django
  18. 【WebStorm】node-modules
  19. 【更新】数据库解决方案Data Abstract 9发布丨附下载
  20. SVGEdit——SVG在线编辑器

热门文章

  1. Linux中修改httpd默认端口
  2. Python词法分析器实现
  3. uniapp 消息推送与透传+语音播报
  4. python从列表中随机抽取n个元素
  5. https 双向认证开发实践
  6. iOS https证书双向认证的实现机制
  7. 利用IDEA将项目打包(两种方法)
  8. 在线版音乐播放器APP(一)
  9. 台式电脑如何设置此计算机,台式电脑怎么设置无线网络
  10. Hbase教程(二) Hbase数据库Shell命令