Helm: 名前にダッシュを含むサブチャヌトの倀ぞのアクセス

䜜成日 2017幎03月26日  Â·  44コメント  Â·  ゜ヌス: helm/helm

ドキュメントに基づいお、ダッシュでグラフに名前を付ける芏則がありたす。
ただし、同時にこのドキュメントに基づくず、ダッシュ付きの倀は䜿甚しないでください。

したがっお、 gitlabずgitlab-runner 2぀の埓属グラフがあるずしたす。
サブチャヌトの倀を構成しおアクセスするにはどうすればよいですか

docs questiosupport

最も参考になるコメント

indexテンプレヌト関数を䜿甚しお、名前に「-」が含たれる倀にアクセスしたす {{ index .Values "gitlab-runner" }} 。

そしお、おそらく芏則を倉曎する必芁がありたす。 そのため、このようなこずに察凊するのは面倒です。 私はその問題を自分自身に割り圓おお、慣習を倉えに行きたした。

党おのコメント44件

これは良い質問です。 私はこれを行うのに問題はありたせんでしたが、それは矛盟です。 @technosophosこれらの1぀を他ず䞀臎するように倉曎する必芁がありたすか

珟圚、このようなサブチャヌトの倀にアクセスする際に問題が発生しおいたす。

次のブロックで゚ラヌが発生したす。

{{ if .Values.gitlab-runner.enabled }}

゚ラヌアップグレヌドに倱敗したした "gitlab / templates / deployment.yaml"の解析゚ラヌテンプレヌトgitlab / templates / deployment。 yaml217 䞍正な文字U +

indexテンプレヌト関数を䜿甚しお、名前に「-」が含たれる倀にアクセスしたす {{ index .Values "gitlab-runner" }} 。

そしお、おそらく芏則を倉曎する必芁がありたす。 そのため、このようなこずに察凊するのは面倒です。 私はその問題を自分自身に割り圓おお、慣習を倉えに行きたした。

おかげで、それはこのように機胜したす。

@prydoniusチャヌトにダッシュで名前を付けるこずを最初に決定した理由を芚えおいたすか 私は叀いドキュメントを調べおいたしたが、これは最初から蚭定した前䟋です。 倉曎するのはあたり良い考えではないのではないかず思いたす。

むンデックスがどのように機胜するかを理解しようずしおいたす。
以䞋からservicename倀にアクセスするにはどうすればよいですか

mysub-chart:
  servicename: mysubchart-service


芋぀かった解決策 {{ index .Values "mysub-chart" "servicename" }}

withやrangeブロックなど、制埡構造でダッシュ名をどのように䜿甚したすか

{{- range $key, $value := .Values.my-service-name.deployment.annotations }}

@spearsem䞊蚘のコメントは、その問題に察する適切な回避策を持っおいるず思いたす。 私はこれがうたくいくはずだず思いたす

{{- range $key, $value := index .Values "my-service-name" "deployment" "annotations" }}

それ以倖の堎合は、アノテヌションを指す倉数をむンスタンス化しお、範囲内たたはブロックで䜿甚できるず思いたす。 䟋えば

{{ $annotations := index .Values "my-service-name" "deployment" "annotations" }}
{{- range $key, $value := $annotations }}

@bacongobblerこれはwithたすか 別の関数評䟡の結果を「コンテキスト」ずしお利甚できるかどうかを知るために、 withの実装に粟通しおいたせん。

text / templateは、どの構造でも機胜するはずだず蚀っおいるように芋えるので、そうだず思いたす。

パむプラむンの倀が空の堎合、出力は生成されたせん。 それ以倖の堎合、ドットはパむプラむンの倀に蚭定され、T1が実行されたす。

倉数メ゜ッドは私にはうたくいかないようです。 。 ゚ラヌは1行埌に発生したす。

Istioポヌトの呜名芏則にもダッシュが必芁ですポッド仕様の芁件を参照。

CLIで倉数を蚭定するための回避策はありたすか

helm install --set one-two.three=10 releasename ./chartname

これは本圓の矛盟であり、私にも問題がありたす。
1぀の解決策は、requirements.yamlで゚むリアスを䜿甚しお、サブチャヌト名が-のないものに倉曎されるようにするこずですが、これは確かに面倒です。

私もこの問題を抱えおいたす。

Helmが代わりにキャメルケヌス化名を䜿甚しお芪チャヌトからsubchart-name倀を枡すずいいず思いたす䟋 subchartName 。 これにより、チャヌト名の芏則ず倉数名の芏則が盞互に互換性を持぀ようになり、構文の問題が䞊から回避されたす。

これはテンプレヌトではたったく機胜したせん。このサンプルコヌドは次のずおりです。
{{index .Values "first-key" "secondkey"}}
NOTES.txtで機胜したすが、アップグレヌドコマンドを発行するずきは_helpers.tplで機胜したす。
_helpers。 tpl24 3で「test.template」を実行

クラむアントversion.Version {SemVer "v2.6.2"、GitCommit "be3ae4ea91b2960be98c07e8f73754e67e87963c"、GitTreeState "clean"}
サヌバヌversion.Version {SemVer "v2.7.0"、GitCommit "08c1144f5eb3e3b636d9775617287cc26e53dba4"、GitTreeState "clean"}

䞡方のバヌゞョンが同じでも同じこず
クラむアントversion.Version {SemVer "v2.6.2"、GitCommit "be3ae4ea91b2960be98c07e8f73754e67e87963c"、GitTreeState "clean"}
サヌバヌversion.Version {SemVer "v2.6.2"、GitCommit "be3ae4ea91b2960be98c07e8f73754e67e87963c"、GitTreeState "clean"}

kubectlは
クラむアントバヌゞョンversion.Info {Major "1"、Minor "9"、GitVersion "v1.9.2"、GitCommit "5fa2db2bd46ac79e5e00a4e6ed24191080aa463b"、GitTreeState "clean"、BuildDate "2018-01-18T1009 24Z "、GoVersion" go1.9.2 "、コンパむラ" gc "、プラットフォヌム" darwin / amd64 "}
サヌバヌバヌゞョンversion.Info {Major "1"、Minor "8"、GitVersion "v1.8.4"、GitCommit "9befc2b8928a9426501d3bf62f72849d5cbcd5a3"、GitTreeState "clean"、BuildDate "2017-11-20T0517 43Z "、GoVersion" go1.8.3 "、コンパむラ" gc "、プラットフォヌム" linux / amd64 "}

@svidrascu 、その特定のサブチャヌトのChart.yamlファむルで定矩された倀があるこずを確認したす。 テンプレヌト゚ンゞンが倉数を芋぀けられないようです

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間操䜜がないず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

叀くなった問題は、30日間操䜜がないず腐敗したす。
/remove-lifecycle rottenしお、問題を新芏ずしおマヌクしたす。
腐った問題は、さらに30日間操䜜がないず終了したす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ラむフサむクル腐った
/ remove-lifecyclestale

https://github.com/helm/helm/pull/4379経由でクロヌズ

参考たでに、4379の修正は4400で行われたした。

これはずおもごみです-ダッシュ、アンダヌスコア、倧文字はありたせん。 2぀たたはそれ以䞊の類䌌コンポヌネントの耇雑なチャヌト名をどのように定矩する必芁がありたすか 1぀の単玔な.を" "はひどいです:(

@ ksemaev 4400を参照しおください。 前述のように、ナヌザヌにはパッケヌゞ名にダッシュを䜿甚しおもらいたいのですが、テンプレヌトシステムの特定の制限に関する「萜ずし穎」に泚意する必芁がありたす。

おっず、閉じるボタンを倪く指で觊れた笑い

CLIで倉数を蚭定するための回避策はありたすか

helm install --set one-two.three=10 releasename ./chartname

誰かが疑問に思っおいるなら、これはヘルムずティラヌv2.14.2時点で機胜しおいるようです。

$ helm install --set one-two.three=10 --name foo stable/mariadb
$ helm get values foo
# one-two:
#  three: 10

倀にダッシュを蚱可しない堎合、チャヌト名にダッシュを蚱可するこずは実際には意味がありたせん。 その理由は、倀がチャヌト名である堎合があるためです。 たずえば、子の倀をオヌバヌラむドするために芪チャヌトvalues.yamlファむルで指定したいsub-chart.valueがありたす。 芪テンプレヌトでも同じ倀を䜿甚したいず思いたす。

他の人のために、あなたが必芁なら
{{-if and value1 value2 }}次に、これを行う必芁がありたす。

{{- if .Values.loki.enabled }}
{{- if index .Values "prometheus-operator" "grafana" "enabled" }}
{{- if index .Values "prometheus-operator" "grafana" "sidecar" "datasources" "enabled" }}

少し違う質問がありたす。 ランダムな䟋を芋おみたしょう-
{{-if index .Values "prometheus-operator" "grafana" "sidecar" "datasources" "enabled"}}

私の質問は、「/ prometheus-operator」がわからない堎合、むンデックスを䜿甚しおこのキヌを参照するにはどうすればよいかずいうこずです。 基本的に、.Valuesの最初のキヌを取埗したいず思いたすキヌは動的であり、私の堎合は䞀定ではないため、むンデックスのキヌでこのマップを参照する方法を教えおください。誰か教えおください。

私は/ "nithin-kumar" /を䜿甚したしたが、この問題は "-"の問題であり、゚スケヌプ文字を詊したした

toYamlを䜿甚するずきに誰もが解決策を持っおいたすか
それは倱敗したす
<toYaml>: wrong number of args for toYaml: want 1 got 5
index関数を䜿甚せずにouを䜿甚したす。

U + 002Dの修正 '-'

@ mods / maintainers

これに関する曎新はありたすか

どんなアップデヌト

こんにちは、この問題は少し前に開かれたしたが、それでも問題は発生したす。

ヘルムチャヌトのガむドラむンでは、チャヌトにはダッシュで名前を付ける必芁があるず蚘茉されおいたすhttps://helm.sh/docs/chart_best_practices/conventions/
しかし、チャヌト名をミラヌリングするためにダッシュをvalues.yamlに入れようずするず、これらのダッシュ倀を次のように䜿甚しようずするず、テンプレヌト䜜成に苊劎したす。

{{ .Values.my-chart.name }}

䞊蚘の投皿を読むず、このようにダッシュを䜿甚したい堎合は、 indexを䜿甚する必芁があるようです。

{{ index .Values "my-chart" "name" }}

それに加えお、 values.yamlキヌはCamelCasedhttps://helm.sh/docs/chart_best_practices/values/である必芁がありたす。

キヌの呜名がHelmテンプレヌトに圱響を䞎えるべきではないず思いたす。

それを正垞化する予定ですか

@bacongobbler 、「修正」されるかどうか、぀たり、ハックやトリックに頌らずにダッシュを䜿甚できるかどうか、たたはこれが決定的な「修正されない、慣れない、フォヌクする、たたは芋぀ける」など他の䜕か」

これは、Goテンプレヌト蚀語の制限です。 倉曎が必芁な堎合は、Goプロゞェクトのアップストリヌムにファむルする必芁がありたす https 

圌らがそれを修正した堎合、私たちはそれをサポヌトしたす。

兞型的なGoogleのやり方「ナヌザヌは通垞間違っおいる」では、これには決定的な「修正しない、慣れない、フォヌクする、たたは䜕か他のものを芋぀ける」が䞎えられおいたすhttps://github.com/golang/go/issues/ 23710。 䞎えられた理由特にhelmナヌスケヌスに぀いお話しおいるは完党に有効だず思いたすが、 go䜜者は本圓に気にしたせん。

https://github.com/golang/go/issues/23710#issuecomment -363488583は、ダッシュの䜿甚を掚奚しない珟圚のアプロヌチたたは「[helm]テンプレヌトパむプラむンを曞き換えおむンデックス関数を自動的に䜿甚する」ずいう2぀の解決策に぀いお蚀及しおいたす。 それは倧きな仕事かもしれないず私は認めたすが、これだけを行うこずができるテンプレヌトプリプロセッサを持぀こずは可胜ではないでしょうか たぶん、これだけを前凊理するために曞くこずができるフックたたは䜕かがありたすか この呚りの䜜業は明らかに可胜ですが、それだけでは少し幌皚なようだgoのために著者ず䟡倀の固定をhelm 。

私は認めたすが、それは倧きな仕事かもしれたせん

ビンゎ。

぀たり、この分野で生掻の質を向䞊させるこずができれば玠晎らしいのですが、珟時点で私たちの頭の䞭で少し優先床が高い分野がいく぀かありたすたずえば、OCIサポヌトの安定化ぞの移行。 そしお、プリプロセッサを曞くこずは間違いなく倧きな仕事です。

貢献に興味のある方は、お気軜にご芧ください

私にずっお、状況を明確にするこずは玠晎らしい第䞀歩です。 次のものがありたす。

  • これはgoテンプレヌト蚀語の制限です
  • go䜜者は珟圚この可胜性を远加する぀もりはhelmナヌザヌはそれに慣れるか、テンプレヌトプリプロセッサを実装する必芁があるず蚀っおいたす。 圌らはしたせん。
  • helm䜜成者は、回避策が比范的簡単であり、テンプレヌトプリプロセッサの実装がほが確実に䞻芁な䜜業であるため、これよりも倚くの優先順䜍が高くなっおいたす。 たた、回避策が比范的簡単であるこずを考えるず、問題が少し修正されるだけなので、近い将来、山の頂䞊に到達するこずはないでしょう。
  • 誰でも芋お、十分な時間ずgo専門知識があれば、 helm䜕かを提䟛できたす go人々は明らかに興味がありたせんが、明らかにそうする必芁がありたすもたらされる限られた実甚的なナヌティリティず远加される可胜性のある耇雑さのために比范的゚レガントである。

みんながそれがかなり正確で公平だず思うなら、私はみんなを煩わせるのをやめたす :-)

これを芋たい人は誰でもHIPを曞くこずを怜蚎すべきだず付け加えたす-https//github.com/helm/community/blob/master/hips/hip-0001.mdを参照しお

そうでなければはい

「[helm]テンプレヌトパむプラむンを曞き換えお、むンデックス関数を自動的に䜿甚する」。 それは倧きな仕事かもしれないず私は認めたすが、これだけを行うこずができるテンプレヌトプリプロセッサを持぀こずは可胜ではないでしょうか

これが実際に䜕を意味するのかは私にはわかりたせんが、Helmが倀マップを䜜成するずきに、ダッシュケヌスのキヌをキャメルケヌスのキヌに倉換する必芁があるずいうこずですか

@prydonius 、私は実際に実装レベルでそれに぀いお考え始めおいたせんでした。 ダッシュはJSONキヌずしお有効であり、有効なYAMLキヌも有効です。したがっお、ナヌザヌの芳点からは、ダッシュがhelmテンプレヌトのキヌずしお機胜しない理由はないず想定されたす。 テンプレヌトはgoテンプレヌトであるため、この仮定は圓おはたりたせん。 䞀郚の倚くのナヌザヌは、 helmのコンテキストでのみgoテンプレヌトに遭遇し、これはかなり恣意的でむラむラするようです。

1぀のアプロヌチは、倀を調べおキャメルケヌスに倉換しおから、テンプレヌトを調べお同じこずを行うこずだず思いたす。 しかし、私は、このためのむンフラストラクチャが、それが䟡倀があるよりもはるかに倚くの負担になる可胜性があるこずに同意したす。 実際には、むントロドキュメントのサむドバヌの説明は次のようになっおいたす。

helmはgoテンプレヌト蚀語を䜿甚するため、通垞の参照メカニズム{{ .Values.mybasekey.my-key }}を䜿甚しお、テンプレヌト内のキヌでダッシュ-を盎接䜿甚するこずはできたせんこれ有効ではない。 これはgoテンプレヌト蚀語の制限であり、 go䜜成者がサポヌトを拒吊しおいるものです。 キヌにダッシュを本圓に䜿甚したい堎合は、 index関数を䜿甚しお、この制限を回避できたす。たずえば、 {{ index .Values.mybasekey "my-key" ]}です。 この回避策は比范的簡単であるため、珟圚、 helm indexがないキヌ名にダッシュを䜿甚するこずをサポヌトする予定はありたせん。 サブチャヌト名もテンプレヌトのキヌになるため、名前にダッシュが含たれるサブチャヌトを䜿甚しお倀を䞊曞きする堎合は、チャヌト名の゚むリアスを指定するか、ここに蚘茉されおいる回避策を䜿甚する必芁がありたす {{ index .Values "my-chart" "name" }} 。

おそらく最良の状況でしょう。 少なくずも私にずっお、むラむラしたのは、なぜそれが機胜しなかったのか、どこに問題があったのか、誰がそれを修正できるのか、誰が修正すべきなのかが明確になっおいないこずでした。 チャヌトのベストプラクティスセクションの珟圚のセクションは、少し誀解を招く可胜性がありたす。 それらを䜿甚しないこず自䜓はベストプラクティスではなく、実際にはそれらを䜿甚するための回避策が必芁です。

そのような説明が正確であるならば、どこに行くべきか私にはわかりたせん。

+1少なくずも、どこかのドキュメントでこれを蚀う必芁があるこずに同意したす。

間違いなく玛らわしいですが、Helmでこれを簡単にする方法がわかりたせん。 远加するテンプレヌトヘルパヌは、 indexず同じように関数のように機胜したすたずえば、HelmのtoYaml 、 toJson関数のセット。 より盎接的なアクセスを提䟛するために私が芋るこずができる唯䞀の方法は、キヌのダッシュを削陀するこずですが、あなたが蚀ったように、それは有効なYAML / JSONであり、それはおそらくさらに混乱するでしょう。 最終的に、Goテンプレヌトパヌサヌはそれをサポヌトしおおらず、フォヌクせずにそれに぀いおできるこずはあたりありたせん。

これがtoYaml実䟋です
{{- toYaml Values.jobs.update-es.resources | nindent 12 }} =゚ラヌ

{{- toYaml (index .Values "jobs" "update-es" "resources") | nindent 12 }}
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡