ani*_*ine 6 kubernetes google-kubernetes-engine cert-manager ingress-nginx
我们在 GKE 中使用 ingress-nginx 控制器公开了十几个服务。
为了在同一域名上正确路由流量,我们需要使用重写目标规则。
该服务自 2019 年推出以来一直运行良好,没有任何维护,直到最近;当 cert-manager 突然停止更新 Let's Encrypt 证书时,我们通过暂时从入口定义中删除“tls”部分来“解决”这个问题,强制我们的客户端使用 http 版本。
之后,我们删除了证书管理器的所有痕迹,尝试从头开始设置它。
现在,证书管理器正在创建证书签名请求,生成 acme http 求解器 pod 并将其添加到入口,但是在访问其 url 时,我可以看到它返回空响应,而不是预期的令牌。
这与重写目标注释有关,它扰乱了 acme 挑战的路由。最让我困惑的是,这以前是有效的。(它是由前雇员设立的)
不幸的是,禁用 rewrite-target 不是一个选项,因为它会阻止路由正常工作。
使用 dns01 不起作用,因为我们的 ISP 不支持以编程方式更改 DNS 记录。
有没有办法在不禁用重写目标的情况下完成这项工作?
PS 以下是 Github 上报道的一些类似案例:
他们都没有帮助。
这是我的 ClusterIssuer 的定义
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: mail@domain.com
# 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
Run Code Online (Sandbox Code Playgroud)
请分享您正在使用的集群发行者或问题。
入口类
如果指定了ingressClass
cert-manager字段,将创建新的Ingress资源,以便将流量路由到acmesolver负责响应ACME 质询验证请求的 pod。
参考:https://cert-manager.io/v0.12-docs/configuration/acme/http01/#ingressclass
大多数情况下,我们不会看到 HTTP 求解器的挑战,如果 DNS 或 HTTP 工作正常,就会被删除。
另外,请确保您的入口没有 SSL 重定向注释,这也可能是未生成证书的原因。
您是否尝试检查证书管理器的其他对象(例如订单和证书状态请求)?你那里kubectl describe challenge有404吗?
如果您不断尝试,则可能会达到让我们加密请求生成证书的速率限制。
故障排除:https ://cert-manager.io/docs/faq/troubleshooting/#troubleshooting-a-failed-certificate-request
| 归档时间: |
|
| 查看次数: |
3746 次 |
| 最近记录: |