首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Kustomize替换特定值

使用Kustomize替换特定值
EN

Stack Overflow用户
提问于 2021-05-03 14:57:41
回答 1查看 10.7K关注 0票数 4

我正在评估Kustomize作为我的项目的模板解决方案。我想要一个选项来替换特定的键值对。

代码语言:javascript
复制
ports:
- containerPort: 8081
resources:
limits:
  cpu: $CPU_LIMIT
  memory: $MEMORY_LIMIT
requests:
  cpu: $CPU_REQUESTS
  memory: $MEMORY_REQUESTS

在上面的例子中,我想用一个配置驱动的值替换CPU_LIMIT。我有什么选择去做这件事呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 06:16:16

Kustomize不像模板引擎那样进行直接变量替换。但是,有一些解决方案取决于您需要更改哪些属性。

通常,部署、状态集、守护集、pod、作业等属性中的变量允许您使用由configmap驱动的变量,因此您不必在编译时使用变量。但是,在控制资源限制和请求等值时,这是行不通的,因为在挂载configmap之前将对这些值进行处理。

Kustomize不是为模板引擎而设计的,它是一种纯粹声明性的配置管理方法,它包括为覆盖(重写)和引用资源使用补丁的能力,以允许您干燥(不要重复),这在您的配置支持多个Kubernetes集群时特别有用。

如果你想的话,也许可以考虑一下修补是否能满足你的需要。Kustomize可以通过几种不同的方式修补一个文件。如果您需要更改单个属性,则可以使用patchesJSON6902,尽管当您必须在部署中更改大量值时,这样一次只更改一个值是很麻烦的,而是使用类似于patchesStrategicMerge的方法。

考虑以下使用修补程序(覆盖)的方式:

代码语言:javascript
复制
.
├── base
│   └── main
│       ├── kustomization.yaml
│       └── resource.yaml
└── cluster
    ├── kustomization.yaml
    └── pod_overlay.yaml

base/main/resource.yaml含量

代码语言:javascript
复制
---
apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 8081
      resources:
        requests:
          cpu: 100m
          memory: 4Gi
        limits:
          cpu: 200m
          memory: 8Gi

cluster/pod_overlay.yaml含量

代码语言:javascript
复制
---
apiVersion: v1
kind: Pod
metadata:
  name: site
spec:
  containers:
    - name: front-end
      resources:
        requests:
          cpu: 200m
          memory: 8Gi
        limits:
          cpu: 400m
          memory: 16Gi

注意,我们只包括选择器(kindmetadata.namespec.containers[0].name)和我们想要替换的值,在本例中是资源请求和限制。您不必复制整个资源才能应用修补程序。

现在要应用带有kustomize的修补程序,cluster/kustomization.yaml的内容

代码语言:javascript
复制
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../base/main

patchesStrategicMerge:
  - pod_overlay.yaml

如果您真的需要使用模板功能,需要考虑的另一个选项是使用Helm。

掌舵是您可能需要考虑的一个更健壮的模板引擎,您可以使用Helm的组合用于模板化和用于资源管理的Kustomize、用于特定配置的修补程序和覆盖。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67371126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档