Kubernetesマニフェストの JSON/YAML変換

KubernetesマニフェストをYAMLとJSON形式間で変換する方法を解説。Deployment、Service、ConfigMapの実践的な例とkubectlのヒントを紹介します。

DevOps

詳細な説明

Kubernetesはリソースマニフェストに対してYAMLとJSONの両方を受け付けます。YAMLがKubernetesエコシステムの標準的な慣習ですが、JSONはプログラムによる生成、API呼び出し、デバッグに有用です。

YAMLでのKubernetes Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  labels:
    app: web
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:1.25
          ports:
            - containerPort: 80
          resources:
            limits:
              cpu: "500m"
              memory: "128Mi"
            requests:
              cpu: "250m"
              memory: "64Mi"

JSON等価物:

{
  "apiVersion": "apps/v1",
  "kind": "Deployment",
  "metadata": {
    "name": "web-app",
    "labels": {
      "app": "web",
      "tier": "frontend"
    }
  },
  "spec": {
    "replicas": 3,
    "selector": {
      "matchLabels": { "app": "web" }
    },
    "template": {
      "metadata": {
        "labels": { "app": "web" }
      },
      "spec": {
        "containers": [
          {
            "name": "web",
            "image": "nginx:1.25",
            "ports": [{ "containerPort": 80 }],
            "resources": {
              "limits": { "cpu": "500m", "memory": "128Mi" },
              "requests": { "cpu": "250m", "memory": "64Mi" }
            }
          }
        ]
      }
    }
  }
}

実用的なヒント:

  • kubectl は両形式を受け付けます:kubectl apply -f deployment.yaml または kubectl apply -f deployment.json
  • 既存リソースの変換:kubectl get deployment web-app -o json でJSONをエクスポート
  • CPUやメモリの値("500m""128Mi")はYAMLでクォートして文字列として維持する必要があります
  • Kubernetes APIのレスポンスは常にJSONなので、デバッグにはJSON への理解が不可欠です

マルチドキュメントYAML--- で区切り)はKubernetesで一般的ですが、JSONには等価物がありません。各ドキュメントは個別のJSONファイルに変換するか、JSON配列に配置する必要があります。

ユースケース

PulumiやAWS CDKなどのInfrastructure-as-Codeツールで、TypeScriptやPythonでプログラム的にリソースを生成する際にKubernetesマニフェストをJSONに変換する場合。

試してみる — JSON ↔ YAML Converter

フルツールを開く