我正在尝试使用通过 Certificate Manager 管理的通配符证书来设置 GKE Gateway 和 HTTPS 侦听器。
我面临的问题是不是在提供证书方面,这是按照DNS授权教程和这个答案成功完成的。我已成功配置通配符证书,该证书由
gcloud certificate-manager certificates describe <cert-name>
显示为 ACTIVE
并且
域及其通配符子域上的 AUTHORIZED
。我还配置了关联的证书映射和映射条目(全部通过 Terraform),并在 Cloud DNS 中为其创建了一个全局静态 IP 地址和通配符 A 记录。
但是,当我尝试在 GKE 网关资源中使用此证书和地址时,资源会“卡住”(永远不会达到同步阶段),并且没有配置 HTTPS GCLB,如通过
gcloud
或 Cloud Console 看到的那样。
这是我尝试使用的配置:
kind: Gateway
apiVersion: gateway.networking.k8s.io/v1beta1
metadata:
name: external-https
annotations:
networking.gke.io/certmap: gke-gateway
spec:
gatewayClassName: gke-l7-gxlb
listeners:
- name: http
protocol: HTTP
port: 80
allowedRoutes:
kinds:
- kind: HTTPRoute
- name: https
protocol: HTTPS
port: 443
allowedRoutes:
kinds:
- kind: HTTPRoute
addresses:
- type: NamedAddress
value: gke-gateway
我尝试了此配置的多种不同组合,包括使用显式
IPAddress
或不使用 allowedRoutes
。但无论我怎么努力,似乎都不起作用。我只能在 ADD
的输出中看到初始 UPDATE
和 kubectl describe gateway external-http
事件,而且在任何地方都找不到它的日志(因为 GKE 网关控制器是 GKE 控制平面的一部分,并且没有任何日志)根据我的理解,向客户公开的日志记录)。
我唯一一次能够使内部或外部网关工作是在使用 HTTP 协议时,即没有证书时。因此,我认为这与 HTTPS 有关,更具体地说,可能与链接到托管通配符证书有关。
此外,我应该提到的是,即使在重用以前有效的 HTTP 配置时,我部署网关的尝试大多数时候都会失败(即资源以同样的方式“卡住”)。我不确定这种不稳定的根源是什么(除了一些内部配额之外),但我想这完全是预料之中的,因为该服务仍处于测试阶段。
是否有人能够实际配置带有 HTTPS 侦听器和通配符证书的网关,以及如何配置?
也许您应该使用 gke-l7-global-external-management