在Kubernetes等编排平台上使用通配符证书的信任提供商和相关成本

64次阅读
没有评论

问题描述

在使用Kubernetes集群等编排平台时,想要了解有哪些值得信任的提供商可以提供通配符证书,并且了解相关的成本情况。目前,用户使用certbot和nginx来创建受信任的网页。最近,他尝试将这些镜像迁移到Google Cloud Platform上的Kubernetes集群。他找到了一个配置SSL负载均衡器的指南。尝试之后,发现有多个文本框可以插入密钥、证书和链。他曾尝试查看Google是否也提供通配符证书,但没有找到相关信息。去年Certbot宣布将支持通配符证书,但实际情况似乎并非如此。初步判断是在Google负载均衡器中使用Certbot可能不可行,或者会变得繁琐,因为证书每三个月需要更新一次。他在搜索“cheap wildcard ssl”时看到了很多结果。问题在于这些提供商中哪些可以被视为安全,成本如何,以及你使用的是哪些提供商以及原因?

解决方案

请注意以下操作可能受版本差异影响,如有需要,请做好版本匹配和备份。

使用Ingress和Cert-Manager

您可以考虑使用Kubernetes的Ingress和Cert-Manager来管理证书和SSL配置。以下是相关步骤:

  1. Ingress配置:Kubernetes Ingress可以配置负载均衡器。您可以参考Google Cloud Platform的文档链接以配置Ingress。

  2. Cert-Manager:使用Cert-Manager可以从Let’s Encrypt获取证书(类似于Certbot的功能),它会自动处理续订。您可以在GitHub仓库中找到Cert-Manager。

以下是在Kubernetes中使用Ingress和Cert-Manager的基本步骤:

  1. 在Kubernetes集群中安装和配置Cert-Manager。
  2. 创建一个Ingress对象,配置域名和路径规则,同时指定需要使用的证书。
  3. 配置Cert-Manager发行者(Issuer)和证书,以及与域名的关联。

示例Ingress和Cert-Manager配置

以下是一个示例Ingress配置,同时使用Cert-Manager获取证书:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    kubernetes.io/tls-acme: "true"  # 启用Cert-Manager自动获取证书
    kubernetes.io/ingress.class: "gce"  # 使用GCE Ingress Controller
spec:
  backend:
    serviceName: backend-service
    servicePort: 80
  tls:  # 配置证书
  - hosts:
    - example.com
    - api.example.com
    secretName: app-ingress-tls
  rules:
  - host: example.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: backend-service
          servicePort: 443
  - host: api.example.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: backend-service
          servicePort: 443

请注意,上面的配置示例中,您需要将backend-service替换为实际的后端服务名称,并将example.com替换为您的域名。此配置将创建一个Ingress,同时使用Cert-Manager自动获取证书,并将其保存在名为app-ingress-tls的Secret中。证书续订将由Cert-Manager自动处理。

其他提供商和注意事项

目前,让我们来看一下使用Let’s Encrypt的其他方法:

  1. kube-lego: 您可以使用kube-lego来自动管理证书。您可以根据kube-lego示例配置,并在Ingress中指定kubernetes.io/tls-acme: "true"来启用自动证书获取。

  2. 域名购买和DNS设置: 在使用Let’s Encrypt之前,您需要购买一个域名并将其指向Kubernetes集群的IP地址。确保将域名的DNS记录配置正确,以便验证和获取证书。

  3. 证书续订: 让’s Encrypt颁发的证书通常有效期为90天。通过使用自动化工具,如Cert-Manager,您可以实现证书的自动续订,无需手动干预。

总之,Ingress和Cert-Manager是在Kubernetes中管理证书的常用方式之一。此外,对于域名购买、DNS设置以及证书续订等方面也需要特别注意。根据您的实际需求,您可以选择适合您场景的解决方案。

上述解决方案可能会受到版本和环境的影响,建议您根据实际情况进行调整和测试。在进行任何更改之前,务必备份您的数据和配置。

如果您对不同提供商的证书、配置和成本有更多疑问,可以深入研究每个提供商的文档和用户反馈,以选择最适合您需求的解决方案。

正文完