В Ingress указан секрет с моим сертификатом, но браузер показывает Kubernetes Ingress Controller Fake Certificate. Иногда на всех доменах, иногда только на поддоменах.
В Ingress указан секрет с моим сертификатом, но браузер показывает Kubernetes Ingress Controller Fake Certificate. Иногда на всех доменах, иногда только на поддоменах.
Это самоподписанный сертификат ingress-nginx по умолчанию. Контроллер отдаёт его, если не нашёл подходящий сертификат для запрошенного имени. Проверьте по порядку:
Ingress ссылается на секрет. Хост указан в spec.tls[].hosts, в secretName указан ваш секрет. Секрет лежит в том же пространстве имён, имеет тип kubernetes.io/tls, а ключ соответствует сертификату.
Сертификат покрывает имя. *.example.com покрывает a.example.com, но не a.b.example.com и не сам example.com:
d8 k -n <ns> get secret <tls-secret> -o jsonpath='{.data.tls\.crt}' | base64 -d \
| openssl x509 -noout -ext subjectAltName
Ingress обслуживает нужный контроллер. spec.ingressClassName у Ingress совпадает с spec.ingressClass у IngressNginxController, и под этого контроллера запущен. Если два контроллера с inlet HostPort используют одни и те же hostPort.httpPort и httpsPort, под второго не запустится на узле, и отвечать будет первый со своим сертификатом по умолчанию. Разнесите порты или узлы.
TLS терминируется на внешнем балансировщике. Тогда сертификат меняют на нём, а не в кластере.
Неполная цепочка fake-сертификат не вызывает: браузер покажет ваш сертификат с ошибкой доверия. Цепочка в tls.crt идёт в порядке leaf → intermediate.
Сертификат по умолчанию можно заменить своим: spec.defaultSSLCertificate.secretRef в IngressNginxController.