前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tekton入门-trigger

tekton入门-trigger

作者头像
有点技术
发布2020-07-13 11:24:59
2.5K0
发布2020-07-13 11:24:59
举报
文章被收录于专栏:有点技术有点技术

trigger

trigger使用户能够将事件有效负载中的字段映射到资源模板中。换句话说,这允许事件既可以建模也可以将实例化为Kubernetes资源。对于tektoncd/pipeline,这使得将配置封装到PipelineRuns和PipelineResources中变得容易。

安装

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

TriggerTemplates

TriggerTemplate是可以模板化资源的资源。TriggerTemplate具有可在资源模板中任何位置替换的参数。

代码语言:javascript
复制
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
  name: pipeline-template
spec:
  params:
  - name: gitrevision
    description: The git revision
    default: master
  - name: gitrepositoryurl
    description: The git repository url
  - name: message
    description: The message to print
    default: This is the default message
  - name: contenttype
    description: The Content-Type of the event
  resourcetemplates:
  - apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    metadata:
      generateName: simple-pipeline-run-
    spec:
      pipelineRef:
        name: simple-pipeline
      params:
      - name: message
        value: $(params.message)
      - name: contenttype
        value: $(params.contenttype)
      resources:
      - name: git-source
        resourceSpec:
          type: git
          params:
          - name: revision
            value: $(tt.params.gitrevision)
          - name: url
            value: $(tt.params.gitrepositoryurl)

TriggerBindings

按照名称,TriggerBindings绑定事件/触发器。使用TriggerBindings可以捕获事件中的字段并将其存储为参数。故意将TriggerBindings与TriggerTemplates分开以鼓励它们之间的重用。

apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerBinding metadata: name: pipeline-binding spec: params:

•name: gitrevision value: (body.head_commit.id)•name: gitrepositoryurl value: (body.repository.url)•name: contenttype value:

TriggerBindings连接到EventListener内的TriggerTemplates,在该模板上实际实例化Pod,以“侦听”各个事件

多个绑定

在EventListener中,您可以将多个绑定指定为触发器的一部分。这使您可以创建可重用的绑定,这些绑定可以与各种触发器混合并匹配。例如,触发器具有一个绑定,该绑定提取事件信息,而另一个绑定提供部署环境信息:

代码语言:javascript
复制
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: event-binding
spec:
  params:
    - name: gitrevision
      value: $(body.head_commit.id)
    - name: gitrepositoryurl
      value: $(body.repository.url)
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: prod-env
spec:
  params:
    - name: environment
      value: prod
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: staging-env
spec:
  params:
    - name: environment
      value: staging
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
  name: listener
spec:
  triggers:
    - name: prod-trigger
      bindings:
        - name: event-binding
        - name: prod-env
      template:
        name: pipeline-template
    - name: staging-trigger
      bindings:
        - name: event-binding
        - name: staging-env
      template:
        name: pipeline-template

EventListener

EventListener是Kubernetes的自定义资源,它允许用户以声明的方式处理带有JSON负载的基于HTTP的传入事件。EventListeners公开了传入事件指向的可寻址“接收器”。用户可以声明TriggerBindings来从事件中提取字段,并将其应用于TriggerTemplates以创建Tekton资源。此外,EventListeners允许使用事件拦截器进行轻量级的事件处理。

•webhook•GitHub•GitLab•Bitbucket•CEL

以gitlab为例如下,绑定trigger template和TriggerBindings及eventlisteners关联起来

代码语言:javascript
复制
  podTemplate: {}
  serviceAccountName: tekton-triggers-gitlab-sa
  triggers:
  - bindings:
    - kind: TriggerBinding
      ref: gitlab-push-binding
    interceptors:
    - gitlab:
        eventTypes:
        - Push Hook
        secretRef:
          secretKey: secretToken
          secretName: gitlab-secret
    name: gitlab-push-events-trigger
    template:
      name: gitlab-echo-template

使用gitlab拦截器执行任务

代码语言:javascript
复制
git clone https://github.com/tektoncd/triggers

kubectl apply -f examples/gitlab/

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


curl -v \
-H 'X-GitLab-Token: 1234567' \
-H 'X-Gitlab-Event: Push Hook' \
-H 'Content-Type: application/json' \
--data-binary "@examples/gitlab/gitlab-push-event.json" \
http://localhost:8080
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有点技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • trigger
  • 安装
  • TriggerTemplates
  • TriggerBindings
    • 多个绑定
    • EventListener
    • 使用gitlab拦截器执行任务
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档