如何将 helm 图表作为依赖项添加到我的图表中,但为它们提供自定义 values.yml?

How to add helm charts as dependencies to my chart, but provide them with custom values.yml?

我目前正在为我的全栈应用程序创建一个 helm chart,我想为它安装一个 nats helm chart 作为依赖项。我知道我可以将它添加为 Charts.yml 文件中的依赖项,但是如何为 nats 图表提供 Values.yml 以覆盖默认的 nats 图表值?我想要的是,当我为我的应用程序安装 helm 时,它还会安装 nats 依赖项,但使用自定义 values.yml.

chart.yml依赖部分

dependencies:
- name: nats
  repository: "https://nats-io.github.io/k8s/helm/charts"
  version: "0.11.0"

那我运行helm dependency upgrade。这会在我的子图表下创建一个 .tgz,如下所示

我想覆盖 nats 图表中存在的默认值 values.yml。我尝试将以下内容添加到父级 values.yml 但它不起作用(取自 https://docs.nats.io/running-a-nats-service/introduction/running/nats-kubernetes/helm-charts#clustering

nats:
  cluster:
    enabled: true
    replicas: 5

    tls:
      secret:
        name: nats-server-tls
      ca: "ca.crt"
      cert: "tls.crt"
      key: "tls.key"

我需要解压图表才能使用吗?

这记录在 Helm website

覆盖父图表中的值

所以在您的顶级图表 values.yaml 中,使用这样的结构:

mysubchart:  # this is dependent sub-chart
  subchart-value-key: .... # this is key in subchart's values.yaml

更新

你的情况

nats:
  cluster:
    enabled: true
    replicas: 5

如果我这样做 helm template .,渲染的 statefullset 似乎正确地反映了值:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: RELEASE-NAME-nats
  namespace: "default"
  labels:
    helm.sh/chart: nats-0.11.0
    
    app.kubernetes.io/name: nats
    app.kubernetes.io/instance: RELEASE-NAME
    app.kubernetes.io/version: "2.6.5"
    app.kubernetes.io/managed-by: Helm
spec:
  selector:
    matchLabels:
      
      app.kubernetes.io/name: nats
      app.kubernetes.io/instance: RELEASE-NAME
  replicas: 5  # This value has been taken from values.yaml

那么到底是什么不起作用?