再利用可能な名前付きテンプレートのエクスポート
他のチャートから include できる partial を公開します。
「再利用可能な名前付きテンプレートのエクスポート」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
名前付きテンプレートが本体
Library Chartは名前付きテンプレートとして価値を提供します。通常の_helpers.tplファイルと同じように、defineを使って記述します。
{{- define "common.fullname" -}}
{{ .Release.Name }}-{{ .Chart.Name }}
{{- end -}}テンプレート名に名前空間を付ける
テンプレート名は、チャートとその依存関係全体でグローバルです。衝突を避けるため、common.labelsのようにLibrary名を接頭辞として付けてください。
{{- define "common.labels" -}}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}templatesに配置する
Libraryのテンプレートはチャートのtemplatesディレクトリに配置し、Helmがマニフェストとしてレンダリングしないよう、先頭にアンダースコアを付けたファイル名にします。
common/
templates/
_labels.tpl
_names.tpldefine単体では出力されない
単独のdefineブロックは、チャートのレンダリング時に何も生成しません。別のチャートが後から読み込んだときにだけ、テンプレートはテキストを出力します。
リソース全体をエクスポートする
Kubernetesオブジェクト全体を1つの名前付きテンプレートとして定義できます。利用側は1回のinclude呼び出しで、完全なServiceをレンダリングできます。
{{- define "common.service" -}}
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
{{- end -}}呼び出し元のコンテキストを受け取る
partial内のドットは、呼び出し元が渡した値になります。.Valuesと.Releaseを読み取れば、テンプレートを利用側の各チャートに適応させられます。
{{- define "common.image" -}}
{{ .Values.image.repository }}:{{ .Values.image.tag }}
{{- end -}}想定するスコープを文書化する
partialは入力を前提として動作するため、必要なコンテキストをコメントに記載してください。誤ったドットを渡すと、利用側で原因のわかりにくいエラーが発生します。
{{/* common.fullname expects the root context (.) */}}テンプレートごとに役割を1つに保つ
ロジックは小さく目的を絞ったpartialに分割してください。1つはnames、1つはラベル、1つはセレクターというように分けると、多くのチャートで組み合わせて使えます。
空白マーカーが重要
defineとendを{{-や-}}のようなダッシュマーカーで囲み、Libraryの出力によって利用側のYAMLに余分な空行が入らないようにしてください。
{{- define "common.name" -}}
{{ .Chart.Name }}
{{- end -}}includeするまでエクスポートされない
テンプレートを定義すると利用可能になりますが、自動的に有効になるわけではありません。application chartがincludeまたはtemplateを呼び出したときだけ出力に反映されます。
小さく再利用できるヘルパーセット
common.fullnameやcommon.labelsのようないくつかのpartialが、すべてのチームのチャートが基盤として利用できる共有の語彙になります。
{{- define "common.fullname" -}}
{{ printf "%s-%s" .Release.Name .Chart.Name }}
{{- end -}}クイックチェック
labelsではなくcommon.labelsのように、Libraryがテンプレート名に接頭辞を付けるべきなのはなぜですか。
まとめ: テンプレートをエクスポートする
アンダースコアで始まるファイル内のdefineで再利用可能なロジックを公開し、名前空間を付け、コンテキストには呼び出し元のドットを使う方法を学びました。🧩
よくある質問
「再利用可能な名前付きテンプレートのエクスポート」レッスンは無料ですか?
はい。「再利用可能な名前付きテンプレートのエクスポート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「再利用可能な名前付きテンプレートのエクスポート」で何を学びますか?
他のチャートから include できる partial を公開します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「再利用可能な名前付きテンプレートのエクスポート」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ライブラリチャート型の宣言
- 再利用可能な名前付きテンプレートのエクスポート
- ライブラリを依存関係として利用する
- ライブラリのデフォルトをローカルでオーバーライドする