external-secrets

External Secrets Operator 外部密钥同步

补充说明

External Secrets Operator(ESO)把 Vault、AWS Secrets Manager、阿里云 KMS、腾讯云 Secret Manager 等外部密钥同步成 Kubernetes Secret。它支持自动刷新、模板、命名空间隔离和 PushSecret。

核心资源:SecretStore、ClusterSecretStore、ExternalSecret、PushSecret 和 SecretStore 的 provider 配置。

语法

安装:

helm repo add external-secrets https://charts.external-secrets.io
helm install external-secrets external-secrets/external-secrets \
  --namespace external-secrets --create-namespace
kubectl -n external-secrets get pods

创建 SecretStore(以 Vault 为例):

kubectl apply -f - <<'EOF'
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: vault
  namespace: demo
spec:
  provider:
    vault:
      server: https://vault.example.com
      path: secret
      version: v2
      auth:
        kubernetes:
          mountPath: kubernetes
          role: demo
EOF

创建 ExternalSecret:

kubectl apply -f - <<'EOF'
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: db
  namespace: demo
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: vault
    kind: SecretStore
  target:
    name: db-secret
  data:
  - secretKey: password
    remoteRef:
      key: demo/db
      property: password
EOF

查看同步状态:

kubectl get externalsecret -n demo
kubectl describe externalsecret db -n demo
kubectl get secret db-secret -n demo

使用 ClusterSecretStore 跨命名空间:

kubectl apply -f - <<'EOF'
apiVersion: external-secrets.io/v1beta1
kind: ClusterSecretStore
metadata:
  name: vault-global
spec:
  provider:
    vault:
      server: https://vault.example.com
      path: secret
      version: v2
      auth:
        kubernetes:
          mountPath: kubernetes
          role: global
EOF

注意

相关命令

参考链接