【Kubernetes】イメージを更新するには (Declarativeアプローチで) no.10


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

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

前回・前々回の記事で、yamlファイルにDeploymentやServiceオブジェクトの設定内容をどのように書くかを解説させていただきました。

今回の記事では、

  • Podの中のContainerのイメージを更新するにはどうしたら良いか
  • イメージを更新するときに水面下で行われていること

を解説していこうと思います

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

イメージの更新の仕方

実はイメージを更新するのは (Declarative(宣言型)のアプローチを使えば) ものすごく簡単です。

deployment.yamlファイルの

spec > containers > image

に変更したいイメージ名を書くだけです。

Imperativeなアプローチの場合、イメージを更新するのは大変でした。(こちらの記事でImperativeな方法によるイメージの更新の仕方を紹介しています)

①更新したイメージをdocker hubにpush して

②kubectl set imageコマンドでイメージを更新する

というやや複雑なものでしたが、Declarativeな方法によれば、yamlファイルのimage名を書き換えるだけで良いのです。

yamlファイルを更新するときに水面下で起こっていること

上で記したように、yamlファイルのimage: の項目を新しいイメージ名にして

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

とすれば、イメージが更新されて新たなオブジェクトが作られます。

この時水面下で何が起こっているかというと

コンピュータはyamlファイルのなかに書かれたオブジェクトの

name:

kind:

を見ます。

そして更新後もファイルが同じ

name:

kind:

を使っているのなら、そのファイルは前のファイルを更新したものだと認識するのです。

もし、name: もしくは kind: のどちらかを違うものにしてしまうと、

『既存のpodを更新するのではなく、新しいpodを作るんだ』

とコンピュータが認識してしまうので、注意です。

まとめ

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

お役に立てれば幸いです。