我已经使用 cert-manager 和letsencrypt 将我的Kubernetes 配置为对我的所有应用程序使用一个通配符SSL 证书,现在的问题是我无法配置子域重定向,因为Ingress 有点“僵硬”。这是我试图实现这一目标的方法:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-wildcard-ingress
namespace: mynamespace
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
certmanager.k8s.io/acme-challenge-type: dns01
certmanager.k8s.io/acme-dns01-provider: azuredns
ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- host: "domain.com"
http:
paths:
- path: /
backend:
serviceName: some-service
servicePort: 3000
- host: somesub.domain.com
http:
paths:
- path: /
backend:
serviceName: some-other-service
servicePort: 80
- host: othersub.domain.com
http:
paths:
- path: /
backend:
serviceName: one-more-service
servicePort: 8080
- host: "*.domain.com"
http:
paths:
- path: /
backend:
serviceName: default-service-to-all-other-non-mapped-subdomains
servicePort: 8000
tls:
- secretName: domain-com-tls
hosts:
- "*.domain.com.br"
问题是 Ingress 忽略了声明的子域重定向,因为它们没有在“tls:hosts”部分中列出。如果我确实把它们放在那里,它会尝试使用通配符和其他子域以及同一个证书中的其他子域来颁发 SSL 证书,这会导致颁发者拒绝订单,说的很明显:“subdomain.domain.com 和 * .domain.com 是多余的”
有没有其他方法可以声明这些重定向并强制它们使用我的 SSL 通配符证书?