Настройка пользовательских сертификатов
Это руководство предназначено для администраторов кластера, которым необходимо настроить PAC так, чтобы он доверял самоподписанным сертификатам или пользовательским сертификатам CA для провайдеров Git.
Примечание: В этом документе <pac-namespace> или tekton-pipelines обозначает namespace, в котором развернут PAC. Namespace по умолчанию — tekton-pipelines, но вы можете изменить его через targetNamespace в CR OpenShiftPipelinesAsCode. Если у вас другое значение, замените <pac-namespace> или tekton-pipelines на фактическое имя вашего namespace.
В этом руководстве объясняется, как настроить PAC для работы с сервисами Git-хостинга, использующими самоподписанные сертификаты или сертификаты, подписанные пользовательским CA. Эта настройка применяется ко всем провайдерам Git (GitHub Enterprise, GitLab self-hosted, Bitbucket Server и т. д.).
Содержание
Предварительные требованияОбзорШаг 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, pods контроллера PAC должны доверять этим сертификатам, чтобы успешно подключаться к сервису Git. Для этого требуется:
- Создать ConfigMap с CA-сертификатом
- Примонтировать сертификат в pods контроллера PAC
- Настроить Git на использование этого сертификата
Шаг 1. Подготовьте CA-сертификат
Получите файл CA-сертификата у администратора вашего сервиса Git-хостинга или в центре сертификации вашей организации.
Типичные расположения CA-сертификатов:
- Self-hosted GitLab: Обычно доступен в установке GitLab или в вашем CA организации
- GitHub Enterprise: Доступен у администратора GitHub Enterprise Server
- Bitbucket Server: Доступен у администратора Bitbucket 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
Примонтируйте сертификат в pods контроллера 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 автоматически перезапустит pods контроллера PAC
Шаг 4. Примените конфигурацию
Примените обновленный CR:
Пример вывода:
Дождитесь перезапуска pods контроллера 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:
Пример вывода:
-
Перезапустите pods контроллера PAC:
Неверный сертификат
Проблема: Используется неверный CA-сертификат для вашего сервиса Git.
Решения:
- Убедитесь, что вы используете правильный CA-сертификат для вашего сервиса Git-хостинга
- Для self-hosted-сервисов получите сертификат напрямую из сервиса
- Для enterprise-сервисов обратитесь к администратору за правильным сертификатом
Pod не перезапускается
Проблема: Pods контроллера PAC не перезапускаются после обновления CR.
Решения:
-
Проверьте статус CR:
Пример вывода:
-
Проверьте логи Operator:
Пример вывода (пример записей журнала):
- Перезапустите deployment вручную:
Несколько сертификатов
Если вам нужно доверять нескольким CA-сертификатам (например, нескольким сервисам Git-хостинга), вы можете:
Вариант 1. Объединить сертификаты в один ConfigMap
Объедините несколько сертификатов в один файл:
Вариант 2. Использовать отдельные ConfigMap
Используйте отдельные ConfigMap и примонтируйте их в разные места, а затем настройте Git на использование bundle сертификатов:
Создайте bundle сертификатов, объединив все сертификаты в один файл.
Рекомендации
1. Управление сертификатами
- Храните безопасно: Сохраняйте CA-сертификаты в защищенном хранилище
- Контроль версий: Отслеживайте изменения сертификатов в системе контроля версий (если это не конфиденциально)
- Документация: Документируйте, какие сертификаты используются и из каких источников они получены
- Контроль срока действия: Отслеживайте даты истечения сертификатов
2. Безопасность
- Минимальные привилегии: Предоставляйте доступ только к необходимым сертификатам
- Ротация: Регулярно выполняйте ротацию сертификатов
- Проверка: Проверяйте сертификаты перед развертыванием
3. Устранение неполадок
- Сначала протестируйте: Проверьте конфигурацию сертификата на тестовом репозитории перед применением в production
- Мониторинг логов: Регулярно проверяйте логи контроллера PAC на наличие ошибок сертификатов
- Резервное копирование: Храните резервные копии рабочих конфигураций сертификатов
Следующие шаги
- Настроить аутентификацию для private репозиториев - Настройка аутентификации для private репозиториев
- Управление компонентом PAC - Узнайте, как управлять развертыванием PAC
- Настроить репозиторий GitLab - Руководство по настройке для GitLab
- Распространенные проблемы - Руководство по устранению неполадок