I have only one TLS cert for ALL ingress, so I make it Default SSL Certificate.
Create TLS cert (server.key and server.crt) and add it into secret:
kubectl create secret tls default-ssl-certificate --namespace ingress-nginx \
--key server.key --cert server.crt
Update Ingress Nginx deployment args to [namespace/secret-name]:
spec:
containers:
- args:
- /nginx-ingress-controller
- --election-id=ingress-nginx-leader
- --controller-class=k8s.io/ingress-nginx
- --ingress-class=nginx
- --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
- --validating-webhook=:8443
- --validating-webhook-certificate=/usr/local/certificates/cert
- --validating-webhook-key=/usr/local/certificates/key
- --default-ssl-certificate=ingress-nginx/default-ssl-certificate
That is all.