因此,我正在设置多个GKE群集,并且只能使用通配符域证书,但是我的域深达两个级别,因此无法正常工作。因此,现在我正在尝试使用有效的google托管证书,但似乎只能与GCE入口一起使用,而不是nginx。
根据https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs的工作原理,假设我仅使用一个入口资源,该资源使用GCE入口配置L7(http)负载均衡器。我的问题是,是否可以将Nginx入口控制器设置为使用这些托管证书?
在nginx头盔安装中,它配置了L4(tcp)负载平衡器,并使用部署来运行处理nginx控制器的Pod。但是我似乎无法设置L4负载平衡器使用我全局保留的静态IP。 L7可以正常工作。
是否有任何关于如何使用nginx入口管理证书的想法?
答案 0 :(得分:0)
发现了问题。我使用GCE入口为L4负载平衡器保留了一个全局IP地址,这是不允许的,因为TCP负载平衡仅是区域性的,而HTTP负载平衡则需要保留一个全局IP,而不是区域性的IP。因此,从此以后,再也不会将DNS记录解析为正确的IP。很高兴知道与全球和地区IP混淆的警告...
答案 1 :(得分:0)
Google 托管证书仅支持 GKE External Ingress。 来自https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs:
<块引用>注意:Google 管理的 SSL 证书目前不支持 内部 HTTPS 负载平衡器。对于内部 HTTPS 负载平衡器,请使用 自我管理的 SSL 证书。
以下是我在使用 GKE Ingress 时遇到的限制:
如果您只需要外部入口的证书,您可以使用 kubernetes.io/ingress.class: "gce"
声明一个入口,设置 ExternalDNS 为您创建 CloudDNS 记录,然后将托管证书附加到域像这样的名字:
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: certificate-name
spec:
domains:
- domain-name1
- domain-name2
这为您提供了一个附加到您的服务的域,使用 SSL,全部使用谷歌云 DNS 和谷歌负载平衡。
如果你需要内部服务,那会有点棘手。我个人决定完全放弃 GKE 入口,使用 ingress-nginx
设置具有内部 IP 的 LoadBalancer
服务,然后使用 cert-manager
设置证书。你可以参考这个blog的方法。