このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Kubernetes入門:デプロイメントの定義ファイルを作成する

Kubernetesにおいて、デプロイメント(Deployment) は、アプリケーションのスケーリング、アップデート、可用性の確保を自動化するための重要なコンポーネントです。デプロイメントは、Podの作成・管理を行い、指定された数のPodが常に稼働し続けるようにKubernetesに指示します。これは、リソースの安定性と効率的な運用を確保するための基本的な仕組みです。デプロイメントの役割を理解し、定義ファイルを適切に作成することは、Kubernetesを効果的に活用するために欠かせません。

Podとデプロイメントの関係
Podが個々の作業者の役割を果たすのに対して、デプロイメントはその作業者がどのように働き、何人必要であるかを管理するスーパーバイザーのようなものです。スーパーバイザーは作業者(Pod)が確実に働き続けるように監督し、必要に応じて増員や減員を行います。この役割をKubernetesではデプロイメントが担い、安定したアプリケーションの稼働を保証します。
デプロイメントの定義ファイルの書き方
デプロイメントの設定項目
apiVersion:
kind:
metadata:
name: ←(中項目)デプロイメントの名前
spec:
selector: ← (中項目) セレクターの設定
matchLabels: ← (小項目) ラベルをセレクターで選択して管理する
replicas: ← (中項目) レプリカの設定
template: ← (中項目) テンプレート(作成するPodの情報を書く)
metadata: ← (小項目) Podのメタデータを書く
spec: ← (小項目) Podのスペックを書く
各セクションの解説
- apiVersion:
apps/v1
はデプロイメントのAPIグループおよびバージョンを指定します。 - kind: ここでは
Deployment
を指定し、リソースの種類がデプロイメントであることを示しています。 - metadata: デプロイメント自体の名前やラベルなど、管理するリソースのメタデータを設定します。
- spec: デプロイメントの動作内容を設定する重要な部分です。ここではPodのレプリカ数、テンプレート、セレクターなどを設定します。
セレクター(Selector)の設定
セレクターは、デプロイメントがどのPodを管理するかを指定するために使用されます。デプロイメントは、matchLabels
を使って、特定のラベルが付けられたPodのみを管理します。Podのラベルはtemplate
の中で設定します。
selector:
matchLabels:
app: apache
レプリカの設定
レプリカの数をreplicas
で指定します。ここでは、3つのPodが常に稼働している状態を確保します。
replicas: 3
テンプレート(template)の設定
テンプレートの中には、実際に作成されるPodの詳細を記述します。「pod.yml」で記述した内容(メタデータとスペック)をほぼ丸ごと転記します。
デプロイメントの定義ファイルの構造

デプロイメントの定義ファイル名と置く場所
次に、定義ファイルの保存場所を決定します。ファイルは適切な場所に保存し、ファイル名を理解しやすいものにします。このパスに配置することで、ファイル管理が容易になり、デプロイメントを簡単に適用できます。
項目 | 値 |
---|---|
デプロイメントの定義ファイル名 | deployment.yml |
ファイルを置く場所 | C:\Users\ユーザー名\Desktop\kubernetes\apache |
デプロイメントで記述する項目

作成するデプロイメントとコンテナの情報
ここで、デプロイメントとコンテナの設定情報を整理しておきます。この情報に基づいてデプロイメントの定義ファイルを作成します。
項目 | 値 |
---|---|
APIグループとバージョン | apps/v1 |
リソースの種類 | Deployment |
デプロイメントの名前 | apache-dep |
セレクターの対象とするラベル | app: apache |
レプリカ (Pod) の数 | 3 |
コンテナの名前 | apache-container |
元となるイメージ | httpd |
コンテナポート | containerPort: 80 |
【作成手順】デプロイメントの定義ファイル
デプロイメントの定義ファイルを作成するには、「pod.yml」ファイルの内容を、ほぼそのままデプロイメントのtemplate
内に転記します。以下は、ここで行うApacheサーバーを題材にしたデプロイメントの作成手順です。レプリカ数は「3」とし、Podが3つ作成されるように設定します。

手順 | 内容 |
---|---|
1. 大項目を並べる | apiVersion , kind , metadata , spec を並べる |
2. メタデータを記述する | デプロイメント名: apache-dep 、ラベル: app: apache |
3. スペックを記述する | セレクターラベル: app: apache 、レプリカ数: 3 、コンテナ名: apache-container 、イメージ: httpd 、コンテナポート: 80 |
デプロイメントの定義ファイルの作成
ここでは、KubernetesでApacheサーバを管理するためのデプロイメント定義ファイルを作成します。デプロイメントの定義ファイルは、複数のPodを管理するための重要な設定ファイルです。この定義ファイルを作成する手順を詳しく解説します。
【STEP1】「deployment.yml」ファイルを作成します。
まず、デプロイメントの設定を記述する「deployment.yml」ファイルを作成します。VScodeを使って定義ファイルを作成します。以下の手順で進めていきます。
・PowerShellを起動し、作業ディレクトリに移動します。
PS C:\Users\joeac> cd desktop\kubernetes
PS C:\Users\joeac\Desktop\kubernetes>
・「apache」ディレクトリに移動して、VSCodeを使って「deployment.yml」ファイルを作成します。
PS C:\Users\joeac\Desktop\kubernetes> cd apache
PS C:\Users\joeac\Desktop\kubernetes\apache> code deployment.yml
これで、VSCodeが起動し、deployment.yml
ファイルが開かれます。

【STEP2】大項目を並べます。
次に、デプロイメント定義ファイルに必要な大項目(apiVersion
、kind
、metadata
、spec
)を並べます。これらはKubernetesリソースの基本構造を定義するために必要です。
以下の内容を入力します。
apiVersion:
kind:
metadata:
spec:
【STEP3】apiVersion
と kind
の設定を入力します。
APIのバージョンとリソースの種類を設定します。この場合は、デプロイメントリソースを作成するために apps/v1
と Deployment
を指定します。
以下のように入力します。
apiVersion: apps/v1
kind: Deployment
metadata:
spec:
【STEP4】metadata
の設定値を入力します。
metadata
の中にデプロイメントの名前を設定します。これにより、デプロイメントに一意の名前が付けられます。名前は「apache-dep
」とします。
以下のように入力します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: apache-dep
spec:
【STEP5】spec
にセレクターとレプリカの値を設定します。
spec
内にセレクターとレプリカの設定を行います。selector
でラベル app: apache
を持つPodを選択し、replicas
で3つのPodを作成するように指定します。
以下のように入力します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: apache-dep
spec:
selector:
matchLabels:
app: apache
replicas: 3
【STEP6】spec
のテンプレートにPodの内容を転記します。
template
以下にPodのメタデータとスペックを記述します。この部分には、前に作成した「pod.yml
」の内容をほぼそのまま転記します。template内のmetadataにname(名前)は記入しません。転記したらpod.ymlファイルは削除してかまいません。スペースには気をつけて転記します。
以下のように編集します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: apache-dep
spec:
selector:
matchLabels:
app: apache
replicas: 3
template:
metadata:
labels:
app: apache
spec:
containers:
- name: apache-container
image: httpd
ports:
- containerPort: 80
【STEP7】保存します。
定義した内容を見直して、問題が無ければ deployment.yml
ファイルを保存します。字下げやスペースに注意し、特に template
以下が正しくインデントされていることを確認しましょう。
これで、デプロイメントの定義ファイルが完成しました。
まとめ
デプロイメントは、Kubernetesにおけるアプリケーションの管理とスケーリングを自動化するための重要なリソースです。定義ファイルの正しい記述によって、安定したアプリケーションの稼働が保証されます。