Кто-нибудь использует собственные цепочки сертификатов для кластеров Kubernetes?
Есть проблема с такой настройкой, и я был бы признателен за любые идеи о том, как ее решить.
Предположим, у нас есть корневой ЦС, сертификат которого является самоподписанным. Также у нас есть промежуточный ЦС, сертификат которого подписан корневым ЦС. Мы создаем цепочку сертификации (путем объединения обоих контейнеров PEM в один файл) и настраиваем с ее помощью Kubernetes. Почти все работает идеально: Kubernetes работает нормально, клиенты Kubernetes работают нормально, операторы Kubernetes работают нормально... Жизнь удалась.
Но есть одна вещь, которую мы должны иметь в виду. Все Секрет
объект, содержащий токены безопасности для ServiceAccount
объекты имеют «укороченные» версии сертификата ЦС. «Сокращенная» версия не содержит сертификат Root CA, только Intermediate.
Как я вижу, для большинства библиотек TLS этого достаточно. Программное обеспечение устанавливает TLS-соединение с API-сервером Kubernetes, проверяет, подписан ли сертификат сервера доверенным ЦС (при условии, что сертификат промежуточного ЦС, полученный от связанного Секрет
доверяют) и все работает гладко.
Но иногда у нас возникают проблемы.Когда у нас есть часть программного обеспечения (например, оператор Kubernetes или любая другая программа, которая должна взаимодействовать с Kubernetes API Server), которая использует немного более строгую библиотеку TLS, у нас проблемы. В этом случае мы должны предоставить этому инструменту версию цепочки сертификации (содержащую как промежуточный сертификат ЦС, так и корневой), потому что «укороченной» версии, предоставляемой Kubernetes, недостаточно. И это нормально, если мы можем предоставить этому инструменту полную цепочку сертификатов, но иногда это невозможно, поэтому он берет «укороченный» сертификат ЦС из /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
и его нелегко убедить взять сертификат ЦС из другого источника. :-(
Мой вопрос заключается в следующем: есть ли способ заставить Kubernetes создавать эти Секрет
объектов с полной версией цепочки сертификации? И если есть, вызовет ли это другие трудности (например, если программное обеспечение, которое будет предоставлено с полной цепочкой, даст сбой)? Или, возможно, может быть другой обходной путь?
Заранее спасибо.