cd ../4/
В общем случае надо так чтобы ваше доменное имя резолвилось в интернете в адрес ingress контроллера - $INGRESS_IP
Например я буду использовать домен k-101.app.nrk.me.uk , который резолвится в адрес 84.201.128.53
nrkk-osx:3 nrkk$ echo $INGRESS_IP
84.201.128.53
nrkk-osx:3 nrkk$ dig k-101.app.nrk.me.uk | grep $INGRESS_IP
k-101.app.nrk.me.uk. 299 IN A 84.201.128.53
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v0.16.1 --set installCRDs=true
watch kubectl get pods --namespace cert-manager
запишите свой email переменную и создайте на базе этого файл для ресурса ClusterIssuer
EMAIL=<ВАШ_EMAIL> # например [email protected]
cat 04-acme-prod-issuer.yaml.tpl | sed 's/'"<EMAIL>"'/'"$EMAIL"'/' > 04-acme-issuer.yml
kubectl apply -f 04-acme-issuer.yml
Создадим и запустим ingress на наше доменное имя
DOMAIN_NAME=<Ваше доменное имя> # например k-101.app.nrk.me.uk
cat 04-acme-ingress.yaml.tpl | sed 's/'"<DOMAIN_NAME>"'/'"$DOMAIN_NAME"'/' > 04-acme-ingress.yml
kubectl apply -f 04-acme-ingress.yml
Дожидаемся что наш сертификат успешно выпущен
nrkk-osx:4 nrkk$ kubectl describe certificate echo-tls -n demo-ns
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Issuing 44s cert-manager Issuing certificate as Secret does not exist
Normal Generated 44s cert-manager Stored new private key in temporary Secret resource "echo-tls-48w44"
Normal Requested 44s cert-manager Created new CertificateRequest resource "echo-tls-zhs74"
Normal Issuing 4s cert-manager The certificate has been successfully issued
Проверяем
nrkk-osx:4 nrkk$ echo | openssl s_client -showcerts -servername ${DOMAIN_NAME} -connect ${DOMAIN_NAME}:443 2>/dev/null | openssl x509 -inform pem -noout -text | grep Subject:
Subject: CN=k-101.app.nrk.me.uk:
Можно проверить и браузером :)
kubectl delete ns demo-ns
helm uninstall nginx-ingress
helm uninstall cert-manager --namespace cert-manager