要配置Cert-Manager与Let’s Encrypt集成以自动申请证书,您需要完成以下步骤:
- 安装Cert-Manager:请参考之前提到的安装Cert-Manager的步骤。
- 创建一个证书颁发机构(Issuer)对象:
- 创建一个名为
letsencrypt-prod
的文件,例如letsencrypt-prod.yaml
,并添加以下内容:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: your-email@example.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
- 将
your-email@example.com
替换为您自己的电子邮件地址。 - 应用Issuer配置:
kubectl apply -f letsencrypt-prod.yaml
- 创建一个Ingress对象并关联证书:
- 创建一个名为
example-ingress
的文件,例如example-ingress.yaml
,并添加以下内容:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
cert-manager.io/issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- example.com
secretName: example-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-app
port:
number: 80
- 将
example.com
替换为您自己的域名。 - 将
example-app
替换为您正在使用的后端服务。 - 应用Ingress配置:
kubectl apply -f example-ingress.yaml
- 等待证书颁发:
- Cert-Manager将自动监视您的Ingress对象,并在需要时向Let’s Encrypt发出证书申请。
- Cert-Manager将为您的域名验证所有权,并在成功验证后自动颁发证书。
- 您可以使用
kubectl describe certificate example-tls
命令来查看证书颁发的状态和事件。
通过以上步骤,您将配置了Cert-Manager与Let’s Encrypt的集成,并使其自动申请和管理证书。请确保您的域名解析正确,并且在公共Internet中可访问。Cert-Manager将处理证书的自动更新和续期,以确保您的应用程序始终使用有效的证书。
请注意,示例中使用的是Let’s Encrypt的生产环境,对于测试和开发环境,您可以使用Let’s Encrypt的Staging环境(https://acme-staging-v02.api.letsencrypt.org/directory),以避免达到Let’s Encrypt生产环境的频率限制。
这只是一个简单的示例,您可以根据自己的需求和环境进行更详细的配置和调整。Cert-Manager和Let’s Encrypt提供了更多高级功能和选项,您可以查阅官方文档以获取更多信息和示例:https://cert-manager.io/docs/