專案有這樣的結構,我試圖理解:
charts/
spark-0.0.1-100.tgz
templates/
Chart.yaml
values.yaml
圖表.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
圖表/火花/values.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的?
來自 root 的值是否values.yaml被替換為來自 的值charts/spark/values.yaml?
先感謝您。
uj5u.com熱心網友回復:
問題是,values.yaml 和 charts/spark/values.yaml 中的值是如何對應的?
簡短的版本是它們彼此之間幾乎沒有任何關系,它們只是各自圖表使用的默認值。中等版本是,如果選擇,外部圖表可以取代從屬圖表中的值,但最終用戶在該討論中擁有最終決定權,因為戰勝了默認值(與 的用法相同,但更容易討論,因為不必深入研究那個DSL)helm --values--set--values--set
子圖表不知道父圖表的默認值。父圖表不必知道子圖表的值,并且不能 - 本身 - 參考子圖表的默認值
根 values.yaml 中的值是否被charts/spark/values.yaml 中的值替換?
在大多數情況下,不,它們是完全獨立的命名空間。但是,正如我們在上面看到的,對于串列- name:中的每個鍵,dependencies:父圖表的 values.yaml 中的那些頂級鍵變得特別,因為它覆寫了從屬圖表默認值之上的值(您在 ; 的示例中{ spark: { path: "/opt/spark" } }看到頂級spark:鍵與串列- name:中的匹配dependencies:)
這有點像“鴨子打字”,因為頂級鍵可以自由使用任何隨機結構,而子圖表將使用它知道的結構。例如:
# values.yaml
spark:
path: /opt/spark
value-of-pi: 3.1415
在頂部圖表的 values.yaml 中是完全合法的,即使子 spark 圖表只會注意到,因為它的模板{ spark: { path: "" } }中沒有任何{{ .Values.value-of-pi }}
但是,再次為清楚起見:頂級 values.yaml,即使它包含spark: { path: /alpha }可以被用戶取代,并且當該圖表模板化時,--values <(echo '{spark: {path: /beta } }')生成的 spark install 將具有path: /beta
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/520326.html
