GKE Autopilot:如何向 GKE Autopilot 添加/管理 SSL 证书

Oga*_*ala 7 ssl kubernetes google-kubernetes-engine

我最近设置了一个 GKE 自动驾驶仪,但意识到它不支持 cert-manager 所依赖的 webhooks。我们还可以选择哪些其他选项来向 GKE Auto-pilot 集群添加/管理 SSL 证书?

Pri*_*wad 7

截至 2021 年 5 月,GKE Autopilot 不支持第 3 方 Webhooks。如果没有 webhook,许多 Kubernetes 插件(例如 cert-manager)将无法正常运行。Cert-manager 使用自定义变异准入 Webhook 来管理证书,该证书在 GKE Autopilot 上是不可变的。

要为 Autopilot 集群添加/管理 SSL 证书,您应该首先从此官方 GCP 文档 Google 管理的 SSL 证书开始。

您可以使用 ManagedCertificate 自定义资源配置 Google 管理的 SSL 证书,该资源在不同的 API 版本中可用,具体取决于您的 GKE 集群版本。建议您使用较新的 API 版本。

  • ManagedCertificate v1beta2 API 在 GKE 集群版本 1.15 及更高版本中可用。
  • ManagedCertificate v1 API 在 GKE 集群版本 1.17.9-gke.6300 及更高版本中可用。

注意:内部 HTTPS 负载均衡器目前不支持 Google 管理的 SSL 证书。对于内部 HTTPS 负载均衡器,请改用自我管理的 SSL 证书。此功能仅适用于外部 HTTP(S) 负载平衡的 Ingress,可以在此处阅读更多信息。

要配置 Google 管理的 SSL 证书并将其与 Ingress 关联,请首先执行以下两个基本步骤:

  • 在与 Ingress 相同的命名空间中创建 ManagedCertificate 对象。
  • 通过将注释 Networking.gke.io/managed-certificates 添加到 Ingress,将 ManagedCertificate 对象关联到 Ingress。此注释是 ManagedCertificate 资源的逗号分隔列表,例如 cert1,cert2,cert3。这里详细提到了这一点。

您必须遵循一些先决条件

  • 您必须拥有该域名(Google Domains 或其他注册商)。
  • 您的“kubernetes.io/ingress.class”必须是“gce”。
  • 创建保留的(静态)外部 IP 地址。如果您不保留地址,该地址可能会发生变化,从而要求您重新配置域的 DNS 记录。

要设置 Google 管理的证书,请查看示例 ManagedCertificate 清单