Ожидание распространения запроса http-01: не удалось выполнить тайм-аут - PullRequest
0 голосов
/ 25 марта 2020

Я настроил кластер kubernetes с двумя узлами в настоящее время и METALB в качестве распределителя нагрузки.

В настоящее время я хотел бы использовать Ingress и защитить его с помощью ssl. Для этого я решил использовать nginx вход с cert-manager и разместить его на своем сайте после урока.

Но теперь я получаю сообщение об ошибке «Ожидание распространения запроса http-01: не удалось выполнить самопроверку». GET запрос 'http://example.....zone/.well-known/acme-challenge/A5lFUj69fDccpXlvlyVw9-ekATEjt_-DKiJUzJSafxs': Получить "http://example.....zone/.well-known/acme-challenge/A5lFUj69fDccpXlvlyVw9-ekATEjt_-DKiJUzJSafxs": набрать tcp 94.130.150.125:80: соединение: истекло время ожидания соединения "

Мой текущий ClusterIssuer выглядит так:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
 name: letsencrypt-prod
 namespace: cert-manager
spec:
 acme:
   # The ACME server URL
   server: https://acme-v02.api.letsencrypt.org/directory
   # Email address used for ACME registration
   email: letsencrypt@mymail.de
   # Name of a secret used to store the ACME account private key
   privateKeySecretRef:
     name: letsencrypt-prod
   # Enable the HTTP-01 challenge provider
   solvers:
   - http01:
       ingress:
         class:  nginx

И я пытаюсь автоматически предоставить сертификат для

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
    cert-manager.io/acme-challenge-type: http01
spec:
  tls:
  - hosts:
    - example.....zone
    secretName: example-...-zone-tls
  rules:
  - host: example.....zone
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 80

Вручную я могу без проблем связаться с любым адресом.

1 Ответ

0 голосов
/ 31 марта 2020

Сообщение об ошибке, которое вы получаете, может означать самые разные проблемы. Однако есть некоторые вещи, которые вы можете проверить, чтобы исправить это:

  1. Удалите Ingress, сертификаты и менеджер сертификатов. После этого добавьте их все обратно, чтобы убедиться, что они установлены чисто. Иногда могут возникать устаревшие сертификаты или неправильные / множественные входные пути.

  2. Убедитесь, что ваш трафик c разрешает HTTP или имеет HTTPS с доверенным сертификатом.

  3. Проверьте, работает ли режим шпильки вашего балансировочного устройства, и убедитесь, что он работает.

  4. Добавьте: nginx.ingress.kubernetes.io/ssl-redirect: "false" аннотацию к правилу Ingress. Подождите немного и посмотрите, будет ли создан действующий сертификат.

  5. Только GKE: добавьте эту аннотацию Ingress: certmanager.k8s.io/acme-http01-edit-in-place: "true".

Пожалуйста, дайте мне знать, если это помогло.

...