与大多数应用程序一样,我们有三种不同的运行环境:
这些都是基本上通过ENV变量配置的。
如何在我们的环境中运行所有服务/ pod /容器?通过标签?或命名空间?
答案 0 :(得分:2)
我不确定是否有官方最佳做法,但我总是倾向于使用命名空间来分隔环境,原因如下:
它允许您在所有三种环境中为部署,服务等使用完全相同的YAML文件。要切换环境,您只需将--namespace=${YOUR_NS}
添加到kubectl命令中,或者甚至只为kubectl配置中的每个命名空间指定一个上下文,因此您可以说kubectl config use-context production
之类的内容。查看docs!
您可以使用Resource Quotas限制每个环境应该可用的计算资源量。
您可以使用RBAC来控制对环境的访问。例如,您只允许一小部分人对生产环境进行更改,但让所有开发人员在开发环境中做任何他们想做的事情。
例如,在每个命名空间内,您可以使用标签将应用程序构建到不同的层中。这种配置在每个环境中都是相同的。