本篇的内容是在一个现成的pipeline的基础上,配置一个trigger,最后用curl命令触发运行来验证功能。
准备工作
-
安装tekton,dashboard环境
具体步骤请按照这篇教程操作:
https://tekton.dev/docs/dashboard/tutorial/
建议按照文中说明跑一个pipelineRun验证下系统是否正常 -
安装trigger
kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/interceptors.yaml
-
无脑配置rbac
kubectl apply -f https://raw.githubusercontent.com/tektoncd/triggers/v0.20.0/examples/rbac.yaml
关于sa具体说明看这里:https://tekton.dev/docs/triggers/eventlisteners/#specifying-the-kubernetes-service-account
上述准备工作做完了之后,我们就有了一个完整的tekton系统,一个dashboard的web UI,
以及有一个hello-goodbye
的Pipeline
之后会用到。
配置Trigger相关资源
接下来开始进入本文正题,Trigger主要就是TriggerTemplate,TriggerBinding,EventListener三件套:
- EventListener 负载创建一个service监听触发请求,再定义
Trigger
粘合一下TriggerTemplate
和TriggerBinding
- TriggerBinding 处理下传进来的参数,把json变成一个个kv对,供TriggerTemplate使用。
- TriggerTemplate 内部定义一个PipelineRun,指定下要用到的某一个
pipeline
这个例子实际上没有用到TriggerBinding
,但是不写又不行,所以随便写一点。
完整的配置如下:
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
name: tekton-demo-triggertemplate
spec:
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: tekton-demo-
spec:
serviceAccountName: tekton-triggers-example-sa
pipelineRef:
name: hello-goodbye
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: tekton-demo-listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- bindings:
- ref: tekton-demo-pipelinebinding
template:
ref: tekton-demo-triggertemplate
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
name: tekton-demo-pipelinebinding
spec:
params:
- name: foo
value: bar
测试运行
-
先将service端口暴露出来
kubectl port-forward service/el-tekton-demo-listener 8080 &
-
发送请求,这里必须是json格式的,不然会报错。
#curl -X POST http://localhost:8080 -H 'Content-Type: application/json' -d '{ }' Handling connection for 8080 {"eventListener":"tekton-demo-listener","namespace":"default","eventListenerUID":"1ce49b54-578c-40b4-a86e-32221f5299c1", "eventID":"580bc66a-8b65-44eb-bdc5-a7076bfe8a0b"}
可以看到会返回一个eventID,这样就可以知道哪个请求对应那次触发。
-
查看运行结果,点开dashboard可以看到已经成功运行了。