在Kubernetes Init容器中为Kubernetes主容器创建环境变量

vuz*_*uza 6 environment-variables docker kubernetes

我使用Kubernetes Init容器来配置应用程序的数据库。完成此操作后,我想通过环境变量将数据库的凭据提供给主容器。

如何将其归档?

我不想在Init容器中创建Kubernetes Secret,因为我不想在其中保存凭据!

Ant*_*nko 5

我看到几种实现您想要的方法:

  1. 在我看来,最好的方法是使用Kubernetes Secret。@Nebril已经在评论中提供了这个想法。例如,您可以通过Init Container生成它,并通过PreStop挂钩将其删除。但是,您不想走那条路。

  2. 您可以使用将由InitConatainer和您的主容器使用的共享卷。InitContainer将db_cred.env在您可以挂载的卷中生成环境变量文件,例如,将其安装到/env路径。之后,您可以通过修改commandPod规范中的容器来加载它,并将命令添加到source /env/db_cred.env将启动您的应用程序的主脚本之前。@ user2612030已经给您这个想法。

  3. 另一个替代方法可以是Hashicorp的Vault,您可以将其用作所有凭据的存储。

  4. 您可以使用一些自定义解决方案从Kubernetes应用程序直接读写Etcd。这是一个库示例-k8s-kv

但是无论如何,在Kubernetes中存储凭证的最好和最合适的方法是Secrets。它比几乎其他任何方式都更安全,更容易。