在Kubernetes环境下,使用cert-manager进行HTTPS证书的管理是一个高效且自动化的解决方案,它允许用户轻松地在Kubernetes集群中部署和维护SSL/TLS证书。此指南旨在提供一种实用的方式来配置和使用cert-manager,确保您的应用安全地通过HTTPS提供服务。

cert-manager 简介

cert-manager是一个自动化管理证书的Kubernetes工具,它可以为你的应用生成、续签和管理SSL/TLS证书。它支持多个颁发机构,包括Let's Encrypt、HashiCorp Vault、Venafi等,同时也支持自签名证书。使用cert-manager可以大大简化证书的管理过程,避免手动更新和续期证书的繁琐。

安装 cert-manager

  1. 添加 Helm 仓库:cert-manager可以通过Helm进行安装。首先,添加jetstack Helm仓库:

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
  2. 安装 cert-manager:使用Helm安装cert-manager及其CRDs(Custom Resource Definitions):

    helm install \
      cert-manager jetstack/cert-manager \
      --namespace cert-manager \
      --create-namespace \
      --version v1.3.0 \
      --set installCRDs=true

    确保指定的版本与您的Kubernetes集群兼容。

配置证书发行人

cert-manager通过证书发行人(Issuer或ClusterIssuer)来颁发证书。Issuer作用于特定的命名空间,而ClusterIssuer在整个集群范围内有效。

  1. 创建一个Issuer或ClusterIssuer:例如,配置一个Let's Encrypt的ClusterIssuer。

    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: letsencrypt-prod
    spec:
      acme:
        server: https://acme-v02.api.letsencrypt.org/directory
        email: your-email@example.com
        privateKeySecretRef:
          name: letsencrypt-prod
        solvers:
        - http01:
            ingress:
              class: nginx

    your-email@example.com替换为您的电子邮件地址。这对于Let's Encrypt的通知和证书续期很重要。

配置证书

一旦Issuer配置完成,就可以为您的服务创建证书请求了。

  1. 创建证书:为您的域创建一个证书,确保指定正确的Issuer和域名。

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: my-website
      namespace: default
    spec:
      secretName: my-website-tls
      issuerRef:
        name: letsencrypt-prod
        kind: ClusterIssuer
      dnsNames:
      - my-website.example.com

自动化 HTTPS 配置

通过Ingress资源自动化配置HTTPS,您需要确保Ingress资源指向正确的Secret,并且cert-manager能够自动更新和应用证书。

  1. 配置Ingress:更新您的Ingress资源,使用cert-manager生成的证书:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-website
      annotations:
        cert-manager.io/cluster-issuer: "letsencrypt-prod"
    spec:
      rules:
      - host: my-website.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-website-service
                port:
                  number: 80
      tls:
      - hosts:
        - my-website.example.com
        secretName: my-website-tls

通过遵循以上步骤,您可以在Kubernetes环境下利用cert-manager自动管理HTTPS证书,保证服务的安全和可靠性。这个过程简化了证书的申请、更新和管理工作,让开发者和运维人员可以更专注于应用的开发和维护。

云服务器/高防CDN推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云安全企业级高防CDN:www.tsycdn.com

持有增值电信营业许可证:B1-20222080【资质齐全】

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 02 月 11 日
如果觉得我的文章对你有用,请随意赞赏