Tekton笔记(一)之trigger

168 阅读2分钟

本篇的内容是在一个现成的pipeline的基础上,配置一个trigger,最后用curl命令触发运行来验证功能。

准备工作

  1. 安装tekton,dashboard环境 具体步骤请按照这篇教程操作: tekton.dev/docs/dashbo… 建议按照文中说明跑一个pipelineRun验证下系统是否正常

  2. 安装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
    
  3. 无脑配置rbac

    kubectl apply -f https://raw.githubusercontent.com/tektoncd/triggers/v0.20.0/examples/rbac.yaml
    

    关于sa具体说明看这里:

    tekton.dev/docs/trigge…

上述准备工作做完了之后,我们就有了一个完整的tekton系统,一个dashboard的web UI,

以及有一个hello-goodbyePipeline之后会用到。

配置Trigger相关资源

接下来开始进入本文正题,Trigger主要就是TriggerTemplate,TriggerBinding,EventListener三件套:

  • EventListener 负载创建一个service监听触发请求,再定义Trigger粘合一下TriggerTemplateTriggerBinding
  • 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

测试运行

  1. 先将service端口暴露出来

    kubectl port-forward service/el-tekton-demo-listener 8080 &
    
  2. 发送请求,这里必须是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,这样就可以知道哪个请求对应那次触发。

  3. 查看运行结果,点开dashboard可以看到已经成功运行了。

image-20220912181930-neehb8e.png