前言

☞ 开学季买书大优惠,错过等一年 ☜

Tekton Pipeline 是一个 k8s native 的 pipeline, 任务跑在 pod 中,通过自定义 CRD 去管理任务与工作流等等,我看完 tekton 之后感觉是功能很强大,但是有点过度设计了,没有 drone 的简约大方灵活之感。

1.

Task

Tekton Pipeline 的主要目标是单独运行您的任务或作为管道的一部分运行。每个任务都在 Kubernetes 集群上作为 Pod 运行,每个步骤都作为自己的容器。这点深得 drone 思想精髓,其实 drone 也有计划将 kubernetes 作为任务执行引擎。

Task 定义了需要执行的工作,例如以下是一个简单的任务:

steps 是一系列由任务顺序执行的命令。这个 steps 内的配置几乎与 drone 如出一辙。

Task 定义好了之后并不会被执行,创建 TaskRun 时才会执行。这是合理的,相当于是一个触发。

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

查看 TaskRun

状态 Succeeded = True 显示任务已成功运行。

2.

任务输入和输出

在更常见的场景中,任务需要多个步骤来处理输入和输出资源。例如,Task 可以从 GitHub 存储库获取源代码并从中构建 Docker 镜像。

PipelinesResources 用于定义任务的输入(如代码)与输出(如 Docker 镜像)。有一些系统定义的资源类型可供使用,以下是通常需要的两个资源示例。

该 git 资源可以是你要编译的代码:

该 image 资源代表要被任务编译成的镜像:

以下是 Task 输入和输出。输入资源是 GitHub 存储库,输出是从该源生成的图像。任务命令的参数支持模板化,因此任务的定义是常量,参数的值可以在运行时更改。

TaskRun 将输入和输出绑定到已定义的 PipelineResources 值,除了执行任务步骤外,还将值设置为用于模板化的参数。

inputs 和 outputs 应当不限制死必须叫这两个名字,只要是能支持参数就好。比如定义一个叫 build 的资源去指定 docker build 的镜像:

Task 里:

我是觉得需要能进行这样的扩展了, 仅是 inputs 和 outputs 就狭义了。

获取 pipeline全部信息:

$ kubectl get build-pipeline
NAME                                                   AGE
taskruns/build-docker-image-from-git-source-task-run   30sNAME                                          AGE
pipelineresources/skaffold-git                6m
pipelineresources/skaffold-image-leeroy-web   7mNAME                                       AGE
tasks/build-docker-image-from-git-source   7m

要查看 TaskRun 的输出,请使用以下命令:

类型的状态 Succeeded = True 显示 Task 已成功运行,你还可以验证 Docker 镜像是否生成。

3.

Pipeline

Pipeline 定义要按顺序执行的任务列表,同时还通过使用该 from 字段指示是否应将任何输出用作后续任务的输入,并指示执行的顺序(使用 runAfter 和 from 字段)。你在任务中使用的相同模板也可以在管道中使用。

以上 Pipeline 是引用一个 Task deploy-using-kubectl

要运行 Pipeline,请创建 PipelineRun 如下:

执行与查看 pipeline:

总结

初学者会觉得有点绕,但是这种设计也是为了解耦合,我个人觉得优劣如下:

优势:

  • 可以把k8s集群作为任务执行引擎,这样可以更好的利用资源,比如把线上夜间闲置资源用来跑任务,构建镜像 离线分析 甚至机器学习。

  • 解耦做的比较好,任务模板可以拿来复用,而不需要大家都去重复定义。

  • 输入输出理念,一个任务的输入作为另个任务的输出不错

劣势:

  • 有点过度设计,一些简单的场景可能觉得配置起来有点绕了。

  • 输入输出依赖分布式系统,对比 drone 一个 pipeline 中的容器是共享了一个数据卷的,这样上个任务产生的文件很方便的给下个任务用,而基于集群的任务就可能得依赖 git docker 镜像仓库等做输入输出,有点麻烦,好的解决办法是利用 k8s 分布试存储给 pipeline 设置一个共享卷,方便任务间传输数据。

总体来说路子是对的,而且还是有很多场景可以用的。

● 以后别人再问你什么是 Istio,就把这篇文章甩给他

● Kubectl 的替代品:kubeman

● Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量

云原生是一种信仰 ?

扫码关注公众号

回复 「电子书」下载 Kubernetes 指南

点击 "阅读原文" 获取更多资源!

Tekton Pipeline 教程相关推荐

  1. [OpenShift 4 - DevSecOps Workshop (16) - 使用 VSCode 编辑运行 Tekton Pipeline 资源

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...

  2. OpenShift 4 Tekton (3) - 通过控制台的图形化方式配置Tekton Pipeline

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 配置Tekton运行环境 配置并运行Tekton Pipeline 说明:O ...

  3. OpenShift 4 Tekton - Katacoda的Tekton Pipeline入门示例

    <OpenShift 4.x HOL教程汇总> 文章目录 安装Tekton客户端 通过命令安装OpenShift Pipelines Operator 创建并运行Tekton Pipeli ...

  4. openshift Tekton pipeline 实践

    文章目录 1. 介绍 2. 部署一个简单的pipeline 2.1 使用TaskRun运行"hello"样例任务 3 部署 Two-Tier Golang Application ...

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

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

  6. tekton pipeline资源

    欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下: istio多集群探秘,部署了50次多集群后我得出的结论 istio多集群链路追踪,附实操视频 istio防故障利器,你 ...

  7. Jenkins 如何与 Kubernetes 集群的 Tekton Pipeline 交互?

    本文详细介绍了 Jenkins 如何通过 tekton-client-plugin[1] 实现与 Kubernetes 上的 Tekton Pipeline 交互,包括 Kubernetes 上安装 ...

  8. 【云原生 | Kubernetes 系列】--Gitops持续交付 Tekton Pipeline使用进阶(pvc和Results)

    Tekton Pipeline使用进阶 1. 基于Maven项目构建 主要实现source to package的过程 包含2个Task: fetch-from-source和build 使用pvc实 ...

  9. Tekton pipeline DEMO + 探索一些tkn命令

    https://github.com/tektoncd/pipeline/blob/master/docs/tutorial.md 安装Tekton CLI(与Tekton交互的CLI) curl - ...

最新文章

  1. pip install 豆瓣源、清华源、阿里源、中国科技大学源
  2. 毕设开发日志2017-11-03
  3. 网站的线下活动如何组织
  4. 「starter推荐」简单高效 Excel 导出工具
  5. CSS-10-内边距
  6. stm32 内部sram大小_让STM32的外部SRAM操作跟内部SRAM一样
  7. Qt之QLineEdit详解(附源码)
  8. 信恒支付源码-第四方支付源码
  9. java 怎么匹配文章_Java 14 之模式匹配,非常赞的一个新特性!
  10. anaconda和python有什么不一样_看着一样的胶带,价格为什么不一样?
  11. 费马大定理的启示:记笔记是一种信仰
  12. Qt+STK项目配置
  13. 用python批量下载modis数据的速度怎么样_MODIS数据下载与处理-pymodis的使用(持续更新...)...
  14. archlinux for wps 字体缺失解决办法
  15. Opencv读取.dat格式CT数据
  16. Jena TDB Assembler
  17. 数的“平方”速算秘诀,超实用的技巧,3秒出答案
  18. ios动态效果实现翻页_iOS实现日历翻页动画
  19. 国培计算机音乐教学设计作业,2017国培计划教学设计
  20. 在qt实现手机通讯录系统_Qt编写自定义控件55-手机通讯录

热门文章

  1. submit()和onsubmit()的区别
  2. camunda如何插入以及获取流程审批
  3. Win10 下安装PhotoShop CS6
  4. ant的下载与安装(一)
  5. java聚合函数_count()聚合函数正确用法
  6. D. Flood Fill
  7. 从VIVO到华为,让人目瞪口呆的“未来SMT智能工厂”亮相
  8. 乌鸦救赎《社交光环》
  9. GAN小结(BEGAN EBGAN WGAN CycleGAN conditional GAN DCGAN PGGAN VAEGAN)
  10. 函数指针的强制类型转换与void指针