SSL-сертификаты от Let's Encrypt в вашем Kubernetes Ingress через cert-manager

Я пытаюсь получить доступ с помощью cert-manager v0.16.0, который позволяет шифровать сертификаты. Я использую microk8s и следил за парой руководств, ни один из них не позволил мне достичь цели.

С помощью этого tutorialLink я застрял при создании эмитента и получил сообщение об ошибке при попытке его применения:

kc apply -f clusterIssuer.yaml
namespace/cloud unchanged
Error from server (InternalError): error when creating "clusterIssuer.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": Post "https://certmgr-cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": service "certmgr-cert-manager-webhook" not found

Сервис не может быть найден, потому что это не его название. Пытается найти: certmgr-cert-manager-webhook, но имя службы: cert-manager-webhook. Также нет псевдонима DNS или чего-либо, что могло бы это оправдать. Развертывание, в котором создается диспетчер сертификатов и веб-перехватчик, выглядит следующим образом:

cert-manager-0.16.0.yaml < / а>

Если я изменю тип эмитента с ClusterIssuer на Issuer, я получу:

kc apply -f clusterIssuer.yaml
namespace/git created
error: unable to recognize "clusterIssuer.yaml": no matches for kind "Issuer" in version "cert-manager.io/v1"

Мы будем очень признательны за некоторую помощь по отладке.

--- Дополнительная информация clusterIssuer.yaml:

    kind: Namespace
apiVersion: v1
metadata:
  name: cloud
---
apiVersion: cert-manager.io/v1beta1
kind: Issuer
metadata:
  name: letsencrypt-staging
  namespace: cloud
spec:
  acme:
    # Staging API
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: cloud-account-key-staging
    solvers:
    - http01:
       ingress:
         class: nginx

person user637338    schedule 20.04.2021    source источник


Ответы (1)


Похоже, что cert-manager неправильно настроен с CRD, вы можете попробовать удалить и настроить cert-manager из официальной документации один раз: https://cert-manager.io/docs/installation/kubernetes/

Вы можете напрямую установить последнюю версию, этот единственный YAML содержит все CRD, развертывание, svc:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.0/cert-manager.yaml

После применения YAML вы можете проверить развертывание

kubectl get pods -n cert-manager

если все работает нормально, вы можете применить конфигурацию эмитента кластера и входа, чтобы получить сертификат SSL / TLS, который будет сохранен в секрете Kubernetes.

вот простой и правильный пример Clusterissuer и ingress YAML (обратите внимание, что вы пытались использовать промежуточный API https://acme-staging-v02.api.letsencrypt.org/directory, если возможно, используйте адрес производственного сервера, чтобы он действовал во всех браузерах)

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: cluster-issuer-name
  namespace: development
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: secret-name
    solvers:
    - http01:
        ingress:
          class: nginx-class-name
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx-class-name
    cert-manager.io/cluster-issuer: cluster-issuer-name
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: example-ingress
spec:
  rules:
  - host: sub.example.com
    http:
      paths:
      - path: /api
        backend:
          serviceName: service-name
          servicePort: 80
  tls:
  - hosts:
    - sub.example.com
    secretName: secret-name
person Harsh Manvar    schedule 20.04.2021