Сценарий описывает интеграцию сторонних компонентов и не проверялся в составе Deckhouse Platform.
По умолчанию Istio выпускает сертификаты рабочих нагрузок для mTLS собственным центром сертификации в istiod. Чтобы сертификаты выпускались от промежуточного CA из Stronghold, используйте цепочку:
- Механизм секретов PKI Stronghold хранит промежуточный CA для mesh и роль для выпуска сертификатов SPIFFE.
- cert-manager обращается к Stronghold через Issuer типа
vault, как описано в разделе «cert-manager». - Компонент istio-csr проекта cert-manager принимает запросы на сертификаты от прокси Istio и выпускает их через cert-manager.
Цель
После настройки сертификаты рабочих нагрузок Istio для mTLS выпускает промежуточный CA в Stronghold вместо встроенного CA istiod.
Предварительные требования
Перед началом подготовьте:
- Механизм секретов PKI по пути
pki_intс промежуточным CA, как в разделе «Внутренний PKI на Stronghold». - cert-manager в кластере и метод аутентификации Kubernetes в Stronghold, настроенные как в разделе «cert-manager».
- Istio, установленный в кластере, и права на изменение параметров его установки.
- Токен Stronghold с правами на запись ролей PKI и политик.
Шаг 1. Настройте Stronghold
Создайте роль PKI для сертификатов рабочих нагрузок и разрешите cert-manager подписывать запросы по ней.
Создайте роль PKI, разрешающую URI SAN в формате SPIFFE, которые использует Istio:
d8 stronghold write pki_int/roles/istio-mesh allowed_uri_sans="spiffe://cluster.local/*" allow_any_name=true require_cn=false max_ttl=24hРоль задаёт короткий
max_ttl: сертификаты рабочих нагрузок перевыпускаются автоматически.Создайте политику, разрешающую подписывать запросы по этой роли:
d8 stronghold policy write cert-manager-mesh - <<'POLICY' path "pki_int/sign/istio-mesh" { capabilities = ["create", "update"] } POLICYСоздайте роль метода Kubernetes с политикой
cert-manager-mesh, как описано в разделе «cert-manager». Для ClusterIssuer аудитория токена в роли —vault://<CLUSTER_ISSUER_NAME>, в этом примереvault://stronghold-mesh.
Шаг 2. Настройте cert-manager и Istio
Подключите istio-csr к Stronghold через ClusterIssuer и переключите Istio на istio-csr.
Создайте ClusterIssuer
stronghold-meshтипаvaultсpath: pki_int/sign/istio-mesh.Установите istio-csr и укажите в его параметрах ClusterIssuer
stronghold-mesh. Пример параметров Helm-чарта istio-csr:app: certmanager: issuer: name: stronghold-mesh kind: ClusterIssuer group: cert-manager.ioНастройте Istio на использование istio-csr как CA: укажите адрес сервиса istio-csr в
global.caAddressи отключите встроенный CA istiod (переменнаяENABLE_CA_SERVER=false).
Прокси должны доверять корневому сертификату цепочки. Это файл root-ca.pem из раздела «Внутренний PKI на Stronghold». Если корневой CA находится в mount pki_root, получите его из Stronghold:
d8 stronghold read -field=certificate pki_root/cert/caПроверка
Проверьте результат:
Проверьте, что ClusterIssuer готов:
d8 k get clusterissuer stronghold-meshВ колонке
READYдолжно быть значениеTrue.Проверьте, что Stronghold выпускает сертификаты для mesh. Список серийных номеров в
pki_intдолжен расти по мере запуска рабочих нагрузок:d8 stronghold list pki_int/certs
Очистка
Перед удалением интеграции переключите Istio обратно на встроенный CA istiod и удалите istio-csr. Затем удалите ClusterIssuer и объекты Stronghold:
d8 k delete clusterissuer stronghold-mesh
d8 stronghold delete pki_int/roles/istio-mesh
d8 stronghold policy delete cert-manager-meshУдалите также роль метода Kubernetes, созданную на шаге 1.