云原生Tekton之触发器Trigger
背景
前面的文章讲了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相关推荐
- 云原生CI/CD:Tekton之trigger介绍
云原生CI/CD:Tekton之trigger组件 简介 上面背景图片用了一张手枪扳机的图片,啥意思呢?trigger对于pipeline的作用就像扳机对于手枪的作用的,读完文章再来体会这句话. 前面 ...
- 初探云原生应用管理之:聊聊 Tekton 项目
[编者的话]"人间四月芳菲尽,山寺桃花始盛开." 越来越多专门给 Kubernetes 做应用发布的工具开始缤纷呈现,帮助大家管理和发布不断增多的 Kubernetes 应用.在做 ...
- 云原生CI/CD:tekton/pipeline之认证篇
云原生CI/CD:tekton/pipeline之认证篇 既然说tekton/pipeline是CI/CD,必然需要用到拉取git仓库代码,仓库代码可能是私有的,看下tekton/pipeline在这 ...
- 云原生 CI/CD 框架 Tekton 初体验
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pi ...
- 云原生的 CICD 框架:Tekton
作者 | AddoZhang 来源 | 云原生指北 Tekton 是 Google 开源的 Kubernetes 原生CI/CD 系统,功能强大扩展性强.前身是 Knavite 里的 build-pi ...
- 云原生CI/CD:Tekton/pipelin之pipeline概念篇
云原生CI/CD:Tekton/pipelin之pipeline概念篇 本节介绍下tekton中pipeline概念.作为云原生的CI/CD神器在之前介绍的task和taskrun之后,还有什么强大的 ...
- 直播 | 初探云原生应用管理之:聊聊 Tekton 项目
分享时间:8月15日 20:30 分享主题:初探云原生应用管理之:聊聊 Tekton 项目 分享人介绍:邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交 ...
- 开源云原生CI/CD框架Tekton国内部署方式
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...
- 云原生CI/CD框架Tekton国内部署方式
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...
最新文章
- 【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换
- k8s edit命令使用示例
- 单链表之无头和有头--逆序
- 第四节:Task的启动的四种方式以及Task、TaskFactory的线程等待和线程延续的解决方案
- Java校招笔试题-Java基础部分(五)
- java返回泛型_Java泛型从泛型方法返回持有者对象
- CMS系统评测,主流自助建站系统比较排名
- 图解深度学习-梯度下降学习率可视化
- 关于win10自带邮箱绑定163邮箱的设置
- python average函数怎么用,Python Numpy MaskedArray.average()用法及代码示例
- cygwin安装配置apt-cyg工具
- Cisco与H3C交换机互联的小风波
- 沅湘流不尽,屈子怨更深,日暮秋风起,潇潇枫树林。
- 阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军 IoT 这一年 | 问底中国 IT 技术演进...
- 自学闲置电脑部署NAS服务器打造家庭影院
- C++ atof函数
- 链表与其多种接口实现1
- java用模板生成word(docx)文档(含动态表格)
- 荣耀智慧屏鸿蒙远程控制电脑,荣耀智慧屏评测:鸿蒙OS加持 面向未来的超智能电视...
- 聘用计算机人员申请书范文,岗位聘用的申请书格式范文精选(2)