我正在评估Kustomize作为我的项目的模板解决方案。我想要一个选项来替换特定的键值对。
ports:
- containerPort: 8081
resources:
limits:
cpu: $CPU_LIMIT
memory: $MEMORY_LIMIT
requests:
cpu: $CPU_REQUESTS
memory: $MEMORY_REQUESTS在上面的例子中,我想用一个配置驱动的值替换CPU_LIMIT。我有什么选择去做这件事呢?
发布于 2021-05-15 06:16:16
Kustomize不像模板引擎那样进行直接变量替换。但是,有一些解决方案取决于您需要更改哪些属性。
通常,部署、状态集、守护集、pod、作业等属性中的变量允许您使用由configmap驱动的变量,因此您不必在编译时使用变量。但是,在控制资源限制和请求等值时,这是行不通的,因为在挂载configmap之前将对这些值进行处理。
Kustomize不是为模板引擎而设计的,它是一种纯粹声明性的配置管理方法,它包括为覆盖(重写)和引用资源使用补丁的能力,以允许您干燥(不要重复),这在您的配置支持多个Kubernetes集群时特别有用。
如果你想的话,也许可以考虑一下修补是否能满足你的需要。Kustomize可以通过几种不同的方式修补一个文件。如果您需要更改单个属性,则可以使用patchesJSON6902,尽管当您必须在部署中更改大量值时,这样一次只更改一个值是很麻烦的,而是使用类似于patchesStrategicMerge的方法。
考虑以下使用修补程序(覆盖)的方式:
.
├── base
│ └── main
│ ├── kustomization.yaml
│ └── resource.yaml
└── cluster
├── kustomization.yaml
└── pod_overlay.yamlbase/main/resource.yaml含量
---
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: 8Gicluster/pod_overlay.yaml含量
---
apiVersion: v1
kind: Pod
metadata:
name: site
spec:
containers:
- name: front-end
resources:
requests:
cpu: 200m
memory: 8Gi
limits:
cpu: 400m
memory: 16Gi注意,我们只包括选择器(kind、metadata.name、spec.containers[0].name)和我们想要替换的值,在本例中是资源请求和限制。您不必复制整个资源才能应用修补程序。
现在要应用带有kustomize的修补程序,cluster/kustomization.yaml的内容
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base/main
patchesStrategicMerge:
- pod_overlay.yaml如果您真的需要使用模板功能,需要考虑的另一个选项是使用Helm。
掌舵是您可能需要考虑的一个更健壮的模板引擎,您可以使用Helm的组合用于模板化和用于资源管理的Kustomize、用于特定配置的修补程序和覆盖。
https://stackoverflow.com/questions/67371126
复制相似问题