このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2023年8月31日木曜日

Rancherでkubernetesの管理をしてみる 第5回 RancharからPodとServiceを作って外部から接続してみる

今回は、RancherからPodやServiceを作って外部からのアクセスをできるようにしてみたいと思います。
事前準備として、KubernetesにはMetalLBを構築してServiceでタイプLoadBarancerを作成した際に、IPアドレスを払い出してくれるようにしてあります。

早速、今回の作業用として新しく名前空間demoを作成するところから開始していきたいところですが、Rancherではプロジェクトという単位で管理ができるのでこれから作成する名前空間を管理するプロジェクトを作成したいと思います。
『Create Project』から新しくプロジェクトを作っていきましょう
プロジェクト名demoを設定し、せっかくなので前に作ったユーザーもアクセスできるようにしてみます。
これは名前空間ではなく、Rancher上の設定になりますので実機の方ではまだ変化はありません。
(一応、新しいリソースでProjectとかないか確認しましたが、見当たらなかったのでRancher側だけのはず・・・)
表示が見づらくなるので、作成したProject:demoだけ表示するように上部のプルダウンから切り替えます。
ここから『Create Namespace』をクリックして名前空間の作成に入ります。
名前空間名にdemoを入力してCreateします。 特にリミットは設定しません。
名前空間demoが作成できたので、実機の方もsshでログインして確認してみます。
続いてPodの作成をしますが、Podから作るのではなくDeploymentを使用して作ってみましょう。
『Workload』を展開し、『Deployments』から『Create』をクリックします。
ここで使用するイメージはデモでよく使われているkuardをお借りします。
先ほど作成した名前空間を指定し、Deploymentsの名前を設定し、レプリカ数はとりあえず1にしておきます。
このアプリケーションはポート番号8080を使うので『Add Port』をクリックします。
ここで一緒に外部と接続するためのリソースのServiceを作成することができるようなので、コンテナが待ち受けるポート8080とプロトコル、外部から待ち受けるポート80を設定します。
PodとServiceを紐付けるためにラベルが必要なので『pod』に表示を切り替えてラベルの設定をしましょう。
手動で設定かなと思ったら自動で入ってましたのでこれを使ってみることにしました。
この辺は普段yamlを書いている人なら使いたい値だけ入れればいいのですが、何も知らない人が使ってもさっぱりわからないと思うのでKubernetesの経験者が扱うツールなのだなぁと実感しますね。
『Create』から作成します。
作成を実行すると以下のように、DeploymentsとPodにそれぞれリソースが作成されます。
作成したら実機を見てみましょう。
それぞれリソースが作成されていますね。
Podにはラベルが付与されています。
ServiceにはPodに付与されたラベルがSELECTORにセットされています。
では、ちゃんと接続できるかEXTERNAL-IPに表示されているIPへブラウザからアクセスしてみます。
ちゃんと動いていてくれていますね。
動くかどうか若干不安ではあったんですが問題がないようでほっとしました。
結構素直に動いてくれてありがたいです。
私は正直もうyamlを書くことの方に慣れてしまったのでyamlを書いたほうがしっくりくる体質になっているのですが、GUIで完結できそうなのはいろんな人が使う上ではいいのかなと思います。

今回は以上です。

参考情報
https://github.com/kubernetes-up-and-running/kuard