if と else による条件ブロック
設定されている場合にのみリソースをレンダリングします。
「if と else による条件ブロック」はCoddyKit上の無料Helm Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHelm Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Helm Academyコースには全4レッスンが含まれています。
必要な場合だけレンダリングする
ユーザーが要求した場合だけリソースを出力したいことがあります。Helmでは、そのYAMLをconditionalで囲み、必要なときだけレンダリングできます。
ifアクション
ifブロックは{{ if SOMETHING }}で始まり、{{ end }}で閉じます。間にあるすべての内容は、条件がtrueの場合だけレンダリングされます。
{{ if .Values.ingress.enabled }}
# ingress yaml here
{{ end }}Valuesで制御する
条件には通常、ユーザーが設定するvalueを使います。values.yamlでingress.enabledをtrueに切り替えると、囲まれたマニフェストが突然現れます。
ingress:
enabled: true必ずendで閉じる
すべてのifには{{ end }}を対応させる必要があります。忘れると、chartのレンダリング時にHelmがブロック未終了エラーを出します。
elseを追加する
フォールバックが必要ですか。{{ else }}ブランチを追加してください。trueの場合は最初のブロック、それ以外の場合はelseブロックがレンダリングされます。
{{ if .Values.tls }}
protocol: HTTPS
{{ else }}
protocol: HTTP
{{ end }}else ifで条件をつなぐ
複数のケースには、{{ else if }}で条件をつなぎます。Helmは順番に確認し、条件がtrueになる最初のブランチをレンダリングします。
{{ if eq .Values.tier "gold" }}
replicas: 5
{{ else if eq .Values.tier "silver" }}
replicas: 3
{{ else }}
replicas: 1
{{ end }}何がtrueとして扱われるか
値がemptyでない限り、ifはtrueです。false、ゼロ、空文字列、空のリストはいずれも条件内でfalseとして扱われます。
オプションフィールドを保護する
よくあるパターンでは、リソース全体ではなく1つのオプションフィールドを囲みます。ここでは、ユーザーが値を指定した場合だけannotationがレンダリングされます。
{{ if .Values.email }}
contact: {{ .Values.email }}
{{ end }}空行に注意する
ifブロックでは、アクションがあった場所に空行が残ります。その空白がYAMLを壊すことがあるため、次は空白を削除する方法を学びます。🧹
ブランチをプレビューする
異なるvaluesでレンダリングし、どのブランチが選ばれるか確認してください。--setを使ったhelm templateで、デプロイ前に各条件を検証できます。
helm template ./mychart --set ingress.enabled=true不足しているフラグにデフォルトを設定する
ユーザーがフラグを設定しなければ、emptyとして扱われ、ifはfalseのままです。そのため、chartではvalues.yamlに適切なdefaultを用意します。
ingress:
enabled: falseクイックチェック
{{ if .Values.cache }}と記述しましたが、chartのレンダリングに失敗します。
まとめ
これでifを使ってYAMLの出力を制御し、elseやelse ifブランチを追加し、最後に{{ end }}で閉じられるようになりました。条件付きレンダリングを使いこなせます。🎯
よくある質問
「if と else による条件ブロック」レッスンは無料ですか?
はい。「if と else による条件ブロック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Helm Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Helm Academyコースには全4レッスンが含まれています。
「if と else による条件ブロック」で何を学びますか?
設定されている場合にのみリソースをレンダリングします。 ブラウザで直接実行するハンズオンコードでHelm Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Helm Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHelm Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「if と else による条件ブロック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHelm Academyレッスンでコードを書いて実行できますか?
はい。すべてのHelm Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- if と else による条件ブロック
- 条件式の真偽値と演算子
- range でリストと Map をループする
- with でブロックの Scope を限定する