Skip to content

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=true

2. 创建 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.yaml

4. 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: 80

5. 验证

bash
kubectl describe certificate
kubectl get secret example-com-tls
curl -I https://example.com

Traefik 说明

Traefik 也支持 ACME,但生产环境更建议统一由 cert-manager 管理证书,便于审计、轮换和多 Ingress 复用。

Released under internal 12SSL documentation guidelines.