Kubernetesの設定は基本的に YAML(ヤムル)形式のファイルで記述されます。
「Deploymentを作る」「Serviceを定義する」といった作業は、すべてYAMLを書くところから始まります。
🔹 YAMLとは何か?
YAMLは「YAML Ain’t Markup Language」の略で、JSONと同様に データを階層構造で記述する軽量な形式です。
人間が読み書きしやすく、Kubernetes以外でもAnsibleやDocker Composeなどでも使われます。
✅ 基本構文のポイント
1. インデントはスペース(タブ禁止)
apiVersion: v1
kind: Pod
metadata:
name: mypod
labels:
app: myapp
- インデントは スペース2個 or 4個で統一(推奨は2個)
- タブ文字は禁止(Kubernetesはエラーになります)
2. key: value
の形式
すべては キー: 値
のペアで書きます:
replicas: 3
app: myapp
3. 配列(リスト)は -
で表現
containers:
- name: nginx
image: nginx:latest
- name: sidecar
image: my-sidecar:1.0
-
のあとにインデントして続けると、複数の要素を持つ配列を表せます。
4. コメントは #
# これはPodの設定です
apiVersion: v1
kind: Pod
5. 長い文字列の書き方(改行含む)
description: |
これは複数行の
説明文です。
改行もそのまま扱われます。
🧩 YAMLとJSONの違い
実は、Kubernetesは内部的には JSON を使っており、YAMLは より書きやすいラッパーとして採用されています。
特徴 | JSON | YAML |
---|---|---|
括弧 | {} , [] が必要 | インデントで表現 |
コメント | 書けない | # で書ける |
可読性 | 機械向け | 人間向け |
🛠 よくあるミスと対策
ミス例 | 原因 | 対策 |
---|---|---|
mapping values are not allowed here | インデントミス | エディタのYAMLモードを使う |
error converting YAML to JSON | : の後にスペースがない | key: value を意識 |
タブ文字を使ってしまう | YAMLではNG | VSCodeなどでタブ→スペース変換 |
🎯 Kubernetesマニフェストの最小構成
最後に、よく見るKubernetes用YAMLの骨組みを紹介します:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:latest
すべてのマニフェストは基本的に:
apiVersion
(APIのバージョン)kind
(リソースの種類)metadata
(名前やラベルなどの情報)spec
(具体的な設定)
で構成されます。
💡 実践のヒント
- Visual Studio Code + YAML拡張機能 を使うと補完やエラー検出が便利です
- Git管理する場合は コメントで意図を書いておくとチームでも理解しやすくなります
kubectl explain
を使うと、各フィールドの意味を確認できます:
kubectl explain deployment.spec.template.spec.containers