CSU*_*NNY 8 templating amazon-web-services kustomize
我正在评估 Kustomize 作为我的项目的模板解决方案。我想要一个选项来替换特定的键值对。
ports:
- containerPort: 8081
resources:
limits:
cpu: $CPU_LIMIT
memory: $MEMORY_LIMIT
requests:
cpu: $CPU_REQUESTS
memory: $MEMORY_REQUESTS
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我想用配置驱动的值替换 CPU_LIMIT。我可以通过哪些选项来使用 Kustomize 执行此操作?
Hig*_*ife 15
Kustomize 不像模板引擎那样直接进行变量替换。但有一些解决方案取决于您需要变量化的属性。
\n通常部署、statefulsets、daemonset、pod、job 等中的变量,属性允许您使用由 configmap 支持的变量,因此您不一定必须在编译时使用变量。但是,当控制资源限制和请求等值时,这不起作用,因为这些值将在安装配置映射之前进行处理。
\nKustomize 并非设计为模板引擎,它被设计为一种纯粹的声明式配置管理方法,这包括使用补丁进行覆盖(覆盖)和参考资源的能力,以允许您 DRY(不要重复一下),当您的配置支持多个 Kubernetes 集群时,这特别有用。
\n对于 Kustomize,也许可以考虑修补是否可以满足您的需求。Kustomize 可以通过多种不同的方式修补文件。如果您需要更改单个属性,您可以使用 patchJSON6902 ,尽管当您必须更改部署中的大量值时,以这种方式一次更改一个属性很麻烦,而是使用诸如patchStrategicMerge之类的东西
\n考虑以下使用补丁(覆盖)的方法:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resource.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 cluster\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pod_overlay.yaml\n
Run Code Online (Sandbox Code Playgroud)\n内容base/main/resource.yaml
:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 resource.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 cluster\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pod_overlay.yaml\n
Run Code Online (Sandbox Code Playgroud)\n内容cluster/pod_overlay.yaml
:
---\napiVersion: v1\nkind: Pod\nmetadata:\n name: site\n labels:\n app: web\nspec:\n containers:\n - name: front-end\n image: nginx\n ports:\n - containerPort: 8081\n resources:\n requests:\n cpu: 100m\n memory: 4Gi\n limits:\n cpu: 200m\n memory: 8Gi\n
Run Code Online (Sandbox Code Playgroud)\n请注意,我们只包含选择器 ( kind
、metadata.name
、spec.containers[0].name
) 和我们想要替换的值,在本例中是资源请求和限制。您不必复制整个资源即可应用补丁。
现在使用 kustomize 应用补丁,内容如下cluster/kustomization.yaml
:
---\napiVersion: v1\nkind: Pod\nmetadata:\n name: site\nspec:\n containers:\n - name: front-end\n resources:\n requests:\n cpu: 200m\n memory: 8Gi\n limits:\n cpu: 400m\n memory: 16Gi\n
Run Code Online (Sandbox Code Playgroud)\n如果您确实需要模板功能,可以考虑的另一个选择是使用 Helm。
\nHelm是您可能需要考虑的更强大的模板引擎,您可以结合使用 Helm 进行模板化和 Kustomize 进行资源管理、用于特定配置的补丁和覆盖。
\n 归档时间: |
|
查看次数: |
23313 次 |
最近记录: |