在GKE中部署Cert Manager报错,求部署及Ingress SSL证书创建方案
在GKE中部署Cert Manager并为Ingress配置SSL证书
一、部署Cert Manager到GKE
1. 前置条件
- 拥有GKE集群管理员权限,且
kubectl已配置连接目标集群 - 已安装Helm(官方推荐Helm部署方式)
2. 添加Cert Manager Helm仓库
helm repo add jetstack https://charts.jetstack.io helm repo update
3. 创建专用命名空间
kubectl create namespace cert-manager
4. 安装Cert Manager(包含CRDs)
helm install cert-manager jetstack/cert-manager \ --namespace cert-manager \ --version v1.13.0 \ --set installCRDs=true
注:可替换为最新稳定版本号,需确认官方兼容GKE的版本
5. 验证部署状态
kubectl get pods -n cert-manager
确认所有Pod处于Running状态即为部署成功
二、配置证书颁发者(Let's Encrypt)
1. 创建集群级颁发者(ClusterIssuer)
创建cluster-issuer.yaml文件:
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: your-alert-email@example.com # 替换为你的邮箱,用于接收证书过期提醒 privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: gce # 匹配GKE默认Ingress类
应用配置:
kubectl apply -f cluster-issuer.yaml
2. 确认颁发者就绪
kubectl get clusterissuer letsencrypt-prod
状态显示Ready即为配置正常
三、为Ingress配置SSL证书
1. 创建带证书请求的Ingress资源
创建ingress-ssl.yaml文件:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: cert-manager.io/cluster-issuer: letsencrypt-prod # 关联已创建的ClusterIssuer spec: tls: - hosts: - your-domain.com # 替换为你的业务域名 secretName: app-tls-secret # 证书将存储在此Secret中 rules: - host: your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: your-backend-service # 替换为你的后端服务名称 port: number: 80
应用配置:
kubectl apply -f ingress-ssl.yaml
2. 验证证书颁发状态
kubectl get certificates
状态变为Ready即表示证书已成功颁发,Ingress将自动启用HTTPS
四、常见问题排查
- Pod启动失败:查看日志定位问题
kubectl logs -n cert-manager <pod-name> - 证书长期
Pending:检查ClusterIssuer是否Ready,确认域名A/AAAA记录已指向GKE Ingress的负载均衡IP - 流量无法访问:确认GKE集群防火墙已开放80(HTTP验证)和443(HTTPS)端口
内容的提问来源于stack exchange,提问作者Ruthew
相关产品推荐
相关产品推荐

