Как проверить решатель ClusterIssuer? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь развернуть кластер Kubernetes с сертификатом SSL, используя LetsEncrypt в DigitalOcean. Я следовал этим инструкциям , и все работает до тех пор, пока ClusterIssuer не создаст запрос на вызов. Затем я получаю эту ошибку:

cert-manager/controller/orders "msg"="Failed to determine the list of Challenge resources needed for the Order" "error"="no configured challenge solvers can be used for this challenge" "resource_kind"="Order" "resource_name"="letsencrypt-prod-cert-458163912-1173127706"

Я пробовал это как с http, так и пытался настроить распознаватель dns01 DigitalOcean, но ни одна не работает, и с похожей ошибкой. Сайт работает по ip, по имени dns (хотя я получаю предупреждение no-ssl cert). Это описание ClusterIssuer:

Name:         letsencrypt-issuer
Namespace:
Labels:       app/instance=webapp
              app/managed-by=Tiller
              app/name=webapp
              app/version=0.1.0
              helm.sh/chart=webapp-0.1.0
Annotations:  cert-manager.io/cluster-issuer: letsencrypt-issuer
              kubernetes.io/ingress.class: nginx
              kubernetes.io/tls-acme: true
API Version:  cert-manager.io/v1alpha2
Kind:         ClusterIssuer
Metadata:
  Creation Timestamp:  2019-10-16T23:24:47Z
  Generation:          2
  Resource Version:    10300992
  Self Link:           /apis/cert-manager.io/v1alpha2/clusterissuers/letsencrypt-issuer
  UID:                 2ee08cd4-5781-4126-9e6d-6b9d108a1eb2
Spec:
  Acme:
    Email:  <redacted>
    Private Key Secret Ref:
      Name:  letsencrypt-prod-cert
    Server:  https://acme-v02.api.letsencrypt.org/directory
Status:
  Acme:
    Last Registered Email:  <redacted>
    Uri:                    https://acme-v02.api.letsencrypt.org/acme/acct/69503670
  Conditions:
    Last Transition Time:  2019-10-16T23:24:48Z
    Message:               The ACME account was registered with the ACME server
    Reason:                ACMEAccountRegistered
    Status:                True
    Type:                  Ready
Events:                    <none>

Есть ли способ увидеть самих решателей, чтобы проверить, правильно ли они настроены? Есть ли способ использовать их, чтобы доказать, что они работают? Есть ли другой способ диагностировать ситуацию? Я полностью застрял, так как, кажется, не так много поддержки онлайн для этого?

1 Ответ

2 голосов
/ 17 октября 2019
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
 metadata:
  name: certificate-name
spec:
  secretName: tls-cert
  duration: 24h
  renewBefore: 12h
  commonName: hostname
  dnsNames:
  - hostname
  issuerRef:
    name: letsencrypt
    kind: ClusterIssuer

apiVersion: certmanager.k8s.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    email: myemail@email.com
    http01: {}
    privateKeySecretRef:
      name: letsencrypt-private-key
    server: https://acme-v02.api.letsencrypt.org/directory
    solvers:
    - http01:
        ingress:
          class: nginx
      selector: {}

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/acme-challenge-type: http01
    certmanager.k8s.io/cluster-issuer: letsencrypt
  name: ingress-rule
  namespace: default
spec:
  rules:
  - host: hostname
    http:
      paths:
      - backend:
          serviceName: backend-service
          servicePort: 8080
  tls:
  - hosts:
    - hostname
    secretName: tls-cert

Приведенный выше подход работал для меня, tls-cert автоматически генерируется в предполагаемом пространстве имен, ключе и сертификате. Чтобы это произошло, вы должны указать IP-адрес nginx loadbalancer на DNS

. Это сработало для меня, вызов acme будет автоматически протестирован, а сертификат изменит статус с false на true, как только это будет сделано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...