Управление компонентом 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 (Deployment, Service, ConfigMap, 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 используется при настройке webhook в вашем 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) могут отправлять webhook на 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
Создайте Service типа 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
Получите host 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 в namespace по умолчанию (
tekton-pipelines) - Формат:
http://<service-name>.<namespace>:<port>/v1 - Если Tekton Hub развернут в другом namespace, скорректируйте namespace в URL соответственно
- Namespace в
hub-url— это namespace, где развернут Tekton Hub, он может отличаться от namespace 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>на ваше пространство имен PAC):
Пример вывода:
-
Проверьте логи подов на наличие ошибок:
Пример вывода:
-
Проверьте, что конфигурация применена:
Пример вывода:
Откат конфигурации
Если нужно откатить изменение конфигурации:
-
Восстановите предыдущую конфигурацию в CR
OpenShiftPipelinesAsCode: -
Или восстановите из резервной копии:
Создайте резервную копию перед изменениями:
Восстановите из резервной копии:
Частые обновления конфигурации
Изменение имени приложения
Включение обнаружения ошибок
Обновление URL Hub
Если Tekton Hub развернут в другом namespace или вы хотите использовать внешний Hub:
Чтобы найти сервис Tekton Hub:
Пример вывода:
Отключение удаленных задач
Настройка ссылок кастомной консоли
Для интеграции PAC с вашей кастомной консолью настройте ссылки консоли. Это позволяет ссылкам статуса пайплайна в 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 (Deployment, Service, ConfigMap и др.)
- Очистит 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 Service для 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— внутренний ресурс оператора. Не удаляйте его вручную. -
Удалите оставшиеся ресурсы вручную: