有这样结构的项目,我在努力理解:
charts/
spark-0.0.1-100.tgz
templates/
Chart.yaml
values.yaml
图表名称
appVersion: 0.1.0
dependencies:
- name: spark
version: "0.0.1-100"
repository: https://helm.<corporation>.com/<project>
condition: spark.enabled
values.yaml(为简单起见,省略了某些值)
spark:
enabled: true
serviceAccount:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::<account-id>:role/spark-service-account
image:
tag: "3.3.0-dev-28"
extraEnv:
- name: AWS_STS_REGIONAL_ENDPOINTS
value: regional
Master:
Requests:
Cpu: ...
Memory: ...
Disk: ...
Limits:
Cpu: ...
Memory: ...
Disk: ...
Worker:
Replicas: 3
Requests:
Cpu: ...
Memory: ...
Disk: ...
Limits:
Cpu: ...
Memory: ...
Disk: ...
zookeeper:
host: "project-zookeeper"
port: 2181
然后,我将charts/spark-0.0.1-100.tgz
解压缩到文件夹charts/spark/
中:
charts/
spark/
templates/
Chart.yaml
values.yaml
图表/Spark/价值.yaml:
global:
aci:
sdrAppname: spark
image:
repository: "docker.<corporation>.com/<project>/spark"
tag: "1.0.1"
spark:
path: "/opt/spark"
user: 1000
group: 1000
config: |
SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=21600"
Master:
Name: master
Replicas: 1
Component: "spark-core"
Requests:
Cpu: ...
Memory: ...
Disk: ...
Limits:
Cpu: ...
Memory: ...
Disk: ...
ServicePort: <port>
ContainerPort: <port>
RestEnabled: "true"
RestPort: <port>
ServiceType: LoadBalancer
WebUi:
Name: webui
ServicePort: <port>
ContainerPort: <port>
问题是,values.yaml
和charts/spark/values.yaml
中的值是如何对应的?
根values.yaml
中的值是否替换为charts/spark/values.yaml
中的值?
先谢谢你了。
1条答案
按热度按时间cedebl8k1#
问题是,values.yaml和charts/spark/values.yaml中的值是如何对应的?
简而言之,它们 * 几乎 * 彼此没有任何关系,它们只是各自图表使用的默认值。中版本是,外部图表可以取代下级图表中的值,如果它 * 选择 * 这样做的话,但最终用户在讨论中拥有最终发言权,因为
helm --values
战胜了默认值(--set
用法也是如此,但--values
更容易讨论,因为不必深入研究--set
DSL)子图表不知道父图表的默认值。父图表不 * 必须 * 知道子图表的值,并且不能--本身--引用子图表的默认值
根values.yaml中的值是否替换为charts/spark/values.yaml中的值?
但是,正如我们在上面看到的,对于
dependencies:
列表中的每个- name:
键,父图表values.yaml中的顶级键变得很特殊,因为它将值覆盖在下级图表的默认值之上(在{ spark: { path: "/opt/spark" } }
的示例中可以看到;该顶级spark:
密钥与dependencies:
列表中的- name:
匹配)这有点像“鸭子打字”,因为顶级键可以自由使用任何随机结构,而子图表将使用它所知道的结构。例如:
在顶部图表的值.yaml中是完全法律的的,即使子Spark图只会注意到
{ spark: { path: "" } }
,因为它在其模板中没有任何{{ .Values.value-of-pi }}
但是,为了清楚起见:即使顶层值. yam 1包括
spark: { path: /alpha }
,它也可以由用户用--values <(echo '{spark: {path: /beta } }')
代替,并且当该图表被模板化时,所得到的SparkInstall将具有path: /beta
。