【ITニュース解説】YAML - Kubernetes 'Favorite' Configuration Language

2025年09月05日に「Dev.to」が公開したITニュース「YAML - Kubernetes 'Favorite' Configuration Language」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

KubernetesではYAMLを使って設定を記述することが多い。YAMLファイルはKubernetesオブジェクトを定義し、Pod、Service、Deploymentなどを作成する。YAMLの主要な要素はapiVersion、kind、metadata、specの4つ。apiVersionはAPIのバージョン、kindはオブジェクトの種類、metadataはオブジェクト名やラベル、specはオブジェクトの詳細設定を記述する。kubectl applyコマンドでYAMLファイルを適用する。

ITニュース解説

Kubernetes(クーバーネティス)は、コンテナ化されたアプリケーションを効率的に管理・運用するための基盤。Kubernetesを扱う上で、設定を記述するためにYAMLという言語がよく使われる。この記事では、YAMLがKubernetesでどのように利用されるかを解説する。

Kubernetesでは、YAMLファイルを使ってKubernetesオブジェクトを作成する。Kubernetesオブジェクトは、クラスタ内で永続的に存在するエンティティのこと。例えば、アプリケーションを実行する場所であるPod、アプリケーションを外部に公開する方法であるService、アプリケーションの複製や更新を管理するDeploymentなどがある。ConfigMap、Secret、IngressなどもKubernetesオブジェクトの例。

YAMLファイルには、主に次の4つの主要なフィールドがある。

apiVersion: Kubernetes APIのバージョンを指定する。Deploymentの場合はapps/v1、PodやServiceの場合はv1と記述することが多い。

kind: 作成するKubernetesオブジェクトの種類を定義する。Pod、Deployment、Service、ReplicaSet、Ingressなどが一般的な種類。

metadata: オブジェクトを特定し、説明するための情報を含む。nameはオブジェクトの一意な名前(必須)、namespaceはオブジェクトが属する名前空間(省略時はdefault名前空間)、labelsはオブジェクトに付与するラベル(他のオブジェクトがラベルに基づいて選択するために使用)、annotationsはツールや特定の設定に使用される。

spec: オブジェクトの設定を記述する。このセクションの内容は、オブジェクトの種類によって異なる。Deploymentの場合、specはレプリカの数、Podのテンプレート(コンテナイメージ、ポート、リソース制限など)、更新戦略、セレクタなどを定義する。Serviceの場合、specはポートのマッピング、ターゲットとなるPodを検索するためのセレクタ、Serviceの種類(ClusterIP、NodePort、LoadBalancerなど)を定義する。Podの場合、specはPod内のコンテナ、ボリューム、再起動ポリシーなどを定義する。

DeploymentにおけるYAMLの例を示す。

1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  generation: 2
5  labels:
6    app: wordpress
7  name: wordpress
8  namespace: wp-ecommerce
9spec:
10  progressDeadlineSeconds: 600
11  replicas: 2
12  revisionHistoryLimit: 11
13  selector:
14    matchLabels:
15        app: wordpress
16  strategy:
17    rollingUpdate:
18      maxSurge: 25%
19      maxUnavailable: 25%
20    type: RollingUpdate
21  template:
22    metadata:
23      labels:
24        app: wordpress
25    spec:
26      containers:
27        - image: wordpress:latest
28          imagePullPolicy: Always
29          name: wordpress
30          ports:
31            - containerPort: 80
32              name: tcp
33              protocol: TCP
34      restartPolicy: Always

このYAMLファイルでは、apiVersionapps/v1kindDeploymentであることを示している。metadataには、Deploymentの名前(wordpress)、名前空間(wp-ecommerce)、ラベル(app: wordpress)などが記述されている。specには、レプリカ数(replicas: 2)、Podのテンプレートなどが定義されている。Podのテンプレートには、使用するコンテナイメージ(wordpress:latest)、ポート(containerPort: 80)などが記述されている。

このYAMLファイルをKubernetesに適用するには、kubectl apply -f your-yaml-file.yamlというコマンドをマスターノードで実行する。your-yaml-file.yamlは、YAMLファイルの名前を表す。

Kubernetesの設定記述には、YAMLの他にJSONやHCLも使用できる。しかし、YAMLは可読性が高く、記述しやすいという利点があるため、Kubernetesで広く利用されている。どの形式を使うかは個人の好みやプロジェクトの要件によって選択できる。

【ITニュース解説】YAML - Kubernetes 'Favorite' Configuration Language | いっしー@Webエンジニア