Kubernetes:Rails 凭据或 ConfigMap / Secret 方式?

Kubernetes: Rails credentials or the ConfigMap / Secret way?

我在 Kubernetes 集群中部署了我的 Rails 6 应用程序,我考虑如何实现我的 ENV 变量。

我经常在 Rails 应用程序中使用 dotenv 和主机上的常规 ENV 变量。但现在看来,我可以省略它们并使用 Rails 凭据。但仅仅因为功能存在并不意味着它必须被使用或必须更好,对吧?

所以我不确定如何解决这个 env/security 难题:

接近ConfigMap

方法证书

我担心的缺点是,当我想更改 ENV var(修复拼写错误、缩放工作人员、切换数据库、凭据...)时,我必须通过很多步骤:制作 git 推送、构建和标记容器并等待部署。 使用 ConfigMap,我只需 kubectl apply 更改即可。

我喜欢Rails“约定优于配置”的方式,所以将变量分散到两种或三种不同的类型对我来说似乎不太实用,但恐怕我不得不这样做。

您不会(仅)使用 ConfigMap,因为那不安全,但您可以使用 Secret 以与您描述的相同的方式保存所有环境变量。真的取决于您喜欢哪种工作流程。不管你怎么做,你在某处都有一些 Kubernetes Secrets 对象,只是它的范围问题。所以你 100% 需要有一个工作流程来处理这方面的事情。但是,如果您更喜欢通过 Rails 工作流程进行日常机密编辑,这样您就不需要过多地接触 Kubernetes 方面,那很好。

我个人认为接触机密数据的系统越少越好,即使这意味着 Rails 开发人员需要学习一种新工具。