わからないなりに理解したい Podman ⑦ ~ Pod の可搬性

★★★ Live配信告知 ★★★
◆◇世界一わかりみの深いクラウドネイティブ on Azure◆◇
6/22(金) 12:00~ 第14回:世界一わかりみの深いAzure Bot Service 〜AIによるFAQチャットボット構築〜
今回はAzure Cognitive Service for LanguageというAzureのAIサービスを用いて、FAQチャットボットの構築方法についてわかりみ深く説明します。
◆◇PS Live配信◆◇
5/20(金) 17:00~ アウトプットはイイぞ 〜人生折り返し地点からの情報発信で学びが楽しくなった話〜
2020年にMicrosoft MVP for Azure を受賞した武井が人生を変えたアウトプットについてそのノウハウをお伝えします。

こんにちは。サイオステクノロジー OSS サポート担当 山本 です。

前回お話ししたコンテナの器のようなものである Pod ですが、この Pod もまた他の環境に移す方法、つまりは “可搬性” を有しています。
今回は、Pod を別環境に移す方法の一つを見ていきたいと思います。

■Podman を利用した Pod の移行

今回使う Podman での Pod の移行方法について、先に大まかにお話ししておきます。

移行したい Pod を作成したら、その環境で以下のコマンドを実行し、移行用の yaml 形式ファイルを作成します。

そうしたら、作成したファイルを移行先の環境へコピーし、以下のコマンドを実行すれば OK です。

基本的にはこれだけなのですが、この手法で移行する場合、”podman generate kube” コマンドで作成される yaml ファイルの Pod 情報において、使用するコンテナイメージの情報は Pod 内にコンテナを作成する時に使用したコンテナイメージが記録されます。
たとえ後で Pod 内のコンテナを “podman commit” コマンドで別名をつけてコンテナイメージに保存したとしても、yaml ファイルには元々のコンテナイメージを使用するように記録されます。

一方、”podman play kube” コマンドでは yaml ファイルに記録された情報を基に Pod を作成します。
特に、Pod 内のコンテナについては、yaml ファイルに記録されているコンテナイメージをダウンロードして作成されます。

このため、Pod の中身のコンテナの状態まで正しく移行するためには移行元でのコンテナイメージの変更をレジストリに反映する必要があるので、ある程度自由に使用できるレジストリが必要になります。

レジストリについては以前の記事でも少しお話ししていますので、よければそちらも参考にしてください。

■移行元となる Pod の用意

今回も簡単に確認できるよう、前回と同じく実用性はない例ですが httpd を 2つ入れた Pod を移行して確認してみたいと思います。

■前準備:レジストリ

まずはレジストリを用意します。
今回はこちらの記事で紹介した、自前のレジストリを使います。

レジストリが用意できたら、「移行元」「移行先」それぞれの環境でレジストリ用の証明書を信頼するように設定してください。
レジストリの用意については以前の記事で案内しているとおりなので、詳細は省略します。

■Pod に入れるコンテナイメージを作る

今回は Pod を作成する前に、予め Pod に入れるコンテナイメージを作成します。
ベースとする quay.io の httpd コンテナイメージからコンテナを作成し必要な変更 (確認用コンテンツの作成) をした上で、”podman commit” で自前のレジストリにアップロードできる名前の、ローカルのコンテナイメージとして保存します。

同様の手順で、同じく quay.io の httpd をベースにもう一つローカルコンテナイメージを作成します。
こちらはコンテンツの作成の他に、Pod 内のポート重複を避けるために待ち受けポートの変更も合わせて行います。
Pod 内のポート重複については、前回記事を参照してください。

コンテナイメージの作成ができたら、これらのコンテナは不要なので削除します。

■移行元の Pod 作成

先に作ったローカルのコンテナイメージを使って、Pod を作成してその中にコンテナを配置します。
今回は “8080” “9090” ポートからそれぞれのコンテナのコンテンツにアクセスできるよう、Pod のポートを設定しています。
Pod の作成などについては、前回記事を参照してください。

先の手順でコンテナ自体の変更は済んでいるため、これで移行元の Pod の準備は OK のはずです。
念のため意図したとおりコンテンツにアクセスできるか、確認しておきましょう。

■必要なコンテナイメージのアップロード

続いて、移行する Pod で使用するコンテナイメージを push し、レジストリに保存します。
レジストリの操作については以前の記事を参照してください。

■”podman generate kube” で yaml ファイルを作成

最後に、”podman generate kube” で yaml ファイルを作成すれば、移行の準備は完了です。

■Pod の移行

準備ができたら、移行先に環境で Pod を復元してみましょう。

まずは何らかの方法で、移行元の環境で作成した yaml ファイルを移行先にコピーしておいてください。

そうしたら、後はコンテナイメージが保存されているレジストリにログインした上で、”podman play kube” コマンドを実行するだけです。

これで、移行先の環境に移行元の Pod を移行することができました。
最後に確認用コンテンツを使って、移行が成功したことを確認してみましょう。

■最後に

今回は yaml ファイルを使った Pod の移行について見てきました。
注意すべきことはいくつかありましたが、Pod の移行もわずかなコマンドだけでできるんだなぁ、となんとなく感じてもらえたかと思います。

余談ですが、今回の手順で使用した yaml ファイルは、(形式が合っていれば) 手動で作成したり編集したりすることもできます。
勿論、適切に編集するためにはちゃんと yaml ファイルの中身を理解しておく必要があり、無理に手動でやる必要はありませんが、頭の片隅に置いておくと役に立つこともあるかもしれません。

(他の回)
わからないなりに理解したい Podman ① ~ 何をするもの?
わからないなりに理解したい Podman ② ~ コンテナを書き換える
わからないなりに理解したい Podman ③ ~ 可搬性とは?
わからないなりに理解したい Podman ④ ~ 可搬性とは?その2
わからないなりに理解したい Podman ⑤ ~ レジストリと TAG
わからないなりに理解したい Podman ⑥ ~ Pod って何だ?
(今回) わからないなりに理解したい Podman ⑦ ~ Pod の可搬性





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*