【发布时间】:2023-03-26 19:32:01
【问题描述】:
我遵循了这个 DigitalOcean 指南https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes,我遇到了一些很奇怪的事情。在主机名中设置通配符时,letsencrypt 无法颁发新证书。而当我只设置定义的子域时,它可以完美地工作。
这是我对域及其 api 的“工作”配置(这个工作完美):
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-staging"
spec:
tls:
- hosts:
- example.com
- api.example.com
secretName: my-tls
rules:
- host: example.com
http:
paths:
- backend:
serviceName: example-frontend
servicePort: 80
- host: api.example.com
http:
paths:
- backend:
serviceName: example-api
servicePort: 80
相反,这是我尝试颁发的通配符证书,但无法留下“正在颁发”的消息。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-staging"
spec:
tls:
- hosts:
- example.com
- *.example.com
secretName: my-tls
rules:
- host: example.com
http:
paths:
- backend:
serviceName: example-frontend
servicePort: 80
- host: api.example.com
http:
paths:
- backend:
serviceName: example-api
servicePort: 80
唯一的区别是主机的第二行。有一个我不知道的微不足道的众所周知的解决方案吗?我是 Kubernetes 新手,但不是 DevOps。
【问题讨论】:
-
您好,documentation 声明要生成
wildcard证书,您需要使用DNS-01质询而不是HTTP-01(在链接中使用)。在这里您可以找到一些可以帮助您的文档:cert-manager.io/docs/configuration/acme/dns01 -
就是这样!抱歉,我花了一些时间,但我必须重建整个系统并正确测试它。如果您愿意,可以将其发布为答案!谢谢!
-
嗨!您的问题两次包含相同的源代码。我认为第二个代码应该显示您的证书的配置。您能否更新您的问题,使其变得更有帮助?
标签: nginx ssl kubernetes kubernetes-ingress