0Pricing
DevOps Bootcamp · レッスン

再利用可能な名前付きテンプレートのエクスポート

他のチャートから 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.tpl

define単体では出力されない

単独の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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ライブラリチャート型の宣言
  2. 再利用可能な名前付きテンプレートのエクスポート
  3. ライブラリを依存関係として利用する
  4. ライブラリのデフォルトをローカルでオーバーライドする
← DevOps Bootcampに戻る