Cert-Manager
使用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/