define で Partial を定義する
再利用可能な名前付き Template ブロックを宣言します。
「define で Partial を定義する」はCoddyKit上の無料Helm Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHelm Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Helm Academyコースには全4レッスンが含まれています。
なぜ繰り返しを避けるのか
同じラベルや名前が、チャート内のすべてのマニフェストにコピーされることがあります。named templateを使えば、そのブロックを一度だけ記述して、どこからでも再利用できます。
define アクションを使う
defineアクションを使って再利用可能なブロックを宣言します。これはテンプレートテキストの一部に名前を付けるだけで、それ自体では何もレンダリングしません。
{{- define "mychart.labels" -}}
app: my-app
{{- end -}}define ブロックの構造
すべてのdefineは名前文字列で始まり、endで終わります。その間にある部分が、呼び出し元によって取り込まれる本文です。
{{- define "NAME" -}}
...body...
{{- end -}}命名規則が重要な理由
名前はチャート全体でグローバルになるため、衝突を避けるためにチャート名を先頭へ付けます。慣例ではドット形式のchart.purposeを使います。
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: mychart
{{- end -}}パーシャルを置く場所
慣例として、すべての define ブロックをtemplates/_helpers.tplに置きます。先頭のアンダースコアは、このファイル自体がマニフェストを出力しないことを Helm に伝えます。
アンダースコアで始まるファイルは特別
templates 内でunderscoreから始まるファイルは、Kubernetes オブジェクトにレンダリングされません。他のテンプレートが使うパーシャルやヘルパーだけを格納します。
define は出力を生成しない
パーシャルを定義すると、名前が登録されるだけです。別のテンプレートがそのパーシャルを実際にcallsするまで、レンダリングされた YAML には何も現れません。
パーシャルではドットを使える
パーシャル内では.Release.Nameのようなコンテキストを読み取れますが、呼び出し元がそのスコープを渡している場合に限られます。スコープの渡し方は後ほど説明します。
{{- define "mychart.name" -}}
{{ .Release.Name }}
{{- end -}}1つのファイルに複数のパーシャル
_helpers.tpl には、必要な数だけdefineブロックを重ねて記述できます。関連するヘルパーをまとめると、ファイル全体を確認しやすくなります。
{{- define "mychart.name" -}}
my-app
{{- end -}}
{{- define "mychart.fullname" -}}
my-app-prod
{{- end -}}パーシャルで大きなチャートを構築する
チャートが大きくなると、パーシャルによって重複するラベルや名前の整合性を保てます。ヘルパーを一度変更するだけで、それを使うすべてのマニフェストが同時に更新されます。
定義は作業の半分にすぎない
define だけでは何も起こりません。次のステップでは、includeまたは template を使って実際のマニフェストに挿入します。詳しくは次のレッスンで説明します。
クイックチェック
define ブロックを追加したのに、レンダリング結果が空です。なぜでしょうか。
振り返り: パーシャルの定義
defineで再利用可能なブロックを宣言し、chart.purpose という名前を付けて、_helpers.tpl に保存する方法を学びました。次は、それらを呼び出します。🧩
よくある質問
「define で Partial を定義する」レッスンは無料ですか?
はい。「define で Partial を定義する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Helm Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Helm Academyコースには全4レッスンが含まれています。
「define で Partial を定義する」で何を学びますか?
再利用可能な名前付き Template ブロックを宣言します。 ブラウザで直接実行するハンズオンコードでHelm Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Helm Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHelm Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「define で Partial を定義する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHelm Academyレッスンでコードを書いて実行できますか?
はい。すべてのHelm Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- define で Partial を定義する
- template と include で Partial を挿入する
- 標準の Fullname と Labels Helper
- 名前付き Template に Scope を渡す