返回

玩转cert-manager,自动申请Cloudflare免费证书

前端

使用 cert-manager 为你的 Kubernetes 集群轻松部署 HTTPS

在 Kubernetes 的世界里,为你的应用程序提供安全可靠的 HTTPS 连接至关重要。而 cert-manager 是一个必不可少的工具,可以帮助你简化证书管理,并轻松部署 HTTPS 服务。本文将一步一步地指导你如何使用 cert-manager 从 Cloudflare 免费申请证书,并将其集成到你的 Kubernetes 集群中。

步骤一:安装 cert-manager

首先,我们需要在你的 Kubernetes 集群中安装 cert-manager。这是一个 Kubernetes 附加组件,可以帮助你轻松地管理证书。

# 添加 Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新 Helm 仓库
helm repo update

# 安装 cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager

步骤二:创建 Cloudflare DNS 记录

接下来,我们需要在 Cloudflare 中创建一个 DNS 记录,以便 cert-manager 能够验证你的域名所有权。

  1. 登录 Cloudflare 账户,选择你的域名。
  2. 在 DNS 记录中添加一条 TXT 记录,记录名为 _acme-challenge.yourdomain.com,内容为随机字符串。
  3. 等待几分钟,直到 DNS 记录生效。

步骤三:创建 CertificateRequest 对象

现在,我们可以创建 CertificateRequest 对象来申请证书。以下是一个示例:

apiVersion: cert-manager.io/v1
kind: CertificateRequest
metadata:
  name: example-certificate
  namespace: default
spec:
  issuerRef:
    name: selfsigned-issuer
  subject:
    organizations: [ "Example Organization" ]
    commonName: example.com

步骤四:等待证书颁发

提交 CertificateRequest 对象后,cert-manager 将会向 Cloudflare 申请证书。这个过程可能需要几分钟。

步骤五:验证证书

证书颁发完成后,我们可以通过以下命令查看证书状态:

kubectl get certificate example-certificate -n default

步骤六:部署 HTTPS 服务

最后,我们可以部署 HTTPS 服务,将流量重定向到安全的 HTTPS 端口。以下是一个示例:

apiVersion: v1
kind: Service
metadata:
  name: example-service
  namespace: default
spec:
  selector:
    app: example-app
  ports:
  - port: 443
    targetPort: 80
    name: https

恭喜你! 现在你已经成功地使用了 cert-manager,从 Cloudflare 免费申请了证书,并部署了 HTTPS 服务。你的网站现在更加安全可靠了!

常见问题解答

1. cert-manager 是否适用于所有云平台?

cert-manager 适用于 Kubernetes 的所有主要云平台,包括 AWS、GCP 和 Azure。

2. 我可以使用 cert-manager 来管理自签名证书吗?

是的,cert-manager 可以用于管理自签名证书。你还可以使用 cert-manager 集成 Let's Encrypt 等其他证书颁发机构。

3. 如何更新我的证书?

cert-manager 会自动更新你的证书,你不需要手动执行任何操作。

4. 如果我的证书过期了怎么办?

cert-manager 会在你证书过期之前自动续订它。

5. cert-manager 有哪些其他用途?

除了申请和管理证书,cert-manager 还可以用于创建和管理 TLS 密钥、证书签名请求和秘密。