YAML Templating Tool の概要と使い方

2024/05/14に公開

ytt とは

ytt(YAML Templating Tool)は、Carvelによって開発された強力なテンプレートツールで、YAMLファイルの管理を簡易化します。このツールは特にKubernetesの設定ファイルを含む複雑なYAML構成を扱う際に有効です。yttは、データの挿入、構成の変更、コードの再利用を容易にするために、プログラム可能なロジックを利用してYAMLファイルを動的に生成することができます。

1. ytt のインストール方法

さまざまなオペレーティングシステムで ytt を簡単にインストールできます。

macOS(Homebrewを使用):

brew install ytt

Linux:
Linuxユーザーは、Carvel ytt GitHub リリースページから適切なバイナリをダウンロードして、パスに追加します。

2. ytt の書き方

yttを使用してテンプレートを作成する際には、YAMLファイル内に特定のコメントを挿入します。これによりデータの挿入やロジックの組み込みが可能になります。

データ値(Data Values):
#@data/values アノテーションを使用して、外部から注入されるべき値を定義します。

#@data/values
---
replicaCount: 1

式(Expressions):
#@ を使用してYAML内に式を埋め込み、変数の値を挿入したり、条件に基づいて内容を変更したりします。

replicas: #@ data.values.replicaCount

オーバーレイ(Overlays):
ytt のオーバーレイ機能を使用して、既存のYAMLドキュメントを動的に変更することができます。

3. YAMLファイルの生成

yttを使用してYAMLファイルを生成するプロセスはシンプルです。以下のコマンドは、複数の入力ファイルからデータを取り込み、新しいYAMLファイルを生成します。今回はconfig.ymlにアノテーションを使用し、values.ymlの値を代入し、output.ymlに出力します。

config.yml
#@ load("@ytt:data", "data")
#@ replica = data.values.replicaCount

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: #@ replica #! ここの値をvalues.ymlの値を入力します
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: nginx
        ports:
        - containerPort: 80
values.yml
#@data/values
---
replicaCount: 3

マージするコマンドを実行する。

ytt -f config.yml -f values.yml > output.yml

このコマンドにより、config.yml と values.yml の内容がマージされ、output.yml という新しいファイルに出力されます。

output.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3 #! values.ymlの値が代入されてます。
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: nginx
        ports:
        - containerPort: 80

終わりに

ytt は複雑なYAMLファイルの管理を効率的に行うための強力なツールです。この記事が ytt の基本的な理解と使用方法を身に付ける一助となれば幸いです。

Discussion