Skip to main content

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/