• Русский
  • Развертывание Manual Approval Gate

    Обзор функции

    Manual Approval Gate предоставляет контроллер уровня кластера и webhooks, которые поддерживают пользовательские задачи ApprovalTask. Администраторы должны создать и поддерживать пользовательский ресурс (CR) ManualApprovalGate, чтобы пользователи платформы могли добавлять ручные утверждения в свои pipeline. В этом руководстве объясняется, как развернуть компонент Manual Approval Gate в tekton-pipelines, настроить параметры выполнения и безопасно удалить его.

    Сценарии использования

    • Включение ручных утверждений для всех команд в кластере путем предоставления управляемого контроллера.
    • Настройка развертываний контроллера (например, количества реплик, лимитов ресурсов или ConfigMaps) через контракт options Operator вместо редактирования манифестов.
    • Очистка функций, когда задачи утверждения больше не требуются.

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

    • Alauda DevOps Pipelines v4.6.0 или более поздней версии с доступом cluster-admin.
    • kubectl, настроенный для целевого кластера.

    Шаги

    1. Создайте CR ManualApprovalGate

    Сохраните манифест как manual-approval-gate.yaml и примените его:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: ManualApprovalGate
    metadata:
      name: manual-approval-gate
    spec:
      targetNamespace: tekton-pipelines
      options:
        disabled: false
    kubectl apply -f manual-approval-gate.yaml
    • spec.targetNamespace определяет, где будут создаваться развертывания контроллера, webhooks и ConfigMaps. Мы рекомендуем tekton-pipelines, чтобы компонент оставался рядом с другими службами Tekton, но вы можете указать любой namespace, если он существует (или будет создан) до применения CR.
    • Используйте spec.options, чтобы переопределять Deployments, ConfigMaps или поля image без редактирования сгенерированного YAML. Подробный синтаксис см. в Настройка необязательных параметров конфигурации подкомпонентов.

    2. Проверьте состояние контроллера

    $ kubectl get manualapprovalgates.operator.tekton.dev manual-approval-gate
    
    NAME                   VERSION          READY   REASON
    manual-approval-gate   v0.7.0-4f10729   True
    $ kubectl get deployment -n tekton-pipelines | grep manual-approval-gate
    
    manual-approval-gate-controller     1/1     1            1           1h1m
    manual-approval-gate-webhook        1/1     1            1           1h1m

    Условие READY для CR должно иметь значение True, и вы должны видеть работающие Deployments контроллера и webhook в tekton-pipelines.

    3. Переconfigureйте или принудительно выполните rollout

    • Примените patch к CR, чтобы изменить количество реплик или другие параметры; Operator автоматически выполнит rollout рабочих нагрузок:

      kubectl patch manualapprovalgate manual-approval-gate \
        --type merge \
        --patch '{"spec":{"options":{"deployments":{"manual-approval-gate-controller":{"spec":{"replicas":2}}}}}}'

    4. Удалите Manual Approval Gate

    $ kubectl delete manualapprovalgate manual-approval-gate
    $ kubectl get deployment -n tekton-pipelines | grep manual-approval-gate

    CRD останется установленным, чтобы вы могли позже создать CR заново, но Deployments, Services и Webhooks должны исчезнуть.

    Результаты работы

    • kubectl get manualapprovalgates показывает экземпляр со значением READY=True, VERSION=<release>, а REASON пустым или Installed.
    • kubectl get pods -n tekton-pipelines | grep manual-approval-gate выводит pod'ы контроллера и webhook в состоянии Running.
    • После удаления не остается pod'ов или сервисов с тем же label, а Operator прекращает согласование ресурсов ApprovalTask до тех пор, пока CR не будет создан заново.

    Устранение неполадок

    • CR ManualApprovalGate завис в состоянии NotReady: выполните kubectl describe manualapprovalgate manual-approval-gate, чтобы проверить события, затем просмотрите логи Operator (kubectl logs -n tekton-operator deploy/tekton-operator). Наиболее частые причины — ошибки в именах полей в spec.options или недостаточные привилегии.
    • Pod'ы контроллера/webhook постоянно перезапускаются: выполните describe для проблемных pod'ов в tekton-pipelines, чтобы проверить, отсутствуют ли TLS secrets или configuration maps. Повторное применение CR обычно автоматически пересоздает эти ресурсы.
    • Ресурсы ApprovalTask не создаются: убедитесь, что CR ManualApprovalGate все еще существует и имеет READY=True. Если он был удален или находится в состоянии сбоя, переустановите его перед повторным запуском pipeline пользователями.

    Подробнее