Kubernetes ネットワークポリシーによりpodトラフィックを制限する - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

Kubernetes ネットワークポリシーによりpodトラフィックを制限する

デフォルトでは、Kubernetes の IP アドレス、ポート、クラスター内の Pods 間の接続、または Pods と他のネットワークのリソースの接続に制限はありません。Kubernetes ネットワークポリシーを使用して、お客様の Pods 間で送受信されるネットワークトラフィックを制限できます。詳細については、「Kubernetes のドキュメント」の「ネットワークポリシー」を参照してください。

クラスターの Amazon VPC CNI plugin for Kubernetes のバージョンが 1.13 以前の場合、Kubernetes ネットワークポリシーをクラスターに適用するには、サードパーティーソリューションを実装する必要があります。バージョン 1.14 以降のプラグインでは、ネットワークポリシーを実装できるため、サードパーティソリューションを使用する必要はありません。このトピックでは、サードパーティのアドオンを使用せずにクラスターの Kubernetes ネットワークポリシーを使用するようにクラスターを構成する方法を説明します。

Amazon VPC CNI plugin for Kubernetes のネットワークポリシーは、次の設定でサポートされています。

  • バージョン 1.25 以降の Amazon EKS クラスター。

  • クラスターのバージョン 1.14 以降の Amazon VPC CNI plugin for Kubernetes。

  • IPv4 または IPv6 アドレス用に設定されたクラスター。

  • Pods 用のセキュリティグループでネットワークポリシーを使用できます。ネットワークポリシーを使用すると、クラスター内の通信をすべて制御できます。Pods 用のセキュリティグループを使用すると、Pod 内のアプリケーションから AWS のサービスへのアクセスを制御できます。

  • カスタムネットワークおよびプレフィクス委任でネットワークポリシーを使用できます。

考慮事項

  • Amazon VPC CNI plugin for Kubernetes を含むクラスターに Amazon VPC CNI plugin for Kubernetes ネットワークポリシーを適用する場合、Amazon EC2 Linux ノードにのみポリシーを適用できます。Fargate または Windows ノードにはポリシーを適用できません。

  • クラスターが現在サードパーティーソリューションを使用して Kubernetes ネットワークポリシーを管理している場合、同じポリシーを Amazon VPC CNI plugin for Kubernetes で使用できます。ただし、同じポリシーを管理しないように、既存のソリューションを削除する必要があります。

  • 同じPodに複数のネットワークポリシーを適用できます。同じPodを選択するポリシーが 2 つ以上設定されている場合、すべてのポリシーがPodに適用されます。

  • ネットワークポリシーの各 ingress: または egress: セレクターの各プロトコルにおけるポートの一意の組み合わせの最大数は 24 です。

  • どの Kubernetes サービスでも、サービスポートはコンテナポートと同じでなければなりません。名前付きポートを使用している場合は、サービス仕様でも同じ名前を使用してください。

  • ネットワークポリシー機能では、policyendpoints.networking.k8s.aws と呼ばれる PolicyEndpoint カスタムリソース定義  (CRD) が作成され、必要になります。カスタムリソースの PolicyEndpoint オブジェクトは Amazon EKS によって管理されます。これらのリソースを変更または削除しないでください。

  • インスタンスロールの IAM 認証情報を使用するポッドを実行するか、EC2 IMDS に接続するポッドを実行する場合は、EC2 IMDS へのアクセスをブロックするネットワークポリシーがないか慎重に確認してください。EC2 IMDS へのアクセスを許可するネットワークポリシーを追加する必要がある場合があります。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスメタデータとユーザーデータ」を参照してください。

    サービスアカウントの IAM ロールを使用するポッドが、EC2 IMDS にアクセスすることはありません。

  • Amazon VPC CNI plugin for Kubernetes は、各ポッドの追加のネットワークインターフェイスにはネットワークポリシーを適用せず、各ポッドのプライマリインターフェイス (eth0) のみにネットワークポリシーを適用します。これは以下のアーキテクチャに影響します。

    • ENABLE_V4_EGRESS 変数が true に設定された IPv6 ポッド。この変数により、IPv4 エグレス機能が IPv6 ポッドをクラスター外のエンドポイントなどの IPv4 エンドポイントに接続できるようになります。IPv4 エグレス機能は、ローカルループバック IPv4 アドレスを持つ追加のネットワークインターフェースを作成することで機能します。

    • Multus などのチェーンネットワークプラグインを使用する場合。これらのプラグインは各ポッドにネットワークインターフェースを追加するため、ネットワークポリシーはチェーンネットワークプラグインには適用されません。