如何管理除容器之外的 Kubernetes 对象的机密

问题描述 投票:0回答:1

这个问题可能很愚蠢,但我正在努力找出答案。

我正在创建一个 ServiceAccount 对象并传递一个包含敏感信息的注释,并且我不想在清单上显式提供该信息,也不想将其保留在存储库中。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: velero-service-account
  annotations:
      eks.amazonaws.com/role-arn: "arn:aws:iam::111111111:role/eks-velero-backup"

在这里,我将

11111111
视为敏感信息。

我正在计划而不是

111111111
这个值,我必须放置一个变量并将其存储在存储库中,并且必须将实际值存储在其他地方。

当我部署时,实际值应该放在预期的位置。

我正在使用 EKS 集群和 kubectl 实用程序。

如果有人有解决方案,请在下面评论。

谢谢你。

amazon-web-services kubernetes kubernetes-helm amazon-eks
1个回答
0
投票

Something 从根本上来说必须替换这个值并将其发送到 Kubernetes 集群。

kubectl get serviceaccount velero-service-account -o yaml
始终可以以纯文本形式读取它。这可能会影响您愿意掩盖该价值的程度。

如果您使用 Helm,这可能是一个简单的部署时间替换:

# templates/serviceaccount.yaml
metadata:
  annotations:
    eks.amazonaws.com/role-arn: "arn:aws:iam::{{ .Values.awsAccountId }}:role/eks-velero-backup"

然后当你去部署它的时候,你的部署系统就可以替换这个值了

helm upgrade --install release-name . \
  --set-string awsAccountId=123456789012

或将值放入由

helm upgrade -f
选项提供的 YAML 或 JSON 文件中。

Helm 会将这个值存储在集群中的 Secret 中,并且再次

helm get values release-name
将显示实际值。

© www.soinside.com 2019 - 2024. All rights reserved.