使用全局变量时,舵子图是否依赖于父图?

时间:2019-01-29 20:27:38

标签: kubernetes-helm

documentation(掌舵子图和全局变量)中,他们列出了4个细节,我想重点关注其中2个

  1. 子图表被视为“独立”,这意味着子图表永远不能显式依赖其父图表。
  2. 因此,子图无法访问其父级的值。
  3. 父图表可以覆盖子图表的值。
  4. Helm具有全局值的概念,所有图表都可以访问。

从示例看来,1和4是矛盾的。如果我在父图表中创建一个全局变量,然后在子图表中引用它,这会不会在父图表和子图表之间创建依赖关系?

1 个答案:

答案 0 :(得分:1)

子图表仍将被视为“独立”。使用全局值将在父图表的values.yaml上创建一个依赖关系(而不是对父图表本身的显式依赖)。

要解决此问题,在安装各个子图表时,必须显式传递父值(通过--values标志)。例如:

假定以下结构:

$ tree parent/
parent/
├── charts
│   └── child
│       ├── Chart.yaml
│       └── templates
│           └── configmap.yaml
├── Chart.yaml
└── values.yaml

要单独安装child子图表,您必须使用:

helm install ./parent/charts/child/ --values ./parent/values.yaml

掌舵项目中进行了公开讨论(#4767),以改善这一情况。