Настройка пользовательских сертификатов
Это руководство предназначено для администраторов кластера, которым нужно настроить PAC для доверия самоподписанным сертификатам или пользовательским CA-сертификатам для Git-провайдеров.
Примечание: В этом документе <pac-namespace> или tekton-pipelines обозначает namespace, в котором развернут PAC. Namespace по умолчанию — tekton-pipelines, но вы можете изменить его с помощью targetNamespace в CR OpenShiftPipelinesAsCode. Замените <pac-namespace> или tekton-pipelines на фактическое имя вашего namespace, если оно отличается.
В этом руководстве объясняется, как настроить PAC для работы с сервисами хостинга Git, использующими самоподписанные сертификаты или пользовательские CA-сертификаты, например GitHub Enterprise или self-hosted GitLab.
Содержание
Предварительные требованияОбзорШаг 1: Подготовьте CA-сертификатШаг 2: Создайте ConfigMap с CA-сертификатомСпособ 1: Из файлаСпособ 2: Ручное созданиеШаг 3: Примонтируйте сертификат в контроллер PACДля CROpenShiftPipelinesAsCodeДля CR TektonConfigШаг 4: Примените конфигурациюШаг 5: Проверьте конфигурацию сертификатаПроверьте, что сертификат примонтированПроверьте логи контроллера PACПроверьте с репозиториемУстранение неполадокПроверьте, не является ли сертификат недовереннымПроверьте, не истек ли срок действия сертификатаНеверный сертификатPod не перезапускаетсяНесколько сертификатовВариант 1: Объединить сертификаты в одном ConfigMapВариант 2: Использовать отдельные ConfigMapРекомендации1. Управление сертификатами2. Безопасность3. Устранение неполадокСледующие шагиПредварительные требования
Перед настройкой пользовательских сертификатов убедитесь, что у вас есть:
- Развернутый компонент PAC
- Права администратора в кластере
- Доступ к файлу CA-сертификата
- Возможность изменить CR
OpenShiftPipelinesAsCodeили CRTektonConfig
Обзор
Когда ваш сервис хостинга Git использует самоподписанные сертификаты или сертификаты, подписанные пользовательским CA, pod'ы контроллера PAC должны доверять этим сертификатам, чтобы успешно подключаться к Git-сервису. Для этого требуется:
- Создать ConfigMap с CA-сертификатом
- Примонтировать сертификат в pod'ах контроллера PAC
- Настроить Git на использование этого сертификата
Шаг 1: Подготовьте CA-сертификат
Получите файл CA-сертификата у администратора вашего сервиса хостинга Git или в центре сертификации вашей организации.
Распространенные расположения CA-сертификатов:
- Self-hosted GitLab: Обычно доступен в установке GitLab или у CA вашей организации
- GitHub Enterprise: Доступен у администратора GitHub Enterprise Server
Файл сертификата должен быть в формате PEM:
Шаг 2: Создайте ConfigMap с CA-сертификатом
Создайте ConfigMap, содержащий CA-сертификат, в namespace PAC (по умолчанию: tekton-pipelines, замените на фактический namespace PAC, если он отличается):
Способ 1: Из файла
Пример вывода:
Способ 2: Ручное создание
Создайте YAML-файл git-ca-cert-configmap.yaml:
Примените его:
Пример вывода:
Примечание: Замените <your-ca-certificate-content> фактическим содержимым сертификата.
Шаг 3: Примонтируйте сертификат в контроллер PAC
Примонтируйте сертификат в pod'ах контроллера PAC, обновив CR OpenShiftPipelinesAsCode или CR TektonConfig.
Для CR OpenShiftPipelinesAsCode
Если вы используете CR OpenShiftPipelinesAsCode:
Для CR TektonConfig
Если вы используете CR TektonConfig (для развертываний в OpenShift):
Важно:
- Сертификат монтируется в контейнере по пути
/etc/ssl/certs/git-ca.crt - Переменные окружения
GIT_SSL_CAINFOиSSL_CERT_FILEуказывают Git использовать этот сертификат - После обновления CR Operator автоматически перезапустит pod'ы контроллера PAC
Шаг 4: Примените конфигурацию
Примените обновленный CR:
Пример вывода:
Дождитесь перезапуска pod'ов контроллера PAC:
Пример вывода:
Шаг 5: Проверьте конфигурацию сертификата
Проверьте, что сертификат примонтирован
Убедитесь, что сертификат примонтирован в pod контроллера PAC:
Пример вывода:
Вы должны увидеть конфигурацию volume, показывающую, что сертификат примонтирован.
Проверьте логи контроллера PAC
Проверьте логи контроллера PAC на наличие ошибок, связанных с сертификатами:
Если все настроено правильно, в логах не должно быть ошибок SSL/TLS-сертификата.
Проверьте с репозиторием
Запустите тестовый pipeline из репозитория, размещенного в вашем Git-сервисе:
Пример вывода:
Проверьте, что PipelineRun создан успешно:
Пример вывода:
Устранение неполадок
Проверьте, не является ли сертификат недоверенным
Проблема: PAC по-прежнему не может подключиться к вашему Git-сервису из-за проблем с сертификатом.
Решения:
- Проверьте формат сертификата: Убедитесь, что сертификат находится в формате PEM с корректными маркерами BEGIN/END
- Проверьте путь к сертификату: Убедитесь, что сертификат примонтирован по правильному пути
- Проверьте переменные окружения: Убедитесь, что
GIT_SSL_CAINFOиSSL_CERT_FILEзаданы правильно - Проверьте ConfigMap: Убедитесь, что ConfigMap существует и содержит сертификат:
Пример вывода:
Проверьте, не истек ли срок действия сертификата
Проблема: Срок действия CA-сертификата истек.
Решения:
-
Получите новый CA-сертификат у центра сертификации
-
Обновите ConfigMap:
Пример вывода:
-
Перезапустите pod'ы контроллера PAC:
Неверный сертификат
Проблема: Используется неверный CA-сертификат для вашего Git-сервиса.
Решения:
- Убедитесь, что вы используете правильный CA-сертификат для вашего сервиса хостинга Git
- Для self-hosted сервисов получите сертификат непосредственно у сервиса
- Для enterprise-сервисов обратитесь к администратору за правильным сертификатом
Pod не перезапускается
Проблема: Pod'ы контроллера PAC не перезапускаются после обновления CR.
Решения:
-
Проверьте статус CR:
Пример вывода:
-
Проверьте логи Operator:
Пример вывода (пример записей журнала):
- Перезапустите deployment вручную:
Несколько сертификатов
Если вам нужно доверять нескольким CA-сертификатам (например, для нескольких сервисов хостинга Git), вы можете:
Вариант 1: Объединить сертификаты в одном ConfigMap
Объедините несколько сертификатов в один файл:
Вариант 2: Использовать отдельные ConfigMap
Используйте отдельные ConfigMap и примонтируйте их в разные расположения, затем настройте Git на использование bundle сертификатов:
Создайте bundle сертификатов, объединив все сертификаты в один файл.
Рекомендации
1. Управление сертификатами
- Храните безопасно: Храните CA-сертификаты в защищенном хранилище
- Контроль версий: Отслеживайте изменения сертификатов в системе контроля версий (если данные не являются конфиденциальными)
- Документация: Документируйте, какие сертификаты используются и каковы их источники
- Контроль срока действия: Отслеживайте сроки истечения сертификатов
2. Безопасность
- Минимальные привилегии: Предоставляйте доступ только к необходимым сертификатам
- Ротация: Регулярно выполняйте ротацию сертификатов
- Проверка: Проверяйте сертификаты перед развертыванием
3. Устранение неполадок
- Сначала тестируйте: Проверьте конфигурацию сертификата на тестовом репозитории перед применением в production
- Мониторинг логов: Регулярно проверяйте логи контроллера PAC на наличие ошибок сертификатов
- Резервные копии: Храните резервные копии рабочих конфигураций сертификатов
Следующие шаги
- Создать Git Secret для PAC - Настройка учетных данных Git-провайдера
- Управление компонентом PAC - Узнайте об управлении развертыванием PAC
- Настроить репозиторий GitHub - Руководство по настройке для GitHub
- Настроить репозиторий GitLab - Руководство по настройке для GitLab
- Распространенные проблемы - Руководство по устранению неполадок