背景

前面的文章讲了tekton中pipeline的教程和使用案例,大家有没有想过,每次都要运行taskrun或者pipelineRun才能真正运行流水线。那怎么做到自动化执行taskrun和pipelineRun呢?我想了下有两种方式:

  • 使用client-go去创建taskRun和pipelineRun
  • 使用tekton的另一个组件trigger触发器。

单纯运行taskrun和pipelineRun,或者实例化以下task和pipeline,那么选用trigger会比较好,因为不需要额外开发,只需要将每次需要传给task的参数发送给trigger中的eventlistener即可。要是用clien-go的话还要写代码,比较麻烦。下面我就介绍下安装Trigger和运行一个简单的示例。

安装Trigger

安装环境

  • 一个版本在1.15以上的k8s集群
  • 集群中安装了Tekton的Pipelines组件(可参照我之前的文章)

开始安装

官方安装,运行以下命令:

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

由于里面有些镜像是谷歌镜像,所以我帮大家把镜像拉取下来了,并推送到了dockerhub上,所以大家可以运行以下命令来代替上面的官方命令:

Kubectl apply -f https://github.com/fishingfly/tekton-deploy/blob/master/tekton-trigger-release.yaml

尽量在你的机器上配置阿里云的镜像加速器,那拉取dokcerhub镜像会快点。
查看是否安装成功:

kubectl get pods --namespace tekton-pipelines

看到pod都是running的状态,就是安装成功了。

运行实例

运行以下yaml:

apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:name: v1alpha1-task-template
spec:resourcetemplates:- apiVersion: tekton.dev/v1alpha1kind: TaskRunmetadata:generateName: v1alpha1-task-run-spec:taskSpec:steps:- name: "hellothere"image: ubuntuscript: echo "hello there"
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:name: v1alpha1-task-listener
spec:# from examples/role-resources/servicaccount.yamlserviceAccountName: tekton-triggers-example-satriggers:- name: v1alpha1-task-triggertemplate:name: v1alpha1-task-template
---
apiVersion: v1
kind: Secret
metadata:name: tekton-triggers-example-secret
type: Opaque
stringData:secretToken: "1234567"
---
apiVersion: v1
kind: ServiceAccount
metadata:name: tekton-triggers-example-sa
secrets:- name: tekton-triggers-example-secret
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: tekton-triggers-example-binding
subjects:
- kind: ServiceAccountname: tekton-triggers-example-sa
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: tekton-triggers-example-minimal
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: tekton-triggers-example-minimal
rules:
# Permissions for every EventListener deployment to function
- apiGroups: ["triggers.tekton.dev"]resources: ["eventlisteners", "triggerbindings", "triggertemplates"]verbs: ["get"]
- apiGroups: [""]# secrets are only needed for Github/Gitlab interceptors, serviceaccounts only for per trigger authorizationresources: ["configmaps", "secrets", "serviceaccounts"]verbs: ["get", "list", "watch"]
# Permissions to create resources in associated TriggerTemplates
- apiGroups: ["tekton.dev"]resources: ["pipelineruns", "pipelineresources", "taskruns"]verbs: ["create"]

运行:

kubectl apply -f examples/v1alpha1-task/v1alpha1-task-listener.yaml

此时看下default命名空间下,看到这样一个pod:el-v1alpha1-task-listener-5967dc5fd-4xmnx 在运行,此时运行以下命令:

  kubectl port-forward \"$(kubectl get pod --selector=eventlistener=v1alpha1-task-listener -oname)" \8080

然后再起个终端去访问本地的8080端口:

curl -v \-H 'Content-Type: application/json' \--data "{}" \http://localhost:8080

看下deault命名空间下是部署多了一个pod在运行:

kubectl get taskruns | grep v1alpha1-task-run-


这就完成通过发送Http请求到eventlistner服务然后触发taskrun的实例化的过程。

总结

使用trigger将大大简化我们实例化tekton中资源的过程,trigger不仅可以实例化taskrun、pipelineRun,还能实例化tekton中的其他资源。目前来讲trigger唯一的不足是不能通过trigger来动态删除tekton的资源,相信以后会有改进。

关注微信公众号“云原生手记”获取更多tekton动态

云原生Tekton之触发器Trigger相关推荐

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

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

  2. 初探云原生应用管理之:聊聊 Tekton 项目

    [编者的话]"人间四月芳菲尽,山寺桃花始盛开." 越来越多专门给 Kubernetes 做应用发布的工具开始缤纷呈现,帮助大家管理和发布不断增多的 Kubernetes 应用.在做 ...

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

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

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

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

  5. 云原生的 CICD 框架:Tekton

    作者 | AddoZhang 来源 | 云原生指北 Tekton 是 Google 开源的 Kubernetes 原生CI/CD 系统,功能强大扩展性强.前身是 Knavite 里的 build-pi ...

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

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

  7. 直播 | 初探云原生应用管理之:聊聊 Tekton 项目

    分享时间:8月15日 20:30 分享主题:初探云原生应用管理之:聊聊 Tekton 项目 分享人介绍:邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交 ...

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

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

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

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

最新文章

  1. 【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换
  2. k8s edit命令使用示例
  3. 单链表之无头和有头--逆序
  4. 第四节:Task的启动的四种方式以及Task、TaskFactory的线程等待和线程延续的解决方案
  5. Java校招笔试题-Java基础部分(五)
  6. java返回泛型_Java泛型从泛型方法返回持有者对象
  7. CMS系统评测,主流自助建站系统比较排名
  8. 图解深度学习-梯度下降学习率可视化
  9. 关于win10自带邮箱绑定163邮箱的设置
  10. python average函数怎么用,Python Numpy MaskedArray.average()用法及代码示例
  11. cygwin安装配置apt-cyg工具
  12. Cisco与H3C交换机互联的小风波
  13. 沅湘流不尽,屈子怨更深,日暮秋风起,潇潇枫树林。
  14. 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进...
  15. 自学闲置电脑部署NAS服务器打造家庭影院
  16. C++ atof函数
  17. 链表与其多种接口实现1
  18. java用模板生成word(docx)文档(含动态表格)
  19. 荣耀智慧屏鸿蒙远程控制电脑,荣耀智慧屏评测:鸿蒙OS加持 面向未来的超智能电视...
  20. 聘用计算机人员申请书范文,岗位聘用的申请书格式范文精选(2)

热门文章

  1. Python pip/pip3 常用命令
  2. onSubmit 使用
  3. 编译原理-词法分析器
  4. JRTPLIB使用实例
  5. uniapp开发:uniapp快速体验vue3.2之setup语法糖,怎么使用怎么爽
  6. 最新Python 实现自动登录抖音(京东),实现滑块自动滑过
  7. 关于某日头条_signature参数逆向生成纯补环境
  8. linux查看tomcat 控制台,linux 下查看Tomcat的状态,以及开启停止服务命令
  9. 绕不开的TCP之三次握手
  10. 分布式系统与网络分区