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

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

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

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

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

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

    • Alauda DevOps Pipelines версии 4.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 определяет, где создаются развертывания контроллера, вебхуки и ConfigMaps. Рекомендуется использовать tekton-pipelines, чтобы компонент находился рядом с другими сервисами Tekton, но вы можете указать любой namespace, при условии, что он существует (или будет создан) до применения CR.
    • Используйте spec.options для переопределения Deployments, ConfigMaps или полей образов без редактирования сгенерированного YAML. Для подробного синтаксиса смотрите Adjusting Optional Configuration Items of Subcomponents.

    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.

    3. Переконфигурируйте или принудительно обновите развертывание

    • Примените патч к CR для изменения количества реплик или других опций; оператор автоматически обновит рабочие нагрузки:

      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, но развертывания, сервисы и вебхуки должны исчезнуть.

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

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

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

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

    Дополнительная информация