【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ファイルでは、apiVersionがapps/v1、kindがDeploymentであることを示している。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で広く利用されている。どの形式を使うかは個人の好みやプロジェクトの要件によって選択できる。