Kubernetes cert-manager не может получить доступ к серверу letsencrypt API

Я пытаюсь настроить cert-manager v0.13.0 на своем кластере minikube. Я следил за их учебником, но, похоже, модуль cert-manager продолжает отсчет времени out, пытаясь добраться до серверов API LetsEncrypt:

$ kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.13.0/deploy/manifests/00-crds.yaml
$ kubectl create namespace cert-manager
$ helm repo add jetstack https://charts.jetstack.io
$ helm repo update
$ helm install cert-manager --namespace cert-manager --version v0.13.0 jetstack/cert-manager

Вот мой acme yaml:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: my-issuer-account-key
    solvers:
      - dns01:
          cloudflare:
            email: [email protected]
            apiKeySecretRef:
              name: cloudflare-api-token-secret
              key: api-token    

Журналы модуля cert-manager показывают время ожидания:

I0209 20:43:34.382250       1 logger.go:90] Calling GetAccount
E0209 20:43:39.384093       1 setup.go:208] cert-manager/controller/clusterissuers "msg"="failed to verify ACME account" "error"="Get https://acme-staging-v02.api.letsencrypt.com/directory: dial tcp 192.64.119.254:443: i/o timeout" "related_resource_kind"="Secret" "related_resource_name"="my-issuer-account-key" "related_resource_namespace"="cert-manager" "resource_kind"="ClusterIssuer" "resource_name"="letsencrypt" "resource_namespace"="" 
E0209 20:43:39.385555       1 sync.go:81] cert-manager/controller/clusterissuers "msg"="error setting up issuer" "error"="Get https://acme-staging-v02.api.letsencrypt.com/directory: dial tcp 192.64.119.254:443: i/o timeout" "resource_kind"="ClusterIssuer" "resource_name"="letsencrypt" "resource_namespace"="" 
E0209 20:43:39.389659       1 controller.go:131] cert-manager/controller/clusterissuers "msg"="re-queuing item  due to error processing" "error"="Get https://acme-staging-v02.api.letsencrypt.com/directory: dial tcp 192.64.119.254:443: i/o timeout" "key"="letsencrypt" 

Итак, я установил модуль bash, чтобы проверить доступность API, и, похоже, проблем нет:

$ kubectl run my-shell -n cert-manager --rm -i --tty --image ubuntu -- bash
$ apt-get update -y
$ apt-get install -y curl
$ https://acme-staging-v02.api.letsencrypt.org/directory

{
"xxxxxxxxx": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
"keyChange": "https://acme-staging-v02.api.letsencrypt.org/acme/key-change",
"meta": {
    "caaIdentities": [
    "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf",
    "website": "https://letsencrypt.org/docs/staging-environment/"
},
"newAccount": "https://acme-staging-v02.api.letsencrypt.org/acme/new-acct",
"newNonce": "https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce",
"newOrder": "https://acme-staging-v02.api.letsencrypt.org/acme/new-order",
"revokeCert": "https://acme-staging-v02.api.letsencrypt.org/acme/revoke-cert"
}

Обновление: по запросу, вот файл /etc/resolve.conf из модуля bash:

nameserver 10.96.0.10
search cert-manager.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

Но я не знаю, как получить тот же файл из модуля cert-manager, поскольку он не позволяет мне открывать / bin / sh или / bin / bash.

Понятия не имею, почему происходит тайм-аут. Есть предположения?


person Sagi Mann    schedule 09.02.2020    source источник
comment
вы можете предоставить содержимое /etc/resolve.conf из модуля?   -  person Arghya Sadhu    schedule 10.02.2020
comment
@ArghyaSadhu Я добавил файл в сообщение, но обратите внимание, что я не могу получить тот же файл из модуля cert-manager   -  person Sagi Mann    schedule 10.02.2020
comment
Вы упомянули сервер acme в acme-staging-v02.api.letsencrypt.org/directory, но похоже, что запрос выполнен к acme-staging-v02.api.letsencrypt. ru / directory. Существует разница .com и .org. Можете ли вы проверить свой ClusterIssuer с помощью kubectl describe   -  person Ahmad Faiyaz    schedule 10.02.2020
comment
Что-то не так, ваши журналы относятся к acme-staging-v02.api.letsencrypt.com / directory, и это не может быть CURL. чтобы помочь вам в дальнейшей проверке kubectl describe clusterissuers.cert-manager и проверки сервера.   -  person Will R.O.F.    schedule 12.02.2020
comment
@AhmadFaiyaz правильно! Я не знаю, откуда взялся домен .com. Похоже, что в какой-то момент во время тестов я скопировал неправильный URL в yaml.   -  person Sagi Mann    schedule 14.02.2020
comment
@AhmadFaiyaz, вы должны переписать свой комментарий в форме ответа, чтобы помочь другим с аналогичными проблемами.   -  person Will R.O.F.    schedule 18.02.2020


Ответы (1)


Вы упомянули сервер acme для acme-staging-v02.api.letsencrypt.org/directory, но похоже, что запрос выполнен для acme-staging-v02.api.letsencrypt.com/directory. Есть разница .com vs .org. Проверьте свой clusterissuer yaml с помощью команды:

kubectl get clusterissuer letsencrypt -o yaml

Если вы добавили неправильный URL-адрес в yaml, вы всегда можете удалить этот clusterissuer и создать заново.

person Ahmad Faiyaz    schedule 18.02.2020