在 Kubernetes 中实现密钥轮转(Secrets Rotation)可以通过多种方式完成,具体取决于密钥的用途(如 TLS 证书、数据库密码、API 密钥等)以及应用对密钥变更的容忍度。以下是几种常见的实现方法:
适用场景:简单场景,应用能容忍短暂中断。 步骤:
适用场景:生产环境,要求高安全性。 工具:
示例(HashiCorp Vault 动态 Secret):
适用场景:需要自动化管理 Secret 轮转。 工具:
示例(cert-manager 自动轮转 TLS 证书):
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-tls-cert
spec:
secretName: tls-secret
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: example.com
dnsNames:
- example.com
cert-manager 会自动检测证书过期并轮转。
适用场景:应用能动态加载 Secret,无需重启。 方法:
适用场景:需要隔离密钥管理逻辑。 方法:
示例(Vault Agent Sidecar):
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: app
image: my-app
- name: vault-agent
image: hashicorp/vault-agent
args: ["agent", "-config=/vault/config.hcl"]
volumeMounts:
- name: shared-data
mountPath: /shared
volumes:
- name: shared-data
emptyDir: {}
适用场景:强制实施密钥轮转策略。 方法: