Closed1

helmのsubchartで任意の値(values.yaml)を上書きしたい

harrythecodeharrythecode

困ったこと

HelmはK8sのリソースを1つずつまとめ上げなくてもコマンド1つで全体をいい感じにまとめてくれるツールなのですが、時々大きなHelm Chartを使っていると「Subchart」と言うものが出現してきます。

例えば、prometheus-community/helm-charts:

dependencies:
  - name: kube-state-metrics
    version: "4.20.*"
    repository: https://prometheus-community.github.io/helm-charts
    condition: kubeStateMetrics.enabled

これは親Helm Chart(この場合はprometheus-community/kube-prometheus-stack)をインストールする際にdependenciesで定義された通称subchartもインストールされます。

更にこのkube-state-metricsのデフォルトの挙動が変化しており、全てのLabels/Annotationsがメトリクスに反映されない仕様(2022年10月現在)です。

v2.0.0 系以降から kube_<オブジェクト名>_labels においてデフォルトでラベル名の出力がされないようになりました。

https://qiita.com/yosshi_/items/566862bbf8e04b162f8c

kube-state-metricsのHelm Chart上には、該当の設定項目があるのですが、親Chart上にはありません。

この場合、どのような方法で親ChartからSubchartのvalues.yamlを変更すれば良いかにつまづきました。

解決策

結論、親チャートのvalues.yamlで以下のように定義することが可能です。

kube-state-metrics:
  metricLabelsAllowlist:
    - namespaces=[k8s-label-1,k8s-label-n]

これはHelmのコマンドがkube-state-metricsのSubchart上のvalues.yamlを直接上書きする仕様になっている為です。以下はStackoverflowでの説明です。

https://stackoverflow.com/questions/55748639/set-value-in-dependency-of-helm-chart

このスクラップは2022/10/14にクローズされました