Cert Manager+Let's Encrypt能否为K8s Ingress默认backend匹配的域名自动签发证书
结论
默认无法实现无手动证书请求前提下为example3.com自动签发证书,核心原因如下:
- cert-manager的Ingress自动签发能力由ingress-shim组件提供,仅会识别Ingress资源中显式声明的域名:要么是
spec.rules下定义的host字段值,要么是spec.tls下配置的域名列表。你当前的Ingress配置未声明example3.com,cert-manager无法感知该域名需要签发证书。 - 即使example3.com的DNS已指向Ingress IP、访问时匹配默认后端,cert-manager的ACME校验流程(HTTP-01/DNS-01)都需要域名在Ingress配置中存在才能完成校验,无显式配置的情况下校验请求无法正确路由,无法完成证书签发。
如果要实现无需手动创建Certificate资源的自动签发,只需要修改Ingress配置,在tls段新增example3.com即可,示例修改后的配置如下:
spec: # 新增tls配置段,搭配cert-manager.io/cluster-issuer等注解即可触发自动签发 tls: - hosts: - example.com - example2.com - example3.com secretName: ingress-all-tls defaultBackend: service: name: svc-1 port: number: 80 rules: - host: example.com http: paths: - backend: service: name: svc-1 port: number: 80 path: / pathType: ImplementationSpecific - host: example2.com http: paths: - backend: service: name: svc-2 port: number: 80 path: / pathType: ImplementationSpecific
修改后example3.com访问时依然会匹配defaultBackend,同时cert-manager会自动为该域名签发证书,无需手动创建证书请求资源。
内容的提问来源于stack exchange,提问作者vageeshabr
相关产品推荐
相关产品推荐

