玩转cert-manager,自动申请Cloudflare免费证书
2023-04-07 16:41:32
使用 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 能够验证你的域名所有权。
- 登录 Cloudflare 账户,选择你的域名。
- 在 DNS 记录中添加一条 TXT 记录,记录名为
_acme-challenge.yourdomain.com
,内容为随机字符串。 - 等待几分钟,直到 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 密钥、证书签名请求和秘密。