vuz*_*uza 6 environment-variables docker kubernetes
我使用Kubernetes Init容器来配置应用程序的数据库。完成此操作后,我想通过环境变量将数据库的凭据提供给主容器。
如何将其归档?
我不想在Init容器中创建Kubernetes Secret,因为我不想在其中保存凭据!
我看到几种实现您想要的方法:
在我看来,最好的方法是使用Kubernetes Secret。@Nebril已经在评论中提供了这个想法。例如,您可以通过Init Container生成它,并通过PreStop挂钩将其删除。但是,您不想走那条路。
您可以使用将由InitConatainer和您的主容器使用的共享卷。InitContainer将db_cred.env
在您可以挂载的卷中生成环境变量文件,例如,将其安装到/env
路径。之后,您可以通过修改command
Pod规范中的容器来加载它,并将命令添加到source /env/db_cred.env
将启动您的应用程序的主脚本之前。@ user2612030已经给您这个想法。
另一个替代方法可以是Hashicorp的Vault,您可以将其用作所有凭据的存储。
您可以使用一些自定义解决方案从Kubernetes应用程序直接读写Etcd。这是一个库示例-k8s-kv。
但是无论如何,在Kubernetes中存储凭证的最好和最合适的方法是Secrets。它比几乎其他任何方式都更安全,更容易。