Как развернуть letsencryp с Cert-Manager и HAProxy-ingress
Копаясь в www, не нашел ответа: я хочу знать, как я могу использовать cert-manager с haproxy-ingress и позволяет шифровать.
Любая документация / инструкции?
2 ответа
Разверните Certmanager с помощью :
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.yaml
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.crds.yaml
Разверните ClusterIssuer (эмитенты кластера не зависят от пространства имен)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: haproxy
- Создайте ресурс Ingress (гностик пространства имен, в этом примере используется серверная служба Nginx)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-router
namespace: production
annotations:
kubernetes.io/ingress.class: "haproxy"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- "example.com"
secretName: nginx-tls-secret
rules:
- host: example.com
http:
paths:
- pathType: ImplementationSpecific
path: "/"
backend:
service:
name: nginx
port:
number: 80
- host: www.example.com
http:
paths:
- pathType: ImplementationSpecific
path: "/"
backend:
service:
name: nginx
port:
number: 80
Важная информация здесь заключается в том, что контроллеру Haproxy НЕ нужна аннотация.
acme.cert-manager.io/http01-edit-in-place: "true"
что делает контроллер nginx-ingress. Он работает, как ожидалось, без каких-либо дополнительных аннотаций. При применении Ingress Resourse к кластеру сертификат будет выдан максимум за 1-2 минуты. Использовать
kubectl describe certificate nginx-tls-secret -n production
чтобы проверить статус сертификата и посмотреть событие, чтобы получить сертификат.
Для получения дополнительной информации об отладке, если что-то пошло не так, см. Здесь https://cert-manager.io/docs/faq/acme/
Вы можете попробовать установить диспетчер сертификатов, предоставляемый jetstack, его можно найти здесь, а затем вам нужно выполнить шаги, упомянутые в этом сообщении stackru, и это поможет вам разобраться.
Внутренний вызов acme будет выполнен диспетчером сертификатов, и как только вы исправите секретное имя, указанное в сертификате, на TLS входа, статус сертификата будет готов, обратите внимание, что секрет будет создан автоматически, вам не нужно его создавать