Настройка пользовательских CA-сертификатов
Когда вашим connectors нужно получать доступ к инструментам, которые представляют TLS-сертификаты, подписанные внутренним или частным центром сертификации (CA), вы можете настроить платформу так, чтобы она доверяла этим CA, не отключая полностью проверку сертификатов.
В этом руководстве рассматриваются следующие темы:
- Включение feature flag для пользовательских CA-сертификатов
- Настройка глобальных CA-сертификатов, применяемых ко всем connectors
- Настройка CA-сертификатов для отдельного connector
- Проверка конфигурации через условие
CACertReady
Содержание
Предварительные требованияШаг 1: Включите feature flagШаг 2: Настройте глобальные CA-сертификатыШаг 3: Настройте CA-сертификаты для отдельного connector (необязательно)Шаг 4: Проверьте конфигурациюРаспространенные проблемыВ статусе Connector указаноCACertReady=False, reason=SecretNotFoundВ статусе Connector указано CACertReady=False, reason=InvalidPEMПосле включения флага условие CACertReady не появляетсяИнструмент по-прежнему отклоняет подключения после настройки CAСоединение по-прежнему не работает сразу после изменения CA SecretДополнительноПредварительные требования
- Развернутый Connectors deployment (controller, proxy и необязательные расширения).
- Доступ администратора к cluster в системном namespace, где работают компоненты Connectors (обычно
connectors-system). - Один или несколько CA-сертификатов в формате PEM, которыми подписаны серверные сертификаты ваших инструментов.
Шаг 1: Включите feature flag
Поддержка пользовательских CA-сертификатов управляется feature flag enable-custom-ca-certs, который отключен по умолчанию для сохранения обратной совместимости.
Отредактируйте ConfigMap connectors-config в системном namespace и установите для флага значение true:
Примените изменения с помощью:
Изменение feature flag вступает в силу немедленно — настройка проверяется в момент обработки запроса. Когда флаг имеет значение false, условие CACertReady не добавляется к статусу Connector, а компоненты сохраняют прежнее поведение TLS для обратной совместимости.
Шаг 2: Настройте глобальные CA-сертификаты
Глобальные CA-сертификаты применяются ко всем connectors в cluster. Они автоматически обнаруживаются по меткам на Secrets в системном namespace.
Создайте Secret в системном namespace с меткой connectors.cpaas.io/ca-cert: "true" и одним или несколькими сертификатами в формате PEM в ключах data. Загружаются только ключи, оканчивающиеся на .crt или .pem, либо значения, содержащие PEM-заголовок, — остальные ключи игнорируются.
Примените изменения с помощью:
Примечание: После обновления global Secret с нужной меткой reverse proxy может понадобиться до 5 минут, чтобы подхватить новый CA pool — транспорты connector reverse-proxy кэшируются для каждого connector с TTL 5 минут. Чтобы принудительно обновить их сразу, перезапустите Deployment
connectors-proxy.
Вы можете создать несколько Secret с нужными метками — все их сертификаты будут объединены в глобальный CA pool. Добавление или удаление Secret с метками приводит к автоматическому повторному согласованию затронутых connectors.
Шаг 3: Настройте CA-сертификаты для отдельного connector (необязательно)
Для инструментов, которым нужен определенный CA, не общий с другими connectors, вы можете указать CA Secret непосредственно в ресурсе Connector. Secret должен находиться в том же namespace, что и Connector (ссылки между namespace не поддерживаются).
Сначала создайте CA Secret в namespace connector:
Затем укажите его в Connector:
CA для отдельного connector является добавочным — он добавляется к глобальному CA pool (системные CAs + глобальные Secrets с метками + Secret для конкретного connector).
Шаг 4: Проверьте конфигурацию
Проверьте условие CACertReady в статусе Connector:
Ожидаемый результат для корректной конфигурации:
Условие CACertReady носит информационный характер — его статус не влияет на верхнеуровневое условие Ready. Это означает, что некорректно настроенный CA Secret будет отображаться как предупреждение, но не будет блокировать согласование connector. Полный справочник по статусам см. в разделе CA-сертификаты статуса на странице концепций Connector.
Если CA Secret отсутствует или содержит некорректные PEM-данные, controller создаст объект Warning Event в Kubernetes для объекта Connector. Просмотреть события можно так:
Распространенные проблемы
В статусе Connector указано CACertReady=False, reason=SecretNotFound
Secret, указанный в spec.caCertSecretRef.name, не существует в namespace connector. Проверьте имя Secret и namespace:
В статусе Connector указано CACertReady=False, reason=InvalidPEM
Secret существует, но его данные не содержат корректных сертификатов в формате PEM. Проверьте содержимое Secret:
Вывод должен начинаться с -----BEGIN CERTIFICATE----- и заканчиваться -----END CERTIFICATE-----.
После включения флага условие CACertReady не появляется
Убедитесь, что после переключения флага вы перезапустили controller, proxy и API deployment. CA pool загружается при запуске компонентов.
Инструмент по-прежнему отклоняет подключения после настройки CA
CA pool формируется по добавочным уровням: системные CAs + глобальные Secrets с метками + Secret для отдельного connector. Убедитесь, что CA, подписавший серверный сертификат вашего инструмента, присутствует хотя бы в одном из этих уровней. Проверить, что глобальный pool заполнен, можно, перечислив Secrets с метками:
Соединение по-прежнему не работает сразу после изменения CA Secret
Reverse proxy кэширует CA pool с TTL 5 минут. Если вы только что обновили global Secret с меткой или Secret для отдельного connector, подождите истечения TTL либо перезапустите connectors-proxy, чтобы новый pool был подхвачен немедленно: