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

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

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

ssl kubernetes google-kubernetes-engine
3个回答
8
投票

截至 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 关联,请首先执行以下两个基本步骤:

  • 在与证书相同的命名空间中创建 ManagedCertificate 对象 入口。
  • 通过添加以下内容将 ManagedCertificate 对象关联到 Ingress 将 Networking.gke.io/management-certificates 注释到 Ingress。 该注释是 ManagedCertificate 的逗号分隔列表 资源,例如 cert1、cert2、cert3。 这里详细提到了。

您必须遵循一些先决条件

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

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


5
投票

0
投票

我在使用 Autopilot GKE 集群配置证书管理器时遇到问题,我收到的错误如下:

发生内部错误:调用 webhook 失败 “webhook.cert-manager.io”:调用 webhook 失败:发布 “https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s”: tls:无法验证证书:x509:证书由未知签名 权威

我试图遵循以下文档:

https://cert-manager.io/docs/tutorials/getting-started-with-cert-manager-on-google-kubernetes-engine-using-lets-encrypt-for-ingress-ssl/

关于此线程的讨论,特别是下面的链接帮助我排除故障并确定问题:

https://github.com/cert-manager/cert-manager/issues/3717

基本上,您需要通过 Helm 安装 Cert-Manager 并使用要将所有内容部署到的命名空间覆盖

global.leaderElection.namespace
,通常应该是
cert-manager
,因此您应该执行以下命令:

helm repo add jetstack https://charts.jetstack.io

helm repo update

helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.6.0 --set global.leaderElection.namespace=cert-manager --set installCRDs=true --set prometheus.enabled=false

感谢@Brad J 和 Priya Gaikwad 在上面提供有用的信息。

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