这个问题可能很愚蠢,但我正在努力找出答案。
我正在创建一个 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 实用程序。
如果有人有解决方案,请在下面评论。
谢谢你。
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
将显示实际值。