如何在 Google Kubernetes 上启用 google 托管证书?

问题描述 投票:0回答:3

我是 GKE 新手,现在正在尝试为 RASA 创建一个新集群。我正在尝试使用 HTTPS 创建一个入口来指向该集群中的负载均衡器。但我无法从列表中选择选项

Create Google-managed certificate
。它似乎在该集群中被禁用。如何启用此功能?

帮助显示:

要创建 Google 管理的证书,您的集群需要具有

ManagedCertificate
存在自定义资源定义。

google-cloud-platform certificate ssl-certificate google-kubernetes-engine gke-networking
3个回答
3
投票

发布此社区 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

可以看到以下选项可用:


其他资源:


0
投票

因为我刚刚花了几个小时使用没有 ManagedCertificate CRD 的 GKE 集群,这让我抓狂:

如果您创建私有 GKE 集群,则无法在其上使用托管证书。您需要创建一个公共集群。


-1
投票

由于您没有提供您所遵循的步骤,我将演示如何以正确的方式进行操作。

首先,如果您检查使用 Ingress 设置 HTTP(S) 负载均衡,您会发现 GKE 集成支持两种类型的 Cloud Load Balancing 的信息:

当您在资源清单中指定

type:LoadBalancer
时,GKE 会创建一个
Service
类型的
LoadBalancer

当您在资源清单中指定

type:Ingress
时,您将指示 GKE 创建
Ingress
资源。通过包含注释并支持工作负载和服务,您可以创建自定义
Ingress controller
。 ... 负载均衡器的 URL 映射的主机规则和路径匹配器引用一个或多个后端服务,其中每个后端服务对应于 NodePort 类型的 GKE 服务,如 Ingress 中引用的

在 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

一个很好的检查示例是遵循本教程

如果您仍然遇到相同的问题,请提供有关您的环境以及重现问题的步骤的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.