こんにちは!ネットワールドSE殿貝です。
今日は、vSphere環境上で構成されるKubernetesクラスタ(VKSクラスタ)内で設定するEgress IPの設定について、触れていきます。
Egress IPとは?
Pod がクラスタ外へ出ていく通信の “送信元IP(Source IP)” を固定する仕組みです。
Egress IPを設定することで、Pod の外向き通信を指定した SNAT IP にします。
Egress IPを設定していない場合だと、Podの送信元IPはVKSクラスタを構成するWorkerのIPアドレスとなります。

Egress IPを設定すると指定したIPアドレスで外に出ていきます。

では、実際に試してみましょう。ここでは、VKSクラスタとPodは事前に作成済としています。
WorkerのIPを確認してみます。

ハイライトしている部分がWorkerのIPアドレスです。今回は、第4オクテットが.9 .10 になっていることがわかります。
外部のサーバにPingを打ってみます。外部のサーバではtcpdumpでどのIPから通信が来ているか確認します。

.9 から打たれていることがわかりました。
では、Egress IPの設定をしていきます。
Egressの設定には以下が必要になります。
- External IP Pool
割り当てる送信元IPの範囲の設定 - Egress
どのアプリケーションに、External IP Poolで指定したIPアドレスを割り当てるかの設定
今回は以下のようにExternal IP Poolには、.110を設定し、作成したPodに割り当てる設定を実施しました。

先ほどと同じように外部サーバに向けてPingを打ってみます。

送信元IPが期待通りに.110になっていることを確認できました。
この設定を利用すれば、アプリケーションがどのWokerで動いているのか関係なく、送信元IPアドレスを固定することが可能になります。
VKSクラスタのCNIには標準でantreaが利用されます。
今回試した機能はantreaの機能の一つです。
その他の機能や設定ファイルの詳細などはantreaのドキュメントも参照してみてください。
https://antrea.io/docs/main/docs/egress/
ではまた、次回に~