我正试图从GKE重新部署到Digital Ocean。我遇到了letencrypt提出的挑战问题。我相信K8s告诉我找不到路线。 letencrypt尝试进行挑战但失败的两个主机名/域是SendGrid使用的CNAMES。我不太确定从哪里开始进行问题排查,我的google-fu让我失败了。
Namespace: default
Labels: <none>
Annotations: <none>
API Version: acme.cert-manager.io/v1alpha2
Kind: Challenge
Metadata:
Creation Timestamp: 2020-03-19T20:34:04Z
Finalizers:
finalizer.acme.cert-manager.io
Generation: 1
Owner References:
API Version: acme.cert-manager.io/v1alpha2
Block Owner Deletion: true
Controller: true
Kind: Order
Name: letsencrypt-certs-80407504-346698183
UID: 84ab9399-3a61-462e-a1c5-0831bd451a36
Resource Version: 37060
Self Link: /apis/acme.cert-manager.io/v1alpha2/namespaces/default/challenges/letsencrypt-certs-80407504-346698183-813483524
UID: ca14d996-3ecf-4dd8-8c53-057af7ae2b27
Spec:
Authz URL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/3449670327
Dns Name: 7502121.secodify.com
Issuer Ref:
Group: cert-manager.io
Kind: ClusterIssuer
Name: letsencrypt-prod
Key: LiAawBR0bFRQfb2oXrvvNhph3ehQ-35lXJKkpjqgqb0.uWH4RnJfcABYba9T5b-QjoYnIw53rRtVhzsRIHIh39Y
Solver:
http01:
Ingress:
Class: nginx
Token: LiAawBR0bFRQfb2oXrvvNhph3ehQ-35lXJKkpjqgqb0
Type: http-01
URL: https://acme-v02.api.letsencrypt.org/acme/chall-v3/3449670327/JGayWw
Wildcard: false
Status:
Presented: true
Processing: true
Reason: Waiting for http-01 challenge propagation: wrong status code '404', expected '200'
State: pending
Events: <none>
我的配置图如下:
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
nginx.conf: |
events {
worker_connections 1024;
}
http {
server {
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
listen 8080;
server_name localhost;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
rewrite /.well-known/acme-challenge/(.*) /$1 break;
}
location /static/ {
autoindex on;
alias /code/core/static/;
include /etc/nginx/mime.types;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080/;
}
}
}
---```
答案 0 :(得分:0)
在您的Ingress配置文件中添加certmanager.k8s.io/cluster-issuer
批注。类似的问题:certmanager。
此外,您在ConfigMap中服务器的位置定义中存在语法错误:
location ^~ /.well-known/acme-challenge/
请记住,还要在您的Ingress配置文件中添加重写和nginx类注释。
答案 1 :(得分:0)
结果是,未使用CNAME。从配置中删除它们后,我将再次执行kubectl get challenges
,但是它为空。我想这是因为挑战已经得到处理,因此没有待解决的问题。
我还有另一个问题,我忘了在kubernetes服务和部署吊舱之间建立联系。
在两个问题之间,我感到困惑。
答案 2 :(得分:0)
我在使用Traefik的K3S上遇到了相同的错误。原因是DNS和端口转发。 在联系Letsencrypt之前,Certmanager会进行自我测试。如果我将Nginx用作路由器,则会出现相同的错误。
我有:
我在域提供商的DNS服务器中设置了几条A记录:
Certmanager调用我的路由器来测试它的Letsencrypt功能,而不是在Raspberry Pi上测试其自身。
通过将DNS记录添加到我的路由器的域的DNS服务器中来解决该问题,以便它们直接指向Raspberry Pi的内部IP地址。
当然: