• Русский
  • Быстрый старт

    Этот учебник поможет вам начать работу с Tekton Triggers, создав простой сценарий триггера "Hello World", чтобы продемонстрировать его базовую функциональность.

    Предварительные требования

    1. Требования к окружению

      • Kubernetes версии 1.21 или выше
      • Установленный Tekton Operator
      • Убедитесь, что Tekton Triggers установлен и готов к использованию через Operator
    2. Необходимые инструменты

      • командная строка kubectl
      • curl (для тестирования триггеров)
    3. Разрешения

      • Требуются привилегии администратора пространства имен

    Создание примерного проекта

    Создать пространство имен (необязательно)

    Tip

    Если вы не хотите создавать пространство имен, вы можете пропустить этот шаг и изменить имя пространства имен в примере ниже.

    kubectl create namespace tekton-triggers-demo

    Создать учетную запись сервиса и разрешения

    Создайте файл rbac.yaml:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: tekton-triggers-example-sa
      namespace: tekton-triggers-demo
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tekton-triggers-example-binding
      namespace: tekton-triggers-demo
    subjects:
      - kind: ServiceAccount
        name: tekton-triggers-example-sa
        namespace: tekton-triggers-demo
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: tekton-triggers-eventlistener-roles
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: tekton-triggers-example-clusterbinding
    subjects:
      - kind: ServiceAccount
        name: tekton-triggers-example-sa
        namespace: tekton-triggers-demo
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: tekton-triggers-aggregate-view

    Применить конфигурацию

    kubectl apply -f rbac.yaml

    Создать TaskRun Hello World

    Создать задачу

    Создайте файл hello-task.yaml:

    apiVersion: tekton.dev/v1beta1
    kind: Task
    metadata:
      name: hello-task
      namespace: tekton-triggers-demo
    spec:
      params:
        - name: message
          description: Сообщение для вывода
          type: string
          default: "Hello World!"
      steps:
        - name: echo
          image: alpine
          script: |
            echo "$(params.message)"

    Создать шаблон триггера

    Создайте файл trigger-template.yaml:

    apiVersion: triggers.tekton.dev/v1beta1
    kind: TriggerTemplate
    metadata:
      name: hello-template
      namespace: tekton-triggers-demo
    spec:
      params:
        - name: message
          description: Сообщение для вывода
          default: "Hello World!"
      resourcetemplates:
        - apiVersion: tekton.dev/v1beta1
          kind: TaskRun
          metadata:
            generateName: hello-run-
            namespace: tekton-triggers-demo
          spec:
            taskRef:
              name: hello-task
            params:
              - name: message
                value: $(tt.params.message)

    Создать связывание триггера

    Создайте файл trigger-binding.yaml:

    apiVersion: triggers.tekton.dev/v1beta1
    kind: TriggerBinding
    metadata:
      name: hello-binding
      namespace: tekton-triggers-demo
    spec:
      params:
        - name: message
          value: $(body.message)

    Создать слушатель событий

    Создайте файл event-listener.yaml:

    apiVersion: triggers.tekton.dev/v1beta1
    kind: EventListener
    metadata:
      name: hello-listener
      namespace: tekton-triggers-demo
    spec:
      serviceAccountName: tekton-triggers-example-sa
      triggers:
        - name: hello-trigger
          bindings:
            - ref: hello-binding
          template:
            ref: hello-template

    Применить конфигурацию

    Примените все созданные ресурсы:

    kubectl apply -f hello-task.yaml
    kubectl apply -f trigger-template.yaml
    kubectl apply -f trigger-binding.yaml
    kubectl apply -f event-listener.yaml

    Тестирование триггера

    Получить URL слушателя событий

    # Подождите, пока Pod станет готовым
    kubectl get pods -n tekton-triggers-demo
    
    # Получите адрес службы
    export EL_URL=$(kubectl get el hello-listener -n tekton-triggers-demo -o jsonpath='{.status.address.url}')
    Tip

    Различные настройки сети кластера могут помешать прямому использованию этого адреса. Если вы столкнетесь с проблемами, пожалуйста, свяжитесь с администратором вашей платформы.

    Отправить тестовый запрос

    curl -v -H 'Content-Type: application/json' -d '{"message":"Hello, Tekton!"}' $EL_URL

    Просмотреть результаты

    # Просмотреть созданный TaskRun
    kubectl get taskrun -n tekton-triggers-demo
    
    # Просмотреть логи конкретного TaskRun
    kubectl logs -l eventlistener=hello-listener -n tekton-triggers-demo

    Очистить ресурсы

    После тестирования вы можете удалить созданные ресурсы:

    kubectl delete namespace tekton-triggers-demo

    Следующие шаги

    Теперь, когда вы успешно создали и протестировали базовый пример Tekton Triggers, вы можете:

    1. Изучить концепции Tekton Triggers
    2. Узнать, как использовать Настройку слушателей событий для общих инструкций по настройке
    3. Настроить и использовать Gitlab события для триггера пайплайнов

    Часто задаваемые вопросы

    1. Pod слушателя событий не запускается

      • Проверьте правильность настройки RBAC
      • Убедитесь, что учетная запись сервиса имеет достаточные привилегии
    2. Триггер не отвечает

      • Проверьте, доступна ли служба слушателя событий
      • Проверьте правильность формата запроса
      • Просмотрите логи Pod слушателя событий
    3. TaskRun не создан

      • Убедитесь, что конфигурация TriggerTemplate корректна
      • Проверьте сопоставление параметров в TriggerBinding
      • Просмотрите журналы ошибок слушателя событий