Kubernetes 部署
适合 Kubernetes 集群和 Ingress 场景。
推荐使用 cert-manager,并通过 External Account Binding(EAB)连接 AutoSSL 的 ACME 账号。
基本概念
- 证书和私钥通常保存在 Kubernetes Secret 中。
- HTTPS 通常由 Ingress Controller 处理,例如 NGINX Ingress 或 Traefik。
- EAB MAC key 需要保存为 Secret,不能写入公开仓库。
1. 安装 cert-manager
请根据你的集群版本使用 cert-manager 官方安装方式。
Helm 示例:
bash
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=true2. 创建 EAB Secret
bash
kubectl create secret generic 12ssl-eab \
--namespace cert-manager \
--from-literal=secret="你的 EAB MAC key"3. 创建 ClusterIssuer
yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: 12ssl-acme
spec:
acme:
email: [email protected]
server: "你的 Server URL"
privateKeySecretRef:
name: 12ssl-acme-account-key
externalAccountBinding:
keyID: "你的 EAB MAC ID"
keySecretRef:
name: 12ssl-eab
key: secret应用:
bash
kubectl apply -f clusterissuer.yaml4. Ingress 示例
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
annotations:
cert-manager.io/cluster-issuer: 12ssl-acme
spec:
tls:
- hosts:
- example.com
secretName: example-com-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 805. 验证
bash
kubectl describe certificate
kubectl get secret example-com-tls
curl -I https://example.comTraefik 说明
Traefik 也支持 ACME,但生产环境更建议统一由 cert-manager 管理证书,便于审计、轮换和多 Ingress 复用。