我是 GKE 新手,现在正在尝试为 RASA 创建一个新集群。我正在尝试使用 HTTPS 创建一个入口来指向该集群中的负载均衡器。但我无法从列表中选择选项
Create Google-managed certificate
。它似乎在该集群中被禁用。如何启用此功能?
帮助显示:
要创建 Google 管理的证书,您的集群需要具有
存在自定义资源定义。ManagedCertificate
发布此社区 wiki 答案,以便更好地了解最近修复的创建
Create a Google-managed certificate
选项的灰色问题。
随意编辑和扩展。
您可以在 GCP Issuetracker 上找到相应的Issue:
引用帖子中的部分消息:
正如我所见,这个问题已经解决了。你不应该再遇到它了。
如上所述,这个问题应该不会再出现了。通过以下步骤复制后:
GKE
集群并等待其配置。$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
Cloud Console
-> Kubernetes Engine
-> Services & Ingress
-> Create Ingress
(选择 nginx 后 Service)
-> Frontend configuration
-> HTTPS
-> Create a new certificate
可以看到以下选项可用:
其他资源:
因为我刚刚花了几个小时使用没有 ManagedCertificate CRD 的 GKE 集群,这让我抓狂:
如果您创建私有 GKE 集群,则无法在其上使用托管证书。您需要创建一个公共集群。
由于您没有提供您所遵循的步骤,我将演示如何以正确的方式进行操作。
首先,如果您检查使用 Ingress 设置 HTTP(S) 负载均衡,您会发现 GKE 集成支持两种类型的 Cloud Load Balancing 的信息:
当您在资源清单中指定
时,GKE 会创建一个type:LoadBalancer
类型的Service
。LoadBalancer
当您在资源清单中指定
时,您将指示 GKE 创建type:Ingress
资源。通过包含注释并支持工作负载和服务,您可以创建自定义Ingress
。 ... 负载均衡器的 URL 映射的主机规则和路径匹配器引用一个或多个后端服务,其中每个后端服务对应于 NodePort 类型的 GKE 服务,如 Ingress 中引用的Ingress controller
在 GKE 文档的另一部分,与使用 Google 管理的 SSL 证书相关,您可以找到两个重要说明:
此功能仅适用于外部 HTTP(S) 负载平衡的 Ingress。
托管证书是所有 GKE 版本中都提供的 Beta 功能。在主节点运行 Kubernetes 版本低于 1.16.5-gke.1 的集群中,托管证书在版本 v1beta1 中可用,并且它们不支持每个证书多个使用者备用名称 (SAN)。
在 GKE 1.16.5-gke.1 及更高版本中,托管证书在 v1beta2 版本中可用,每个证书最多支持 100 个 SAN,v1beta1 版本也仍然可用。
我测试了一些场景,包括
LoadBalancer
和 NodePort
作为服务类型。在 RASA-X 图表中,服务属于 LoadBalancer
类型。
在我所有的测试中,当我想要 Create Google Managed Certificate
时,它只适用于 NodePort
。
您是否尝试编辑此服务并将其更改为
NodePort
?
一个很好的检查示例是遵循本教程。
如果您仍然遇到相同的问题,请提供有关您的环境以及重现问题的步骤的更多信息。