Kubernetes Learning 第11章:YAML形式の基本 ~Kubernetesマニフェストの土台を理解する~

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は より書きやすいラッパーとして採用されています。

特徴JSONYAML
括弧{}, [] が必要インデントで表現
コメント書けない# で書ける
可読性機械向け人間向け

🛠 よくあるミスと対策

ミス例原因対策
mapping values are not allowed hereインデントミスエディタのYAMLモードを使う
error converting YAML to JSON: の後にスペースがないkey: value を意識
タブ文字を使ってしまうYAMLではNGVSCodeなどでタブ→スペース変換

🎯 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

mh

Related Posts

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 34 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 56 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 57 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 75 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 64 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 77 views