Deploymentリソース#

デプロイメント(deployment)リソースは、Podを配下に従えて、Podの管理や更新・ロールバックなどをサポートします。 このリソースを考えるときには、直下に存在することになるレプリカセット(replicaset/rs)についてもおさえておく必要があります。

とりあえずdeploymentを作成して、そこからrsに下って学んでいくと良いでしょう。

とりあえず作ってみる#

vscodeのK8s拡張により、スニペットが用意されます。こちらを使ってみると良いでしょう。 なお、適用(kubectl apply)の前に、前の節で使っているPodリソース(1st/2nd)は消しておく方が良いでしょう。

_images/vscode-snippet-deploy.png

Fig. 4 スニペット “deployment” の呼び出し#

_images/vscode-snippet-deploy-result.png

Fig. 5 呼び出し結果#

呼び出されたスニペットをベースに、内容を書き換えていってください。

Listing 25 スニペットをベースとしたnginxデプロイメント(強調部が変更しているところ)#
 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: frontend
 5spec:
 6  # レプリカ数は初期値1なので実は書かなくてもOK(明示)
 7  replicas: 1
 8  selector:
 9    matchLabels:
10      app: frontend
11  template:
12    metadata:
13      labels:
14        app: frontend
15    spec:
16      containers:
17      - name: frontend
18        image: nginx
19        resources:
20          limits:
21            memory: "128Mi"
22            cpu: "500m"
23        ports:
24        - containerPort: 80

まずはデプロイしてみましょう。様子をGUIで見たい方は、別途ダッシュボードを起動しておくと良いでしょう。

Listing 26 deploy1.ymlを用いたデプロイ#
PS> kubectl apply -f deploy1.yml
deployment.apps/frontend created

ダッシュボード上で見た場合、1つのマニフェストですが、3つのワークロードが設定されています。

_images/dashboard-deploy1.png

Fig. 6 ダッシュボード上の表示、3つのワークロードが出てきた#

出てきたものは3つあります。

  • デプロイメント(deployment)

  • ポッド(pod)

  • レプリカセット(replicaset)

このうちPodは前節で解説しているので、つ次にデプロイメントとレプリカセットを見ていきましょう。