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

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

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

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

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

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

    • 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, а в tekton-pipelines должны быть запущены Deployments контроллера и webhook.

    3. Измените конфигурацию или принудительно выполните rollout

    • Примените patch к CR, чтобы изменить число replicas или другие параметры; 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'ов или services с тем же label, а Operator прекращает синхронизировать ресурсы ApprovalTask до тех пор, пока CR не будет создан снова.

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

    • CR ManualApprovalGate застрял в состоянии NotReady: выполните kubectl describe manualapprovalgate manual-approval-gate, чтобы проверить events, затем просмотрите логи 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. Если он был удален или работает с ошибкой, переустановите его перед повторным запуском pipelines пользователями.

    Дополнительные сведения