Управление компонентом PAC
Это руководство предназначено только для администраторов кластера. В нем описываются задачи по развертыванию, настройке и обслуживанию компонента PAC, требующие прав администратора кластера.
Обычным пользователям следует обращаться к:
- Configure Repository — настройка интеграции с Git-провайдером
- Maintain Pipeline Code — создание и управление пайплайнами
В этом руководстве объясняется, как развернуть, обновить и удалить компонент Pipelines-as-Code (PAC) на платформах Kubernetes.
Содержание
Предварительные требованияРазвертывание компонента PACРазвертывание компонента PACШаг 1: Создайте CROpenShiftPipelinesAsCodeШаг 2: Примените конфигурациюШаг 3: Проверьте развертываниеНастройка доступаИспользование Ingress (HTTP)Использование Ingress (HTTPS)Использование NodePortКак получить URL контроллера PACПри использовании IngressПри использовании NodePortАвтоматическое определение через tkn pacНастройки конфигурацииОбновление компонента PACОбновление конфигурацииОбновление версии компонентаПроверка обновленийОткат конфигурацииЧастые обновления конфигурацииИзменение имени приложенияВключение обнаружения ошибокОбновление URL HubОтключение удалённых задачНастройка ссылок кастомной консолиУдаление компонента PACУдаление CR OpenShiftPipelinesAsCodeШаг 1: Удалите CRШаг 2: Проверьте удалениеОчистка дополнительных ресурсовУдаление CR репозиториевУдаление секретовУдаление Ingress/ServiceУстранение неполадокПоды PAC не запускаютсяCR OpenShiftPipelinesAsCode не готовПроблемы с TektonInstallerSetCR не удаляетсяРесурсы не удаляютсяСледующие шагиПредварительные требования
Перед управлением PAC убедитесь, что у вас есть:
- Kubernetes кластер (версия 1.24 или выше)
- Установленный и запущенный Tekton Operator
- Права администратора кластера
- Установленный и настроенный kubectl для доступа к вашему кластеру
Развертывание компонента PAC
Поддержка платформы: Несмотря на то, что имя ресурса содержит "OpenShift", PAC можно развернуть на платформах Kubernetes через патч Tekton Operator, который добавляет поддержку контроллера PAC.
PAC разворачивается путем прямого создания CR OpenShiftPipelinesAsCode. Оператор автоматически создаст и будет управлять всеми необходимыми ресурсами для PAC.
Развертывание компонента PAC
Шаг 1: Создайте CR OpenShiftPipelinesAsCode
Создайте YAML-файл с именем pac.yaml:
Важно:
- Имя ресурса должно быть
pipelines-as-code, иначе оператор не развернет компонент PAC. - Поле
targetNamespaceуказывает, в каком пространстве имён будут развернуты компоненты PAC. По умолчанию —tekton-pipelines, но можно использовать любое другое имя.
Создайте пространство имён, если оно не существует:
Шаг 2: Примените конфигурацию
Примените CR в ваш кластер:
Пример вывода:
Шаг 3: Проверьте развертывание
Проверьте статус CR OpenShiftPipelinesAsCode:
Вывод должен показать CR со статусом Ready:
Проверьте статус TektonInstallerSet (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода:
TektonInstallerSet — это внутренний ресурс оператора, используемый Tekton Operator для управления установкой и жизненным циклом компонента PAC. Он служит шаблоном, который оператор использует для создания и управления всеми ресурсами, связанными с PAC (Deployments, Services, ConfigMaps, RBAC и т.д.).
Важно:
- Никогда не создавайте, не изменяйте и не удаляйте
TektonInstallerSetнапрямую - Оператор автоматически создает и управляет им при создании CR
OpenShiftPipelinesAsCode - Вы можете проверять его статус для диагностики, но все изменения должны вноситься через CR
OpenShiftPipelinesAsCode - При удалении CR
OpenShiftPipelinesAsCodeоператор автоматически удалитTektonInstallerSetи все связанные ресурсы
Пример вывода:
Проверьте, что поды PAC запущены:
Пример вывода:
Примечание: В этом документе <pac-namespace> или tekton-pipelines обозначает пространство имён, в котором развернут PAC. Замените его на ваше фактическое имя пространства, если оно отличается.
Вы должны увидеть три пода в состоянии Running:
pipelines-as-code-controller-*pipelines-as-code-watcher-*pipelines-as-code-webhook-*
Настройка доступа
Компонент PAC должен быть доступен извне, чтобы события webhook от Git-провайдеров могли достигать его. URL контроллера PAC используется при настройке вебхуков в вашем Git-провайдере.
Важно: Перед настройкой репозиториев необходимо открыть доступ к контроллеру PAC одним из описанных ниже способов. Команда tkn pac create repo может автоматически определить URL контроллера, если он открыт через Ingress, но его нужно сначала настроить.
Вы можете использовать один из следующих способов для открытия доступа к контроллеру PAC:
Использование Ingress (HTTP)
Если у вас есть доменное имя:
- Укажите в поле
hostваше доменное имя (например,pac.example.com) - Убедитесь, что доменное имя разрешается через DNS в IP-адрес Ingress Controller
- Настройте DNS-запись типа A:
pac.example.com→<Ingress-Controller-IP>
Если доменного имени нет:
- Оставьте поле
hostпустым или удалите строкуhostиз конфигурации Ingress - Доступ к PAC будет осуществляться по IP-адресу и порту:
http://<Ingress-Controller-IP>:<port> - Git-провайдеры (GitLab, GitHub) смогут отправлять вебхуки на IP-адрес
Создайте IngressClass (если ещё не создан):
- Для подробностей смотрите Creating Ingresses.
Создайте ресурс Ingress (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Примените Ingress:
Пример вывода:
Альтернатива: Ingress без доменного имени (без host)
Если у вас нет доменного имени, можно создать Ingress без поля host:
Затем доступ к PAC осуществляется по IP-адресу Ingress Controller:
Использование Ingress (HTTPS)
Требования к TLS-сертификату:
- Необходим действительный TLS-сертификат для вашего доменного имени
- Общие имя (CN) или альтернативное имя субъекта (SAN) сертификата должны совпадать с вашим доменом
- Для продакшена используйте сертификаты от доверенных CA (Let's Encrypt, DigiCert и др.)
Настройка доменного имени:
- HTTPS Ingress требует указания доменного имени в поле
host - Убедитесь в разрешении DNS:
pac.example.com→<Ingress-Controller-IP> - Доступ по IP с HTTPS может вызвать ошибки проверки сертификата
Сначала создайте TLS Secret (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Затем создайте HTTPS Ingress (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Использование NodePort
Создайте сервис NodePort (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Важно:
targetPortдолжен быть8082— порт, на котором под контроллера PAC принимает события webhookport(8080) — порт сервиса для внутреннего общения в кластереnodePort(30080) — внешний порт, доступный извне кластера- Для Ingress порт сервиса 8080 маршрутизируется на порт 8082 контроллера внутри кластера
Получите NodePort (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода:
Доступ к PAC осуществляется по адресу http://<node-ip>:<node-port>.
Как получить URL контроллера PAC
После открытия доступа к контроллеру PAC вы можете получить URL следующими способами:
При использовании Ingress
Получите хост Ingress (замените <pac-namespace> на ваше пространство имён PAC, по умолчанию tekton-pipelines):
Пример вывода:
URL контроллера будет:
- HTTP:
http://<ingress-host> - HTTPS:
https://<ingress-host>
При использовании NodePort
Получите NodePort и IP ноды:
Пример вывода:
Автоматическое определение через tkn pac
При использовании tkn pac create repo CLI автоматически определяет URL контроллера, проверяя:
- Наличие Ingress ресурсов, указывающих на сервис контроллера PAC
- Наличие сервисов типа LoadBalancer
- Наличие сервисов типа NodePort
- Если ничего не найдено, CLI запросит ввод URL вручную
Если автоматическое определение не удалось, вы можете вручную ввести URL контроллера при запросе.
Если вы обычный пользователь и хотите узнать URL контроллера PAC:
- Попробуйте выполнить команды выше (если у вас есть доступ к кластеру)
- Если команды не работают или у вас нет прав, обратитесь к администратору PAC для получения URL
- Администратор может найти URL, используя описанные методы
Примечание: URL контроллера должен быть доступен с серверов Git-провайдера для получения событий webhook.
Настройки конфигурации
Вы можете настроить поведение PAC через поле settings в CR OpenShiftPipelinesAsCode:
Примечание по hub-url:
- Значение по умолчанию указывает на внутренний сервис Tekton Hub в пространстве имён по умолчанию (
tekton-pipelines) - Формат:
http://<service-name>.<namespace>:<port>/v1 - Если Tekton Hub развернут в другом пространстве имён, измените namespace в URL соответственно
- Namespace в
hub-url— это пространство, где развернут Tekton Hub, оно может отличаться от пространства PAC (targetNamespace) - Для использования внешнего Hub (например, публичного Tekton Hub) установите
https://api.hub.tekton.dev/v1 - Только контроллер PAC нуждается в доступе к этому URL
Примечание по custom-console-name и custom-console-url:
- Эти настройки используются для конфигурации кастомных ссылок на консоль в UI Git-провайдера
custom-console-name— отображаемое имя для кастомных ссылокcustom-console-url— базовый URL кастомной консоли (например, Devops Console)custom-console-url-pr-details— шаблон URL для страницы деталей PR/MR. Поддерживает переменные:{{namespace}},{{pipelinerun}}custom-console-url-pr-tasklog— шаблон URL для страницы логов задач PR/MR. Поддерживает переменные:{{namespace}},{{pipelinerun}},{{taskrun}}custom-console-url-namespace— шаблон URL для страницы пространства имён. Поддерживает переменную:{{namespace}}- Это позволяет настроить ссылки в UI Git-провайдера, чтобы они указывали на Devops Console.
Для получения дополнительной информации о настройках PAC смотрите раздел Common Configuration Updates.
Обновление компонента PAC
Обновление конфигурации
-
Отредактируйте CR
OpenShiftPipelinesAsCode: -
Обновите поле
settingsпо необходимости: -
Сохраните и выйдите. Оператор автоматически обновит TektonInstallerSet и применит изменения.
Обновление версии компонента
Для обновления версии PAC обновите Tekton Operator:
- Обновите Tekton Operator до нужной версии
- Оператор автоматически:
- Удалит старый TektonInstallerSet
- Создаст новый TektonInstallerSet с новой версией PAC
- Обновит CR
OpenShiftPipelinesAsCodeс новой версией
Проверьте версию после обновления:
Проверка обновлений
После обновления конфигурации:
-
Проверьте статус CR
OpenShiftPipelinesAsCode:
Пример вывода:
-
Проверьте, не перезапускаются ли поды (замените
<pac-namespace>на ваше пространство имён):
Пример вывода:
-
Проверьте логи подов на наличие ошибок:
Пример вывода:
-
Проверьте, что конфигурация применена:
Пример вывода:
Откат конфигурации
Если необходимо откатить изменение конфигурации:
-
Восстановите предыдущую конфигурацию в CR
OpenShiftPipelinesAsCode: -
Или восстановите из резервной копии:
Создайте резервную копию перед изменениями:
Восстановите из резервной копии:
Частые обновления конфигурации
Изменение имени приложения
Включение обнаружения ошибок
Обновление URL Hub
Если Tekton Hub развернут в другом пространстве имён или вы хотите использовать внешний Hub:
Для поиска сервиса Tekton Hub:
Пример вывода:
Отключение удалённых задач
Настройка ссылок кастомной консоли
Для интеграции PAC с вашей кастомной консолью настройте ссылки. Это позволит отображать ссылки на статус пайплайнов в UI Git-провайдеров (GitLab, GitHub и др.), указывающие на вашу консоль.
Пример конфигурации
Как настроить
Шаг 1: Определите имя вашего кластера
Обратитесь к администратору кластера, чтобы узнать правильное имя. Распространённые примеры:
my-cluster— общее имя кластераbusiness-1— для бизнес-кластера 1dev-cluster— для кластера разработки
Имя кластера появляется в URL как ~CLUSTER_NAME~ (обратите внимание на символы тильды).
Шаг 2: Укажите URL консоли
Установите custom-console-url на точку входа вашей консоли (без завершающего слеша):
https://console.example.comhttps://devops.example.com
Шаг 3: Настройте шаблоны URL
Замените CLUSTER_NAME в шаблонах URL на имя вашего кластера. PAC автоматически заменит следующие переменные:
{{ namespace }}: пространство имён, в котором выполняется PipelineRun{{ pr }}: имя PipelineRun{{ task }}: имя задачи в PipelineRun
Пример: Полная конфигурация
Для кластера с именем my-cluster и консоли по адресу https://console.example.com:
Пример: Сгенерированные ссылки
Когда PAC создаёт PipelineRun с именем my-app-build-abc123 и задачей build-task в пространстве имён my-project:
-
Детали PipelineRun:
-
Логи TaskRun:
-
Список пайплайнов пространства имён:
Эти ссылки будут отображаться в UI вашего Git-провайдера (слияния GitLab, pull requests GitHub и др.), позволяя разработчикам быстро переходить в вашу кастомную консоль.
Удаление компонента PAC
Удаление CR OpenShiftPipelinesAsCode
Шаг 1: Удалите CR
Пример вывода:
Оператор автоматически:
- Удалит TektonInstallerSet (внутренний ресурс оператора)
- Удалит все ресурсы, связанные с PAC (Deployments, Services, ConfigMaps и др.)
- Очистит RBAC ресурсы
Примечание: TektonInstallerSet — внутренний ресурс оператора. Не удаляйте его вручную. Оператор управляет его жизненным циклом автоматически.
Шаг 2: Проверьте удаление
Проверьте, что CR OpenShiftPipelinesAsCode удалён:
Проверьте, что TektonInstallerSet удалён (замените <pac-namespace> на ваше пространство имён PAC):
Примечание: Это проверка только для чтения, чтобы убедиться, что внутренний ресурс оператора очищен. Не пытайтесь удалять TektonInstallerSet вручную.
Пример вывода (должен быть пустым, если удаление прошло успешно):
Проверьте, что поды PAC завершены:
Пример вывода (должен быть пустым, если удаление прошло успешно):
Очистка дополнительных ресурсов
После удаления PAC вы можете очистить дополнительные ресурсы:
Удаление CR репозиториев
Если у вас есть созданные Repository CR для интеграции с Git-провайдером:
Пример вывода:
Удаление секретов
Важно: При удалении CR OpenShiftPipelinesAsCode оператор автоматически очищает секреты с меткой app.kubernetes.io/part-of=pipelines-as-code в пространстве имён PAC. Однако секреты, связанные с Repository CR, созданные для аутентификации Git-провайдера, нужно удалять вручную.
Секреты, которые очищаются автоматически (в пространстве имён PAC):
pipelines-as-code-secret— внутренний секрет контроллера PAC (с меткойapp.kubernetes.io/part-of=pipelines-as-code)
Секреты, требующие ручной очистки (в пространствах имён Repository CR):
gitlab-secret/github-secret— токены доступа Git-провайдераwebhook-secret— секреты для проверки webhookgit-auth-secret— токены доступа к приватным репозиториямgit-ssh-secret— SSH-ключи для доступа к репозиториям
Чтобы найти и удалить секреты, связанные с Repository CR:
-
Список всех секретов в пространстве имён, где расположены Repository CR:
-
Определите секреты, созданные вами для PAC Repository CR.
Примечание: Имена секретов могут отличаться в зависимости от способа создания. Внимательно просмотрите список, чтобы определить связанные с PAC секреты.
-
Перед удалением убедитесь, что:
- Все Repository CR, использующие секрет, удалены
- Секрет не используется другими приложениями или ресурсами в кластере
- Вы уверены, что секрет можно безопасно удалить
-
Удалите секрет только если уверены, что он больше не нужен:
Предупреждение:
- Секреты могут использоваться несколькими Repository CR или другими ресурсами
- Удаление используемого секрета приведёт к сбоям аутентификации
- Всегда проверяйте, что секрет не используется, перед удалением
Пример вывода:
Удаление Ingress/Service
Если вы создавали Ingress или сервис NodePort для PAC (замените <pac-namespace> на ваше пространство имён PAC):
Пример вывода:
Устранение неполадок
Поды PAC не запускаются
Проверьте логи подов (замените <pac-namespace> на ваше пространство имён PAC):
Пример вывода (пример записей логов):
CR OpenShiftPipelinesAsCode не готов
Проверьте статус CR и события:
Пример вывода (сокращённый):
Проблемы с TektonInstallerSet
Важно: TektonInstallerSet — внутренний ресурс оператора. При проблемах с ним не изменяйте и не удаляйте его напрямую. Решайте проблемы через CR OpenShiftPipelinesAsCode.
Проверьте статус TektonInstallerSet для диагностики (замените <pac-namespace> на ваше пространство имён PAC):
Если TektonInstallerSet показывает ошибки:
- Проверьте статус CR
OpenShiftPipelinesAsCodeна наличие проблем - Просмотрите логи оператора для подробных сообщений об ошибках
- При необходимости удалите и создайте заново CR
OpenShiftPipelinesAsCode(оператор автоматически пересоздаст TektonInstallerSet)
Пример вывода (сокращённый):
CR не удаляется
Если CR OpenShiftPipelinesAsCode не удаляется, проверьте наличие finalizers:
Пример вывода (если finalizers есть):
Если finalizers отсутствуют, вывод будет пустым, что означает, что CR можно удалить.
Если finalizers есть, оператор может ещё обрабатывать удаление. Подождите несколько минут и попробуйте снова.
Ресурсы не удаляются
Если некоторые ресурсы не удаляются автоматически:
-
Проверьте статус TektonInstallerSet для диагностики (замените
<pac-namespace>на ваше пространство имён PAC):Примечание: Это проверка только для чтения.
TektonInstallerSet— внутренний ресурс оператора. Не удаляйте его вручную. -
Удалите оставшиеся ресурсы вручную: