👏
Nginx Ingress ControllerでIngressに証明書Secretを指定してもデフォルトの証明書があたってしまう件
現象
spec.tls.secretName
に証明書Secretを指定していても、その証明書が使われずに、Kubernetes Ingress Controller Fake Certificate
が利用されてしまいます。
このような感じ
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
creationTimestamp: "2022-10-08T19:12:51Z"
generation: 1
name: test-ingress
namespace: default
resourceVersion: "1257407"
uid: 715e2056-3794-41c8-8f7b-e4e94f5cf48d
spec:
ingressClassName: nginx
rules:
- host: ingress.test.jp
http:
paths:
- backend:
service:
name: test-service
port:
number: 8080
path: /
pathType: Prefix
tls:
- hosts:
- ingress.test.jp
secretName: cert-secret
status:
loadBalancer:
ingress:
- ip: 192.168.11.61
原因
CNが一致していないとそうなるので、証明書つくるときにhostとhostsで指定する予定のCNでちゃんと作らないといけない。
今回のドメインで、オレオレ証明書の場合は、以下のような感じでつくる。
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout rsa.key -out rsa.crt -subj "/CN=ingress.test.jp/O=system"
参考
Discussion