7

所以我正在设置多个 GKE 集群,我被限制使用通配符域证书,但我的域是两级深,所以这不起作用。所以现在我正在尝试使用谷歌管理的证书,它有效,但似乎只适用于 GCE 入口,而不是 nginx。

根据https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs假设我只使用单个入口资源,该资源使用 GCE 入口配置 L7(http) 负载均衡器. 我的问题是,是否可以设置 nginx 入口控制器以使用这些托管证书?

从 nginx helm install 开始,它提供了一个 L4(tcp) 负载均衡器,并使用部署来运行处理 nginx 控制器的 pod。但我似乎无法将 L4 负载均衡器设置为使用我的全局保留静态 IP。而 L7 工作正常。

关于如何让托管证书与 nginx 入口一起工作的任何想法?

4

2 回答 2

1

发现问题。我正在使用 GCE 入口为 L4 负载均衡器保留全局 IP 地址,这是不允许的,因为 TCP 负载均衡仅是区域性的,与 HTTP 负载均衡不同,它需要保留全局 IP,而不是区域性的。因此,它从未将 DNS 记录解析为正确的 IP。很高兴知道与全球 IP 和区域 IP 混淆的警告......

于 2019-05-23T22:37:58.617 回答
0

仅 GKE 外部入口支持 Google 托管证书。来自https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs

注意:内部 HTTPS 负载平衡器目前不支持 Google 管理的 SSL 证书。对于内部 HTTPS 负载平衡器,请使用自我管理的 SSL 证书。

以下是我在使用 GKE Ingress 时遇到的限制:

  • 您可以使用托管证书,但仅用于外部入口,不支持内部入口
  • 您的 VPC 必须以某种方式配置才能使用内部负载均衡,这非常繁琐。
  • 无法将防火墙配置为限制源 ip,因为此信息会从 Google 前端丢失到虚拟机。他们只能看到负载均衡器的源 IP。

如果您只需要一个外部入口的证书,您可以使用 声明一个入口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 入口,使用内部 IPingress-nginx设置LoadBalancer服务,然后使用cert-manager. 您可以参考此博客了解该方法。

于 2021-05-07T03:03:09.213 回答