【问题标题】:How to handle secrets in ConfigMaps?如何处理 ConfigMaps 中的秘密?
【发布时间】:2019-08-06 17:09:35
【问题描述】:

我想在ConfigMap 中使用Secret。这可能吗?

示例:

如果您想从Fluentd to S3 写信,则可能需要这样做。在配置中,您必须添加您的 AWS 凭证。

替代方案:

在集群本身上使用环境变量。我不喜欢这个想法,因为该变量仍将包含纯文本形式的秘密。

在设置期间传递密码。如果您使用部署工具,则可能会在部署应用程序期间传递密钥。这也不是一个好的解决方案,因为您仍然将秘密作为纯文本传递给部署工具。这种方法的一个优点是您不会意外地将您的秘密签入 git。

【问题讨论】:

  • 你经历过这个medium.com/google-cloud/…
  • 谢谢@mchawre。我去看看
  • 所以我的理解是,@mchawre 解决方案的工作原理如下:将秘密数据传递给 K8s 秘密,通过 env 变量公开这些数据,然后在 configmap 中使用它。那是对的吗?不确定这是否可行。在示例中,他没有将任何秘密数据传递给 configmap
  • 是的,但该环境将包含 base 64 编码数据。您需要对其进行解码才能使用。
  • 目前我认为最好的选择是使用 AWS IAM 角色并将该角色分配给 kubernetes 节点。

标签: kubernetes configmap kubernetes-secrets


【解决方案1】:

尝试avoid 在 kubernetes 中使用 aws 凭据。

see aws_key_idaws_sec_key 是可选字段。

利用AWS IAM role并将其分配给kubernetes节点。

然后尝试在其 config 中不使用 aws 凭据运行您的 fluentd 应用程序。

试试看吧。

希望这会有所帮助。

更新:

This 文章解释了将 aws iam 用于 kubernetes 的不同方法。

Kube2iam 和许多 other 这样的工具可能会有所帮助。试试看吧。

【讨论】:

  • 我认为这只有在您在 AWS EC2 实例上运行时才有可能。见github.com/fluent/fluent-plugin-s3
  • 是的。你的 kubernetes 到底在哪里运行。哪个云提供商?
  • 应该独立于云提供商。
  • 请通过此medium.com/merapar/… 事情将得到清除。
  • 这看起来很有希望。它独立于底层 IaaS 提供商,对吗?
【解决方案2】:

不,这是不可能的。对于敏感数据,您应该始终使用 secret

默认情况下,机密只是文件的 base64 编码内容,因此您应该使用 Vault 之类的东西来保护您的敏感数据。

【讨论】:

  • 好的。那么您将如何解决示例的情况?
  • 与@mchawre 提到的article 完全一样,但就像我指出的那样,您的那只是base64 编码的。
  • TL;DR;您最终将获得存储在 ENV 中的 base64 编码 AWS 凭证。
  • 请注意,如果您想要更多的 GitOps 方法,可以使用一些非常好的工具来加密机密 - 因此您可以将它们存储在 Git 上。我过去曾发布过它-查看here
  • @FL3SH 这篇文章没有提到我的问题的有效解决方案。它讨论了环境变量、Docker 变量和 K8s 变量。我不想将这些敏感数据存储为明文战争,并且由于它被配置映射消耗,我无法将其存储在秘密中
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 2020-10-01
  • 2021-02-19
  • 2013-04-09
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2022-08-16
相关资源
最近更新 更多