下面是一个使用Cert-Manager在Kubernetes中管理证书的简单示例:
- 安装Cert-Manager:
- 首先,确保已经安装了Helm(Helm是一个Kubernetes包管理工具)。
- 添加Cert-Manager的Helm存储库:
helm repo add jetstack https://charts.jetstack.io
- 更新Helm存储库:
helm repo update
- 创建名为
cert-manager
的命名空间:kubectl create namespace cert-manager
- 安装Cert-Manager:
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.5.4
- 创建证书颁发机构(Issuer):
- 创建一个文件
issuer.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 issuer.yaml
- 创建一个Ingress资源:
- 创建一个文件
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 ingress.yaml
- 验证证书:
- 使用以下命令检查证书是否已成功颁发:
kubectl describe certificate example-tls
- 查看"Events"部分,确保证书已被颁发并与Ingress关联。
通过以上步骤,您将通过Cert-Manager自动颁发Let’s Encrypt证书,并将其与Ingress关联,从而实现HTTPS访问。请注意,示例中使用的是Let’s Encrypt的生产环境,确保您的域名解析正确,并且在公共Internet中可访问。
请记住,这只是一个简单的示例,您可以根据自己的需求和环境进行更详细的配置和调整。Cert-Manager还提供了其他功能和配置选项,如自定义证书颁发机构、自动更新证书等,您可以查阅官方文档以获取更多信息和示例:https://cert-manager.io/docs/