如何在dev/production阶段分离"container"资源限制?
How to seperate "container" resource limit in dev/production phase?
我有两个开发阶段,dev
和 prod
。它可以区分为 .Values.profile
在开发中,低于资源限制就足够了。
cpu: 4
memory: 4Gi
ephemeral-storage: 4Gi
但是,在使用 prod
阶段时,我必须如下增加它。
cpu: 8
memory: 16Gi
ephemeral-storage: 16Gi
我尝试按如下方式编写 deployment.yaml
,并且有效。
name : my-app
...
resources:
limits:
{{ if (eq .Values.profile "dev")}}
cpu: 4
memory: 4Gi
ephemeral-storage: 4Gi
{{ end }}
{{ if (eq .Values.profile "prod")}}
cpu: 8
memory: 16Gi
ephemeral-storage: 16Gi
{{end}}
但是,我想知道在两个阶段之间分离容器资源的最佳做法是什么。
谢谢!
为每个环境创建单独的 values.yaml 文件。
例如。 values_dev.yaml,values_prod.yaml。
将环境特定值放入相应的 yaml 中。
根据完成部署的环境,将相应的 values.yaml 文件作为参数传递给 helm install 命令。
如果你不是掌舵人,你也可以看看
- 自定义
使用 kustomize,您可以创建覆盖部署中某些值的覆盖。例如,您将拥有一个包含开发资源的部署 yaml 和一个定义不同值的产品覆盖层。它是 kubectl 的一部分,因此您不需要额外的工具。 Kustomize website
- 地形
使用 Terraform,您可以创建描述您的部署的模块,其中包含用作占位符的变量。根据环境,您可以将不同的值注入该变量,并通过此配置您的部署。它更类似于 helm 但更具可读性。 Terraform and Kubernetes
总的来说,它始终是相同的主体,与工具无关。您创建 Kubernetes 资源并为您的环境设置值,从而减少重复并简化设置过程。
我有两个开发阶段,dev
和 prod
。它可以区分为 .Values.profile
在开发中,低于资源限制就足够了。
cpu: 4
memory: 4Gi
ephemeral-storage: 4Gi
但是,在使用 prod
阶段时,我必须如下增加它。
cpu: 8
memory: 16Gi
ephemeral-storage: 16Gi
我尝试按如下方式编写 deployment.yaml
,并且有效。
name : my-app
...
resources:
limits:
{{ if (eq .Values.profile "dev")}}
cpu: 4
memory: 4Gi
ephemeral-storage: 4Gi
{{ end }}
{{ if (eq .Values.profile "prod")}}
cpu: 8
memory: 16Gi
ephemeral-storage: 16Gi
{{end}}
但是,我想知道在两个阶段之间分离容器资源的最佳做法是什么。
谢谢!
为每个环境创建单独的 values.yaml 文件。 例如。 values_dev.yaml,values_prod.yaml。 将环境特定值放入相应的 yaml 中。 根据完成部署的环境,将相应的 values.yaml 文件作为参数传递给 helm install 命令。
如果你不是掌舵人,你也可以看看
- 自定义
使用 kustomize,您可以创建覆盖部署中某些值的覆盖。例如,您将拥有一个包含开发资源的部署 yaml 和一个定义不同值的产品覆盖层。它是 kubectl 的一部分,因此您不需要额外的工具。 Kustomize website
- 地形
使用 Terraform,您可以创建描述您的部署的模块,其中包含用作占位符的变量。根据环境,您可以将不同的值注入该变量,并通过此配置您的部署。它更类似于 helm 但更具可读性。 Terraform and Kubernetes
总的来说,它始终是相同的主体,与工具无关。您创建 Kubernetes 资源并为您的环境设置值,从而减少重复并简化设置过程。