Kubernetes 入門コース / Chapter 09

NodePortによる一時公開

ServiceにNodeのポートという入口を足し、MacからAPIへ到達する経路を実際に確かめる章です。検証用の公開と本番のHTTP入口を分けて理解します。

この章で学ぶこと
  1. NodePortはClusterIP ServiceにNode単位の外部入口を追加する。
  2. Node IP:nodePort → Service → Ready Podの矢印で通信経路を確認する。
  3. 恒常的なHTTP公開はIngressへ進め、NodePortは検証に留める。

01NodePortはServiceへ外部入口を足す

Node IP:nodePortから、selectorに一致するReady Podまで到達する。

NodePortでMacからPodへ届く通信経路
NodePortはPodを直接公開せず、Serviceの入口をNodeにも作る。

`type: NodePort`にすると、既存ServiceのselectorとtargetPortを保ったまま、各Nodeのポートが外部入口になる。PodのIPやDeploymentを公開する設定ではない。

判断できるようになること:NodePortを「ClusterIPを含むServiceに外部入口を追加する方式」と説明できる。

02MinikubeのIPと割当ポートで疎通を取る

Serviceの状態を読んで、Macから到達できるURLを組み立てる。

NodePortを確認してcurlする手順
URLはNodeのIPとServiceに表示されたnodePortを組み合わせる。

`kubectl get svc`でTYPEとPORT(S)を確認し、`minikube ip`でNode IPを取得する。`http://<node-ip>:<nodePort>`へのcurlがHTTP応答を返せば、外部からServiceまでの経路を確認できる。

失敗時は、Service type → EndpointsのReady Pod → Node IP/Port → HTTP応答の順に1段ずつ切り分ける。

03NodePortで終わらず、Ingressへ入口を移す

ポート直公開の制約を知り、HTTPの責務をIngress Controllerへ分ける。

NodePortとIngressで異なる公開責務
NodePortは検証の直接入口、IngressはHTTP公開のルールを担当する。

NodePort単体はドメイン、TLS終端、ホスト・パス別ルーティングを担わない。次章ではServiceをClusterIPへ戻し、IngressとIngress ControllerにHTTP入口を任せる。

NodePortは「早く届くかを確かめる」ため、Ingressは「HTTPを安全に公開する」ため、と使い分ける。

章のまとめ

  1. NodePortはServiceにNode単位の外部入口を加える検証向けの方式である。
  2. Service、Ready Pod、Node IP/Port、HTTP応答の順で通信を確認する。
  3. 恒常的なHTTP公開はIngressへ進め、責務を分ける。