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