Kubernetes 如何处理ConfigMaps中的机密?

Kubernetes 如何处理ConfigMaps中的机密?,kubernetes,configmap,kubernetes-secrets,Kubernetes,Configmap,Kubernetes Secrets,我想在ConfigMap中使用Secret。这可能吗 示例: 可能需要这样做的一个例子是,如果您想从中编写。在配置中,您必须添加AWS凭据 备选方案: 在集群本身上使用环境变量。我不喜欢这个想法,因为变量仍然以纯文本的形式包含秘密 在设置期间传递密码。如果您使用的是部署工具,则可能会在应用程序部署期间传递机密。这也不是一个好的解决方案,因为您仍在以纯文本形式将机密传递给部署工具。这种方法的一个优点是不会意外地将您的秘密签入git 不,这是不可能的。您应该始终使用敏感数据 默认情况下,机密仅为文件

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

示例:

可能需要这样做的一个例子是,如果您想从中编写。在配置中,您必须添加AWS凭据

备选方案:

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


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

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

默认情况下,机密仅为文件的base64编码内容,因此您应该使用类似于安全的方法来存储敏感数据。

尝试使用kubernetes中的aws凭据

正如您所知,
aws_key_id
aws_sec_key
是可选字段

利用并将其分配给kubernetes节点

然后尝试运行fluentd应用程序,但其内部没有aws凭据

试试看

希望这有帮助

更新:

文章解释了kubernetes使用aws iam的不同方式


许多类似的工具可能会有所帮助。试一试。

你经历过这个吗?谢谢@mchawre。我将对此进行一番了解,@mchawre解决方案的工作原理如下:将机密数据传递给K8s机密,通过env变量公开此数据,然后在configmap中使用它。对吗?不确定这是否可行。在本例中,他没有向configmapYeah传递任何机密数据,但该env将包含Base64编码的数据。你需要对它进行解码才能使用。到目前为止,我认为最好的选择是使用AWS IAM角色,并将该角色分配给kubernetes节点。好的。那么,您将如何解决示例情况呢?与@mchawre提到的完全相同,但正如我所指出的,您的那只是base64 encoded.TL;博士您将得到存储在ENV中的base64编码的AWS凭据。请注意,如果您想要更多的GitOps方法,有相当好的加密机密的工具,因此您可以将它们存储在Git上。我过去曾发布过关于它的文章——请在@FL3SH上查看,文章没有提到我的问题的有效解决方案。它讨论了环境变量、Docker变量和K8s变量。我不想将此敏感数据存储为明文war,因为它被configmap使用,所以我无法将其存储在Secret中。我认为这仅在AWS EC2实例上运行时才可能。看,是的。你的kubernetes跑在哪里。哪一个云提供商?它应该独立于云提供商。请通过此检查,事情会得到澄清。这看起来很有希望。它独立于基础IaaS提供程序工作,对吗?