我正在尝试从使用 helm 的本地 ArgoCD 清单生成 kubernetes 清单。我使用脚本来解析值,然后
helm template
生成结果模板。但我无法根据优先级将不同的值转换为单个模板
ArgoCD 的文档描述了将值注入舵图的 3 种不同方法。即
valueFiles
、直列 values
和舵 parameters
。
例如,如果我有包含所有三个的 argo 应用程序清单:
apiVersion: argoproj.io/v1alpha1
kind: Application
...
source:
helm:
parameters:
- name: "param1"
value: value1
values: |
param1: value2
valuesFile:
- values-file-1.yaml
- values-file-2.yaml
假设这是以下内容: 值-文件-1.yaml
param1: value4
值文件-2.yaml
param1: value5
当这个清单部署在 argocd 上时,
param1
最终会是什么?
所有值中的优先级是什么?
我尝试查看文档但找不到它
我花了几个小时用 helm 部署 Argocd 并生成清单。
值注入具有以下优先顺序
所以值胜过 valueFiles,参数胜过两者。
然后出于好奇,我尝试了每种注入类型,本质上它们通过从上到下选择最后一个值来解决冲突。
例如如果我们只有
values-file-1.yaml
并且它包含
param1: value1
param1: value3000
我们得到param1=value3000
如果我们有
valuesFile:
- values-file-2.yaml
- values-file-1.yaml
最后一个值文件,即
values-file-1.yaml
将胜过第一个
如果我们有
parameters:
- name: "param1"
value: value2
- name: "param1"
value: value1
结果将是 param1=value1
最后如果我们有
values: |
param1: value2
param1: value5
结果将是 param1=value5
这对某些人来说可能是显而易见的,但对我来说却不是
值注入具有以下优先顺序
lowest -> ./values.yaml
-> valueFiles
-> values
-> valuesObject
highest -> parameters