如何通过单个ExternalSecret清单同步多个AWS Secrets Manager密钥至Kubernetes
用单个YAML文件同步多个AWS密钥到Kubernetes
单个ExternalSecret资源只能对应生成一个Kubernetes Secret,但你可以在同一个YAML文件中定义多个ExternalSecret对象,通过Kubernetes YAML的多文档分隔符---分隔,实现用一个文件完成多组AWS密钥到对应K8s Secret的同步。
多ExternalSecret单文件示例
apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: test-secret-1 spec: refreshInterval: 1m secretStoreRef: name: global-secret-store kind: ClusterSecretStore target: name: "test-secret-1" creationPolicy: Owner dataFrom: - extract: key: "AWS-test-secret-1" --- apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: test-secret-2 spec: refreshInterval: 1m secretStoreRef: name: global-secret-store kind: ClusterSecretStore target: name: "test-secret-2" creationPolicy: Owner dataFrom: - extract: key: "AWS-test-secret-2" --- apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: test-secret-3 spec: refreshInterval: 1m secretStoreRef: name: global-secret-store kind: ClusterSecretStore target: name: "test-secret-3" creationPolicy: Owner dataFrom: - extract: key: "AWS-test-secret-3"
关键说明
- 每个
ExternalSecret的metadata.name和spec.target.name需保持唯一(建议两者一致,便于管理)。 - 每个
spec.dataFrom.extract.key对应AWS Secrets Manager中的一个独立密钥名称。 - 部署时直接执行
kubectl apply -f your-file.yaml,Kubernetes会自动创建所有ExternalSecret资源,并同步生成对应的K8s Secret。
备选方案:合并多AWS密钥到单个K8s Secret
如果你的需求是将多个AWS密钥的内容合并到同一个K8s Secret中,可在单个ExternalSecret的dataFrom字段下添加多个extract条目:
apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: merged-secret spec: refreshInterval: 1m secretStoreRef: name: global-secret-store kind: ClusterSecretStore target: name: "merged-secret" creationPolicy: Owner dataFrom: - extract: key: "AWS-test-secret-1" - extract: key: "AWS-test-secret-2" - extract: key: "AWS-test-secret-3"
这种方式会将三个AWS密钥的所有键值对合并到merged-secret中,若存在键名冲突,后配置的AWS密钥会覆盖前面的内容。
内容的提问来源于stack exchange,提问作者megha
相关产品推荐
相关产品推荐

