首页/开发/CI/CD 与发布速查/External Secrets Operator
环境与配置管理60 条

External Secrets Operator

把外部密钥库(Vault/AWS/GCP/Azure 等)中的密钥同步为 K8s Secret:集中管理、按需下发,避免密钥散落集群。

CI/CD 与发布速查开发更新于 2026-10-13

External Secrets Operator 是什么

External Secrets Operator(ESO)把外部密钥库(Vault、AWS/GCP/Azure 密钥服务等)里的密钥同步为 K8s Secret:密钥的唯一真源留在外部库,集群只是投影。模型分两层:SecretStore / ClusterSecretStore 定义后端与认证方式,ExternalSecret 声明要拉取哪些键、落到哪个 Secret;refreshInterval 控制对齐周期,外部库变更后集群自动更新。好处是集中管理、按需下发、避免密钥散落在集群各处。

基本信息

模型SecretStore/ClusterSecretStore 定义后端与认证;ExternalSecret 声明要拉取的键
同步按 refreshInterval 定期对齐;变更入集群自动更新
收益密钥唯一真源在外部库,集群只是投影
权限边界控制器能读的密钥范围即攻击面,逐环境隔离后端

典型使用场景

  • 多集群统一密钥:各集群从同一外部库同步,杜绝各环境手工配置漂移。
  • 轮换自动化:外部库轮换后,集群按周期自动对齐,缩短旧密钥存活时间。
  • 审计集中:密钥访问记录留在外部库的审计日志里,谁读了什么有据可查。
  • 减少集群内的长期凭据:以 workload identity 方式认证,集群不存基础凭据。
  • 环境隔离:生产 Store 使用独立认证与路径,开发账号看不到生产密钥。

ExternalSecret 片段

ExternalSecret 片段
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: vault-backend
    kind: ClusterSecretStore
  target:
    name: db-credentials
  data:
    - secretKey: password
      remoteRef:
        key: prod/db
        property: password

资源速查

资源作用
SecretStore命名空间级的后端定义与认证
ClusterSecretStore集群级后端,跨命名空间复用
ExternalSecret声明拉取键与目标 Secret
refreshInterval同步周期,按密钥敏感度设置
集群侧权限最小化:该控制器能读的密钥范围即攻击面范围,逐环境隔离后端与凭据。
同步失败要可观测:外部库不可达时目标 Secret 保持旧值,表现为「改了不生效」,监控 ExternalSecret 状态与同步延迟。
多集群时各集群控制器独立认证:一处凭据泄露不影响其他集群,这也是选用同步模型而非中心化推送的理由之一。

易错点

  • 同步账号权限过大(通读全部密钥):按命名空间/环境拆分 Store 与凭据。
  • 外部密钥删改后集群残留旧值:依赖同步机制并巡检对齐状态,重要轮换做变更验证。
  • 轮换后应用不重启:环境变量注入是启动时快照,Secret 更新不会进入既有进程,需要滚动重启或挂载为文件。
  • Store 认证本身又落成长期静态凭据:用工作负载身份等免密钥认证,减少二级凭据管理。
  • 把 ESO 当集群内缓存全量密钥:同步范围按需最小化,不做「全量镜像」。

数据来源与参考

  • External Secrets Operator 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌