【Kubernetes】YAMLファイルの書き方(deployment) no.8


こんにちは。まゆみです。

Kubernetesについての記事をシリーズで書いています。

前回の記事では、yamlファイルに必ず書く4つの項目を書いたところで記事を終えました。(下のスクショ参考)

今回の記事はその続きを書いていこうと思います

ではさっそく始めていきますね。

deploymentオブジェクトのyamlファイルを書く

先ほども触れさせていただきましたが、まず、yamlファイルに必ず書く4つの項目を書き終えているというのを前提にさせてください。

今回の記事は、前回の続きから解説していきますので。

それと、Podを作る基になるImageがDocker hubのRepositoryにあることも確認お願いします(ImageがDocker hub に無いとpodを作ることができません。)

今回の記事では、下のスクショにあるように『mayumidocker0612/minikube-first-app』のイメージをpodに使います

deploymentのyamlファイルの概要

deploymentに関するyamlファイルの最終完成形は大体、上のスクショのようになります(意図的に抜いている部分がありますが、それは別の項目に書きます)

赤で囲まれている部分がdeploymentオブジェクトに関する事

オレンジで囲まれている部分がpodに関する事

になります

Deploymentオブジェクトとpodの関係性は、Deploymentオブジェクトがpodに関する事(いくつpodを用意するかなど)をマネージしているのだと理解してください。


引用元:Kubernetes Deployment Tutorial with Example YAML

では前回の記事の続きから、deployment.yamlファイルに書くべき項目を一つづつ解説していきます

replicas

Deploymentオブジェクトを作る時、いくつのpodで始めるかをここで定義します。

トラフィックが増えてきたときに、スケーリングするようにもできますが、ここで定義するのはオブジェクトを作る時にいくつのpodで『始めるか』です。

ディフォルトの値は『1』です。

template

Podに関しての情報を書いていきます。

Deploymentに関してのmetadataにはそのオブジェクト名を書きました。(name:と書いている部分のことです)

Podのmetadataにはname:ではなく、labels: を書きます

labels:はキーバリューペアーで、あなたの好きなだけ書くことができます(のちに、deploymentでどのpodをコントロールするのかを特定するために必要になる項目になります)

また、Deploymentの情報を書いた時はkind:という項目も書きました。

なぜならば、Deploymentの他にもServiceやJobに関するyamlファイルを書く時もあるからです。

Podに関する情報を書く時にはkind:は書きません。

なぜならいつでもkind: podになるからです。

spec

『Podの』specification(スペック)を書きます。

そしてPodはContainerを囲んでいるwrapperのようなものなので、containerに関する情報を書いていきます

name: はあなたが好きに付けてください。

image: はどのImageでpodを作るのか?そしてそのイメージはローカルではなくDocker hubにあるイメージになります

Containerのイメージはローカルにあるものではなく、リモートにあるものを使ってくださいね。

selectorを書く

先ほど、Deploymentは全てのpodをマネージしていると書かせていただきました。

どのDeploymentがどのpodと結びついているのかを明示するために『selector』を最後に書きます

selectorを書き忘れないための便利な方法

Visual Studio Codeを使っている方なら、こちらの記事でおすすめしている拡張機能を入れますと、selectorを書き忘れている場合『selectorが足りません』と教えてくれます(赤の波線が出てくるのでホバーしたら注意が表示されます)

podのlabelsに書いたキーバリューぺアーを書く

どのDeploymentオブジェクトがどのpodを見張っているかを明示したいので、podのlabelsに書いたキーバリューペアーを書きます

selector:
  matchLables:
    app: first-app    

となります

YAMLファイルの最終的に完成したものは下のようになります

yamlファイルの内容を適用させる

yamlファイルが書き終わりました。

ではこのファイルの内容を適用させて実行するにはどうしたら良いのでしょうか

kubectl apply -f=<ファイル名.yaml>

これで、指定されたファイルの内容が適用されて実行されます。

エラーが出る

error: Unexpected args: [.yaml]

というエラーが出る人は、-f=で指定するファイル名をクォーテーションマークで囲んで見ましょう(バージョンの違いで、エラーが出る人も出ない人もいます。私の場合はエラーが出ました)

kubectl apply -f='<ファイル名.yaml>'

kubectl get deployments

で調べたら、ちゃんとdeploymentオブジェクトができていました。

まとめ

今回の記事はここで締めくくらせていただきます。

次回はServiceオブジェクトの場合のyamlファイルの作り方を書いていこうと思います \(^o^)/

よろしくお願いいたします。