如何在dev/production阶段分离"container"资源限制?

How to seperate "container" resource limit in dev/production phase?

我有两个开发阶段,devprod。它可以区分为 .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 命令。

如果你不是掌舵人,你也可以看看

  1. 自定义

使用 kustomize,您可以创建覆盖部署中某些值的覆盖。例如,您将拥有一个包含开发资源的部署 yaml 和一个定义不同值的产品覆盖层。它是 kubectl 的一部分,因此您不需要额外的工具。 Kustomize website

  1. 地形

使用 Terraform,您可以创建描述您的部署的模块,其中包含用作占位符的变量。根据环境,您可以将不同的值注入该变量,并通过此配置您的部署。它更类似于 helm 但更具可读性。 Terraform and Kubernetes

总的来说,它始终是相同的主体,与工具无关。您创建 Kubernetes 资源并为您的环境设置值,从而减少重复并简化设置过程。