Как развернуть letsencryp с Cert-Manager и HAProxy-ingress

Копаясь в www, не нашел ответа: я хочу знать, как я могу использовать cert-manager с haproxy-ingress и позволяет шифровать.

Любая документация / инструкции?

2 ответа

  1. Разверните 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

  2. Разверните 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
  1. Создайте ресурс 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 входа, статус сертификата будет готов, обратите внимание, что секрет будет создан автоматически, вам не нужно его создавать

Другие вопросы по тегам