Tekton Trigger EventListener 基础
  1m9rJBpbaLoS 2023年12月12日 18 0

EventListener 概述

EventListener 是一个 Kubernetes 对象,用于侦听 Kubernetes 集群上指定端口上的事件。它公开了一个可寻址接收器,用于接收传入事件并指定一个或多个Triggers。sink是一个 Kubernetes 服务,在专用 Pod 内运行sink逻辑。
每个Trigger又允许您指定一个或多个 TriggerBindings(允许您从事件负载中提取字段及其值)以及一个或多个 TriggerTemplates(从相应的 TriggerBindings 接收字段值),并允许 Tekton Triggers使用该数据实例化资源,例如 TaskRuns 和 PipelineRuns。
如果您需要在将事件有效负载数据传递到 TriggerBinding 之前对其进行修改、过滤或验证,您可以选择指定一个或多个Interceptors.

EventListener 资源规范

apiVersion: triggers.tekton.dev/v1beta1    # 指定目标API版本,例如triggers.tekton.dev/v1alpha1
kind: EventListener                        # 指定此 Kubernetes 资源是 EventListener 对象
metadata:                                  # 指定该资源的元数据
  name: eventlistener
spec:                                      # 指定EventListener 的配置
  serviceAccountName:                      # 指定 EventListener 将用于实例化 Tekton 资源的 ServiceAccount
  triggers:                               # 指定在事件检测时执行的Triggers列表
    - name:                                # (可选)唯一标识Trigger的有效 Kubernetes 名称
      interceptors:                       # (可选)拦截器列表,在将事件有效负载数据传递给关联的 TriggerBinding 之前将对其进行处理
      bindings:                           # (可选)此Trigger的 TriggerBindings 列表;您可以引用现有的 TriggerBindings 或直接嵌入它们的定义
      template:                           # (可选)此Trigger的 TriggerTemplate;您可以引用现有的 TriggerTemplate 或直接嵌入其定义
      triggerRef:                         # (可选)对外部Trigger的引用
  cloudEventURI:                          # 指定cloudevent接收器的URI
  triggerGroups:                           # TriggerGroups 是一项功能,允许您指定一组拦截器,这些拦截器将在事件侦听器处理一组触发器资源之前进行处理。
    - name:                                # (可选)唯一标识Trigger的有效 Kubernetes 名称
      interceptors:                       # (可选)拦截器列表,在将事件有效负载数据传递给关联的 TriggerBinding 之前将对其进行处理
      triggerSelector:                     # Kubernetes labelSelector 和 namespaceSelector 的组合,这两个字段一起定义拦截器处理完成后将处理的触发器。
        labelSelector:
          matchLabels:
            type: github-pr
        namespaceSelector:
          matchNames:
            - foo
  resources:                              # 指定事件侦听服务可用的资源
    kubernetesResource:
      spec:
        template:
          spec:
            serviceAccountName: 
            containers:
              - resources:
                  requests:
                    memory: "64Mi"
                    cpu: "250m"
                  limits:
                    memory: "128Mi"
                    cpu: "500m"
  namespaceSelector:                      # 指定EventListener的命名空间;这是 EventListener 查找指定触发器并存储在事件检测时实例化的 Tekton 对象的位置
    matchNames:
    - foo
    - bar
    - "*"
  labelSelector:                          # 指定 EventListener 识别触发器并实例化指定 Tekton 对象的标签
    matchLabels:
      foo: bar
    matchExpressions:
      - {key: environment, operator: In, values: [dev,stage]}
      - {key: trigger-phase, operator: NotIn, values: [testing]}

EventListener 暴露到外部

LoadBalancer

spec:
  resources:
    kubernetesResource:
      serviceType: LoadBalancer

NodePort

spec:
  resources:
    kubernetesResource:
      serviceType: NodePort

EventListener 示例

apiVersion: triggers.tekton.dev/v1beta1    
kind: EventListener                        
metadata:                                  
  name: eventlistener
spec:                    
  triggers:
    - name: trigger-1
      serviceAccountName: trigger-1-sa
      interceptors:
        - ref:
            name: "gitlab"
          params:
          - name: "secretRef"
            value:
              secretName: foo
              secretKey: bar
          - name: "eventTypes"
            value: ["Push Hook"]
      bindings:
        - ref: pipeline-binding
        - ref: message-binding
      template:
        ref: pipeline-template

参考文档

https://tekton.dev/docs/triggers/eventlisteners/



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Tekton 基础 下一篇: Tekton 认证配置
  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
1m9rJBpbaLoS