NSX で多様な K8s 環境のネットワークを統合管理
VMware はコンテナネットワーキング向けのソリューションとして、IaaS、CaaS からアプリケーション層に至る様々なレイヤの製品をご提供しています。
- Kubernetes を下支えする IaaS/vSphere 環境のネットワーク&セキュリティ機能である NSX-T DataCenter と、ロードバランサー機能である NSX-ALB (Advanced LoadBalancer)
- Kubernetes のクラスターネットワーキング機能として NSX-T を活用する NCP (NSX Container Plugin)
- Tanzu 製品群にも組み込まれているオープンソースの CNI である Antrea
- NSX ALB を外部 LB として利用し、Service LoadBalancer や Ingress 機能を実現する AKO (Avi Kubernetes Operator)
- Pod のサイドカープロキシーとして動作するサービスメッシュ技術により、コンテナレベルでのネットワーキングとセキュリティを提供する Tanzu Service Mesh。
2021 年末に提供開始した NSX-T 3.2では、Antrea CNI を備えた K8s クラスタを NSX-T に統合し、Antrea 特有のセキュリティ、トラブルシューティングといった機能を NSX Manager から実行できるようになりました。このブログでは、この Antrea 連携の機能詳細や利点をご紹介します。
Antrea とは
Antrea はオープンソースの CNI であり、L3/4 のネットワーク機能とセキュリティ機能、運用機能を提供しています。2021 年には CNCF Sandbox Project の一つになっています。
- Antrea Home: https://antrea.io/
- GitHub: https://github.com/antrea-io/antrea
Antrea の特徴は、同じくオープンソースで実績ある仮想スイッチ Open vSwitch をデータプレーンに採用し、様々な高度なネットワーク機能を利用可能なことです。例えば Antrea では拡張されたネットワークポリシーである AntreaClusterNetworkPolicy (ACNP) を使えば、NSX-T の分散ファイアウォールと同様のファイアウォール機能を K8s Pod に提供できます。
NCP と Antrea の違い
NCP は vSphere 基盤上で K8s クラスタノードを動作させる場合に、ハイパーバイザ上の NSX-T 仮想スイッチとオーバレイネットワークに直接ノード上の Pod を接続する仕組みです(下図)。この仕組みでは NSX-T が持つ柔軟なネットワーク設定機能やマイクロセグメンテーションによる強固なセキュリティ機能を Pod レベルで利用できましたが、vSphere および NSX-T がある環境 (VMware SDDC や VCF) でしか利用できないという欠点がありました。
Antrea は NCP と同様の機能性を K8s ノード内の OpenvSwitch で実行することを目指しており、非 SDDC 環境やパブリッククラウドでも利用できるように作られています。一方で、Antrea のコントロールプレーンは各 K8s クラスタに閉じており、NSX-T が持っているような複数のクラスタにまたがったネットワーク設定やセキュリティポリシーの管理機能は持っていません。
NSX-T の Antrea 連携では、NSX の管理プレーンに Antrea ベースの K8s クラスタを登録することにより、複数の Antrea クラスタのセキュリティポリシー設定を NSX Manager に統合し、K8s 環境のインベントリ管理やトレースフロー等のトラブルシューティング機能を NSX UI や API から実施することを可能にします。エンタープレイズのネットワーク管理者は、パブリッククラウドなど様々な環境に展開される K8s クラスタの管理を既存の NSX Manager に統合することが可能になります。
動作環境と条件
NSX-T の Antrea 連携は2022年3月現在、以下の組み合わせでご利用可能となっています。
- NSX-T 3.2.0.1
- Antrea 1.3.1-1.2.3
- このバージョンの Antrea が動作する Kubernetes クラスタ
Tanzu Kubernetes Grid では 1.5 以降のバージョンでサポートされています。vSphere with Tanzu の TKG Services でもサポートされる予定です。
なお、Antrea 連携を利用するには NSX-T に以下のライセンスのいずれかが必要です。
- NSX Advanced
- NSX Enterprise Plus
- Antrea Enterprise Standalone
Antrea-NSX 連携を使用するための設定方法を以下のブログでご紹介していますので、こちらもご参照いただけると幸いです。
アーキテクチャ
Antrea 連携を有効にするには、まず K8s クラスタ側に Antrea のコントロールプレーン(下図の薄緑部)をインストールした後、NSX Manager とのアダプタとなるモジュール(Antrea NSX Adapter、下図の濃緑部)を展開します。このコンテナが NSX Manager と K8s API の間を仲介し、Antrea Controller からの情報収集を行います。
Antrea 連携で利用できる機能
では、Antrea 連携で利用できるようになる主な機能をご紹介していきます。
1. K8s クラスタのインベントリ収集と表示
NSX-T UI で Antrea クラスタ内の構成情報を収集・表示することができます。以下はコンテナクラスタを表示したUIです。Antrea クラスタではCNI タイプが “Antrea” と表示されます。
この画面から、さらにクラスタ内の詳細なインベントリ情報(ノード、ネームスペース、ポッド、サービス等)にドリルダウンすることができます。例えば以下はノードの一覧表示です。
こちらは Pod の一覧表示です。
2. ネットワークセキュリティ – ネットワークポリシーとグルーピングの設定
NSX と連携している K8s クラスタでは、NSX-T の分散ファイアウォール (DFW) と同様の操作で AntreaClusterNetworkPolicy (ACNP) を設定することができ、コンテナ間通信の制御が NSX の UI からできるようになっています。K8s での ACNP 設定の詳細は、こちらの記事もご参照ください。ここでは NSX-T UI を用いた ACNP の設定についてご紹介していきます。
NSX DFW には VM などのネットワークエンドポイントを柔軟にグルーピングする仕組みがありますが、Antrea 連携機能では Pod をグルーピングする機能が追加されています。以下は NSX インベントリでのグループの設定画面ですが、 “Antrea” グループタイプが追加されており、Antrea クラスタで有効な Pod のグループを設定できます。
グルーピング基準としては “名前空間(Namespace)”, “サービス(Service)”, “ポッド(Pod)” の3種類が選択でき、組み合わせて利用することが可能です。 “名前空間” と “ポッド” の場合はタグ (K8s Label) を利用したグルーピングも可能です。
Antrea のグルーピングは K8s 上では ClusterGroup カスタムリソースとして実現されますが、このグループを NSX で保存しただけではClusterGroup は作成されませんのでご注意下さい。以下で説明する DFW ポリシーを作成し、特定の Antrea クラスタ上で有効化した段階でClusterGroup も有効になり、Pod のメンバーシップが確定します。
次に Antrea DFW ポリシーの設定を見ていきます。
NSX-T の分散ファイアウォール UI で、Antrea クラスタに適用するポリシーを設定します。
通常、DFW ポリシーの適用先は “分散ファイアウォール(DFW)” がデフォルトで選択されていますが、Antrea クラスタに適用する場合はここをクリックし、以下の画面で適用先の Antrea クラスタを選択します。
ポリシーの適用先に選択したクラスタが設定されます。
さらに、ポリシーの中にルールを追加します。設定方法は DFW ルールとほぼ同じですが、Antrea 独特の設定ルールがあり、 “送信元” を指定する場合はターゲットは “宛先” ではなく “適用先” に指定します( “宛先” は任意のまま)。同様に “宛先” を指定する場合はソースは “送信元” ではなく “適用先” で指定します( “送信元” は任意のまま)。
以下は “送信元” として “guestbook” グループを選択している例です。
Antrea ポリシールールでは DFW 同様に “許可(accept)”, “ドロップ(drop)”, “却下(reject)” の3種類のアクションが選択できます。
設定完了後、 “発行” を押してポリシーとルールを適用します。
ルールが有効になっている場合、使用しているグループのメンバーシップを表示すると、以下のようにポッドが選択されていることがわかります。
また実際にポッド間にトラフィックがある場合は、設定したポリシーの右端のグラフアイコンをクリックし、ルールやフローの統計情報のアップデートを確認することができます。
なお、これまでのところ Antrea DFW ポリシーは1つのクラスタ内でのみ有効です。クラスタをまたがったポリシーはまだ作成できないのでご注意ください。
3. トレーフローによるコンテナ間通信のトラブルシュート
Antrea には Traceflow という機能があり、Pod から擬似トラフィックを生成して指定したエンドポイントとの疎通性を実際に確認することができます。NSX-T にも同名の機能がありますが、Antrea Traceflow はその K8s 向け拡張といった位置づけになります。
この機能も NSX UI から設定してテストを行うことができます。以下のように、NSX のトレスフロー画面のスイッチで “ANTREAトレースフロー” に切り替え、テスト対象のクラスタ、プロトコルタイプ、送信元と宛先などを指定してトレースを行います。
送信元として選択できるのはポッドのみ、宛先はポッド、サービス、IP アドレスが指定可能です。(ICMP の場合はサービスは指定できない)
以下はポッド間の ICMP トレースを実施した結果の一例です。最終ホップが緑色で “配信済み” と表示されているので、トレースに成功したことが分かります。Antrea 内のどのようなコンポーネントを通過したかも記録されています。
失敗した場合は、失敗したポイントが原因とともに表示されます。以下の例では、Antrea ポリシーでトラフィックがドロップされたために失敗していることが分かります。
終わりに
本ブログでは NSX-T の Antrea CNI 連携がご提供する機能をご紹介しました。まだ新しい機能ではありますが、VMware のマルチクラウドソリューションを実現するための重要な仕組みであり、さらなる追加機能の提供も予定されています。Tanzu 製品群のサポートも強化されていきますので、拡大する Kubernetes 環境のネットワーク統合管理をご検討されている方はぜひお試しいただければと思います。
〜お知らせ〜
※VMwareでは、各種製品をクラウド上でご評価いただける Hands-on Labs (HOL) を無償でご提供しています。
今回ご紹介した各種ソリューションへの入り口としてぜひご活用下さい。(Antrea連携機能のHOLはまだご提供しておりません)