このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
Kubernetes ネットワークポリシーにより Pod トラフィックを制限する
デフォルトでは、Kubernetes の IP アドレス、ポート、クラスター内の Pod 間の接続、またはポッドと他のネットワークのリソースの接続に制限はありません。Kubernetes ネットワークポリシーを使用して、自分の Pod 間で送受信されるネットワークトラフィックを制限できます。詳細については、Kubernetes ドキュメントの「ネットワークポリシー
クラスターの Amazon VPC CNI plugin for Kubernetes のバージョンが 1.13
以前の場合、Kubernetes ネットワークポリシーをクラスターに適用するには、サードパーティーソリューションを実装する必要があります。バージョン 1.14
以降のプラグインではネットワークポリシーを実装できるため、サードパーティソリューションを使用する必要はありません。このトピックでは、サードパーティーのアドオンを使用せずにクラスターの Kubernetes ネットワークポリシーを使用するようにクラスターを構成する方法を説明します。
Amazon VPC CNI plugin for Kubernetes のネットワークポリシーは、次の構成でサポートされています。
-
バージョン
1.25
以降の Amazon EKS クラスター。 -
クラスター上の Amazon VPC CNI plugin for Kubernetes のバージョン 1.14 以降。
-
IPv4
またはIPv6
アドレス用に設定されたクラスター。 -
ポッド用のセキュリティグループでネットワークポリシーを使用できます。ネットワークポリシーを使用すると、クラスター内の通信をすべて制御できます。Pod 用のセキュリティグループを使用すると、Pod 内のアプリケーションから AWS サービスへのアクセスを制御できます。
-
カスタムネットワークおよびプレフィクス委任でネットワークポリシーを使用できます。
考慮事項
アーキテクチャ
-
Amazon VPC CNI plugin for Kubernetes を含むクラスターに Amazon VPC CNI plugin for Kubernetes ネットワークポリシーを適用する場合、Amazon EC2 Linux ノードにのみポリシーを適用できます。Fargate または Windows ノードにはポリシーを適用できません。
-
ネットワークポリシーは
IPv4
またはIPv6
アドレスのいずれかのみを適用しますが、両方は適用しません。IPv4
クラスターではVPC CNI はIPv4
アドレスをポッドに割り当て、IPv4
ポリシーを適用します。IPv6
クラスターではVPC CNI はIPv6
アドレスをポッドに割り当て、IPv6
ポリシーを適用します。IPv6
クラスターに適用されたIPv4
ネットワークポリシールールは無視されます。IPv4
クラスターに適用されたIPv6
ネットワークポリシールールは無視されます。
ネットワークポリシー
-
ネットワークポリシーはデプロイの一部である Pod にのみ適用されます。
metadata.ownerReferences
セットを持たないスタンドアロンの Pod ではネットワークポリシーを適用できません。 -
同じ Pod に複数のネットワークポリシーを適用できます。同じ Pod を選択するポリシーが 2 つ以上設定されている場合、すべてのポリシーが Pod に適用されます。
-
ネットワークポリシーの各
ingress:
またはegress:
セレクターの各プロトコルにおけるポートの一意の組み合わせの最大数は 24 です。 -
どの Kubernetes サービスでも、サービスポートはコンテナポートと同じでなければなりません。名前付きポートを使用している場合はサービス仕様でも同じ名前を使用してください。
移行
-
クラスターが現在サードパーティーソリューションを使用して Kubernetes ネットワークポリシーを管理している場合、同じポリシーを Amazon VPC CNI plugin for Kubernetes で使用できます。ただし、同じポリシーを管理しないように、既存のソリューションを削除する必要があります。
インストール
-
ネットワークポリシー機能では
policyendpoints.networking.k8s.aws
と呼ばれるPolicyEndpoint
カスタムリソース定義 (CRD が作成され、必要になります。カスタムリソースのPolicyEndpoint
オブジェクトは Amazon EKS によって管理されます。これらのリソースを変更または削除しないでください。 -
インスタンスロールの IAM 認証情報を使用するポッドを実行するか、EC2 IMDS に接続するポッドを実行する場合はEC2 IMDS へのアクセスをブロックするネットワークポリシーがないか慎重に確認してください。EC2 IMDS へのアクセスを許可するネットワークポリシーを追加する必要がある場合があります。詳細については「Amazon EC2 ユーザーガイド」の「インスタンスメタデータとユーザーデータ」を参照してください。
サービスアカウントの IAM ロールまたは EKS Pod Identity を使用するポッドはEC2 IMDS にアクセスしません。
-
Amazon VPC CNI plugin for Kubernetes は、各ポッドの追加のネットワークインターフェイスにはネットワークポリシーを適用せず、各ポッドのプライマリインターフェイス (
eth0
) のみにネットワークポリシーを適用します。これは以下のアーキテクチャに影響します:-
ENABLE_V4_EGRESS
変数がtrue
に設定されたIPv6
ポッド。この変数により、IPv4
エグレス機能が IPv6 ポッドをクラスター外のエンドポイントなどのIPv4
エンドポイントに接続できるようになります。IPv4
エグレス機能は、ローカルループバック IPv4 アドレスを持つ追加のネットワークインターフェースを作成することで機能します。 -
Multus などのチェーンネットワークプラグインを使用する場合。これらのプラグインは各ポッドにネットワークインターフェースを追加するため、ネットワークポリシーはチェーンネットワークプラグインには適用されません。
-