1 回答

TA貢獻1851條經驗 獲得超4個贊
這可以通過全局值來解決,全局值允許父圖表中的值覆蓋(或提供未指定的)子子圖表中的值。
來自關于子圖和全局值的 Helm 文檔:
子圖被視為“獨立”,這意味著子圖永遠不能顯式依賴于其父圖。
因此,子圖無法訪問其父圖的值。
父圖表可以覆蓋子圖表的值。
Helm 有一個全局值的概念,所有圖表都可以訪問它。
(起初我并沒有想到要搜索“helm subchart”,但當我在互聯網上搜索該術語時,這是第一個或第二個結果)
這是解決您的問題的最小示例:
目錄結構
helm
├── Chart.yaml
├── charts
│? ?└── chart_a
│? ? ? ?├── Chart.yaml
│? ? ? ?└── templates
│? ? ? ? ? ?└── configMap.yml
├── templates
│? ?└── _helpers.tpl
└── values.yaml
注意:我添加了Chart.yaml文件以使其實際工作,重命名values.yml為values.yaml,以便它默認工作而無需額外的標志,并刪除requirements.yml,因為沒有必要重現問題和解決方案。
values.yaml
global:
? ldap:
? ? enabled: true
? ? type: opendj
? ? extraHosts:
? ? - host: opendj
? ? ? port: 3434
? ldapType: xxx
? ldapPort: 123
關鍵是將你擁有的東西嵌套在一個特殊的global鍵下。請注意,我還添加了ldapType和 ,ldapPort因為它們在您的 中_helpers.tpl,并且我修復了您在 下的 YAML 結構extraHosts。host之前的內容實際上并不代表帶有和鍵的地圖列表port。如果沒有此修復,該helm命令不會失敗,但也不會輸出您想要的內容。
結果
$ helm template .
---
# Source: helm/charts/chart_a/templates/configMap.yml
apiVersion: v1
kind: ConfigMap
metadata:
? name: cm
data:
? GLUU_LDAP_URL: release-name-xxx:123,opendj:3434
- 1 回答
- 0 關注
- 196 瀏覽
添加回答
舉報