werwerwer
DR 容灾etcd 加密:确定性密钥派生

etcd 加密:确定性密钥派生

主题入口与阅读顺序

etcd 加密:确定性密钥派生

容灾场景下,etcd 开启 encryption at rest 后,Active 与 Standby 必须使用相同的加密密钥,否则 Standby 拿到 etcd-sync 同步过来的密文会无法解密。本主题说明在 Global 集群上如何用 etcd-encryption-manager 的 deterministic 模式拉齐两边的密钥。

总体架构

要点:

  • 密钥本身不过网——只同步 SeedBundle;两侧分别基于"相同 root secret + 相同 SeedBundle"独立派生,输出一致
  • Root Secret 不同步——由部署阶段在 Active 和 Standby 各自创建同样内容
  • 本地状态不同步——EtcdKeySeedBundleState、EtcdEncryptionConfig、本地派生出的 key Secret 全部由 etcd-sync 显式忽略

文档地图

角色该读哪一篇
部署 / 运维 Active+Standby Globalinstallation-handbook.md
想了解派生算法、CRD、与 etcd-sync 的契约、approvalDelay 时序约束key-derivation-spec.md

一页速查

关键参数

参数取值是否必填说明
key_strategydeterministic是Global 集群必须设置为此值
replication_group_id单独规划的不透明标识,推荐 UUID是同一对 Active/Standby 必须完全一致
root_secret_name默认 etcd-derivation-root是Secret 位于 kube-system,两边内容必须完全一致

关键 CRD

CRD作用是否需要同步到 Standby
EtcdKeySeedBundle (cluster scope)共享种子,决定每个 revision 的派生输入是
EtcdKeySeedBundleState (cluster scope)本集群派生执行的本地状态否
EtcdEncryptionConfig (cluster scope)加密总配置,含 rotation / strategy / deterministic 子字段否(两边各自由 chart 渲染)

关键 etcd-sync 规则

类型etcd 路径备注
同步/registry/etcdkeyseedbundles.cluster.alauda.io/Standby 用它派生相同密钥
忽略/registry/etcdkeyseedbundlestates.cluster.alauda.io/本地状态
忽略/registry/etcdencryptionconfigs.cluster.alauda.io/default本地配置
忽略/registry/secrets/kube-system/<root_secret_name>Root Secret,两边各自部署
忽略/registry/secrets/kube-system/etcd-encryption-key-本地派生出的 key Secret 前缀
忽略/registry/configmaps/kube-public/etcd-syncruntime 角色 marker,由本地 etcd-sync 维护

完整接入规则与字段语义见同仓 etcd-sync-dynamic-configmap-migration/provider-spec.md。

与其他主题的关系

  • 与 active-standby-controller-coordination 共享同一个 runtime 角色信号(kube-public/etcd-sync ConfigMap)。一个判定 Active/Standby 的来源,两边都按它行动。
  • 加密层不直接同步 key,而是只同步 SeedBundle,Active 与 Standby 各自基于共享的 root secret 独立派生出相同的 key。

On this page