6.2. ネットワークポリシー
6.2.1. ネットワークポリシーについて リンクのコピーリンクがクリップボードにコピーされました!
開発者は、クラスター内の Pod へのトラフィックを制限するネットワークポリシーを定義できます。
6.2.1.1. ネットワークポリシーについて リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、プロジェクトのすべての Pod は他の Pod およびネットワークのエンドポイントからアクセスできます。プロジェクトで 1 つ以上の Pod を分離するには、そのプロジェクトで NetworkPolicy
オブジェクトを作成し、許可する着信接続を指定します。プロジェクト管理者は独自のプロジェクト内で NetworkPolicy
オブジェクトの作成および削除を実行できます。
Pod が 1 つ以上の NetworkPolicy
オブジェクトのセレクターで一致する場合、Pod はそれらの 1 つ以上の NetworkPolicy
オブジェクトで許可される接続のみを受け入れます。NetworkPolicy
オブジェクトによって選択されていない Pod は完全にアクセス可能です。
ネットワークポリシーは、Transmission Control Protocol (TCP)、User Datagram Protocol (UDP)、Internet Control Message Protocol (ICMP)、および Stream Control Transmission Protocol (SCTP) プロトコルにのみ適用されます。他のプロトコルは影響を受けません。
- ネットワークポリシーは、ホストのネットワーク namespace には適用されません。ホストネットワークが有効にされている Pod はネットワークポリシールールによる影響を受けません。ただし、ホストネットワークを使用する Pod に接続する Pod は、ネットワークポリシールールの影響を受ける可能性があります。
-
podSelector
フィールドを{}
に設定せずにnamespaceSelector
フィールドを使用すると、hostNetwork
Pod が含まれません。ネットワークポリシーの作成時にhostNetwork
Pod をターゲットにするには、namespaceSelector
フィールドでpodSelector
を{}
に設定して使用する必要があります。 - ネットワークポリシーは、ローカルホストまたは常駐ノードからのトラフィックをブロックすることはできません。
以下のサンプル NetworkPolicy
オブジェクトは、複数の異なるシナリオをサポートすることを示しています。
すべてのトラフィックを拒否します。
プロジェクトに deny by default (デフォルトで拒否) を実行させるには、すべての Pod に一致するが、トラフィックを一切許可しない
NetworkPolicy
オブジェクトを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Dedicated Ingress コントローラーからの接続のみを許可します。
プロジェクトで OpenShift Dedicated Ingress Controller からの接続のみを許可するには、次の
NetworkPolicy
オブジェクトを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクト内の Pod からの接続のみを受け入れます。
重要同じ namespace 内の
hostNetwork
Pod からの Ingress 接続を許可するには、allow-from-hostnetwork
ポリシーとallow-same-namespace
ポリシーを一緒に適用する必要があります。Pod が同じプロジェクト内の他の Pod からの接続を受け入れるが、他のプロジェクトの Pod からの接続を拒否するように設定するには、以下の
NetworkPolicy
オブジェクトを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod ラベルに基づいて HTTP および HTTPS トラフィックのみを許可します。
特定のラベル (以下の例の
role=frontend
) の付いた Pod への HTTP および HTTPS アクセスのみを有効にするには、以下と同様のNetworkPolicy
オブジェクトを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace および Pod セレクターの両方を使用して接続を受け入れます。
namespace と Pod セレクターを組み合わせてネットワークトラフィックのマッチングをするには、以下と同様の
NetworkPolicy
オブジェクトを使用できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
NetworkPolicy
オブジェクトは加算されるものです。つまり、複数の NetworkPolicy
オブジェクトを組み合わせて複雑なネットワーク要件を満すことができます。
たとえば、先の例で定義された NetworkPolicy
オブジェクトの場合、同じプロジェト内に allow-same-namespace
と allow-http-and-https
ポリシーの両方を定義することができます。これにより、ラベル role=frontend
の付いた Pod は各ポリシーで許可されるすべての接続を受け入れます。つまり、同じ namespace の Pod からのすべてのポート、およびすべての namespace の Pod からのポート 80
および 443
での接続を受け入れます。
6.2.1.1.1. allow-from-router ネットワークポリシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の NetworkPolicy
を使用して、ルーターの設定に関係なく外部トラフィックを許可します。
- 1
policy-group.network.openshift.io/ingress:""
ラベルは OVN-Kubernetes をサポートします。
6.2.1.1.2. allow-from-hostnetwork ネットワークポリシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の allow-from-hostnetwork
NetworkPolicy
オブジェクトを追加して、ホストネットワーク Pod からのトラフィックを転送します。
6.2.1.2. OVN-Kubernetes ネットワークプラグインによるネットワークポリシーの最適化 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークポリシーを設計する場合は、以下のガイドラインを参照してください。
-
同じ
spec.podSelector
仕様を持つネットワークポリシーの場合、ingress
ルールまたはegress
ルールを持つ複数のネットワークポリシーを使用するよりも、複数のIngress
ルールまたはegress
ルールを持つ 1 つのネットワークポリシーを使用する方が効率的です。 podSelector
またはnamespaceSelector
仕様に基づくすべてのIngress
またはegress
ルールは、number of pods selected by network policy + number of pods selected by ingress or egress rule
に比例する数の OVS フローを生成します。そのため、Pod ごとに個別のルールを作成するのではなく、1 つのルールで必要な数の Pod を選択できるpodSelector
またはnamespaceSelector
仕様を使用することが推奨されます。たとえば、以下のポリシーには 2 つのルールが含まれています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のポリシーは、上記と同じ 2 つのルールを 1 つのルールとして表現しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同じガイドラインが
spec.podSelector
仕様に適用されます。異なるネットワークポリシーに同じingress
ルールまたはegress
ルールがある場合、共通のspec.podSelector
仕様で 1 つのネットワークポリシーを作成する方が効率的な場合があります。たとえば、以下の 2 つのポリシーには異なるルールがあります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のネットワークポリシーは、上記と同じ 2 つのルールを 1 つのルールとして表現しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この最適化は、複数のセレクターを 1 つのセレクターとして表現する場合に限り適用できます。セレクターが異なるラベルに基づいている場合、この最適化は適用できない可能性があります。その場合は、ネットワークポリシーの最適化に特化して新規ラベルをいくつか適用することを検討してください。
6.2.1.2.1. OVN-Kubernetes の NetworkPolicy CR と外部 IP リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes では、NetworkPolicy
カスタムリソース (CR) によって厳密な分離ルールが適用されます。サービスが外部 IP を使用して公開されている場合、トラフィックを許可するように明示的に設定されていない限り、ネットワークポリシーによって他の namespace からのアクセスがブロックされる可能性があります。
namespace をまたいで外部 IP へのアクセスを許可するには、必要な namespace からの Ingress を明示的に許可し、指定されたサービスポートへのトラフィックが許可されるようにする NetworkPolicy
CR を作成します。必要なポートへのトラフィックを許可しなければ、アクセスが制限される可能性があります。
出力例
ここでは、以下のようになります。
<policy_name>
- ポリシーの名前を指定します。
<my_namespace>
- ポリシーがデプロイされる namespace の名前を指定します。
詳細は、「ネットワークポリシーについて」を参照してください。
6.2.1.3. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
6.2.2. ネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
admin
ロールを持つユーザーは、namespace のネットワークポリシーを作成できます。
6.2.2.1. サンプル NetworkPolicy オブジェクト リンクのコピーリンクがクリップボードにコピーされました!
以下は、サンプル NetworkPolicy オブジェクトにアノテーションを付けます。
6.2.2.2. CLI を使用したネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスターの namespace に許可される Ingress または Egress ネットワークトラフィックを記述する詳細なルールを定義するには、ネットワークポリシーを作成できます。
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意の namespace でネットワークポリシーを作成できます。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが適用される namespace で作業している。
手順
ポリシールールを作成します。
<policy_name>.yaml
ファイルを作成します。touch <policy_name>.yaml
$ touch <policy_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<policy_name>
- ネットワークポリシーファイル名を指定します。
作成したばかりのファイルで、以下の例のようなネットワークポリシーを定義します。
すべての namespace のすべての Pod から Ingress を拒否します。
これは基本的なポリシーであり、他のネットワークポリシーの設定によって許可されたクロス Pod トラフィック以外のすべてのクロス Pod ネットワーキングをブロックします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同じ namespace のすべての Pod から Ingress を許可する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の namespace から 1 つの Pod への Ingress トラフィックを許可する
このポリシーは、
namespacey
で実行されている Pod からpod-a
ラベルを持つ Pod へのトラフィックを許可します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ネットワークポリシーオブジェクトを作成するには、以下のコマンドを入力します。成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。oc apply -f <policy_name>.yaml -n <namespace>
$ oc apply -f <policy_name>.yaml -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<policy_name>
- ネットワークポリシーファイル名を指定します。
<namespace>
- オプションのパラメーター。現在の namespace 以外の namespace にオブジェクトを定義した場合、namespace を指定してパラメーターを指定します。
成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。
cluster-admin
権限で Web コンソールにログインする場合、YAML で、または Web コンソールのフォームから、クラスターの任意の namespace でネットワークポリシーを直接作成できます。
6.2.2.3. デフォルトの全拒否ネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
このポリシーは、デプロイされた他のネットワークポリシーの設定によって許可されたネットワークトラフィックと、ホストネットワークを使用する Pod 間のトラフィック以外のすべての Pod 間ネットワークをブロックします。この手順では、my-project
namespace に deny-by-default
ポリシーを適用することにより、強力な拒否ポリシーを強制します。
トラフィック通信を許可する NetworkPolicy
カスタムリソース (CR) を設定しない場合、次のポリシーによってクラスター全体で通信問題が発生する可能性があります。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが適用される namespace で作業している。
手順
すべての namespace におけるすべての Pod からの Ingress を拒否する
deny-by-default
ポリシーを定義する次の YAML を作成します。YAML をdeny-by-default.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ポリシーを適用します。成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。oc apply -f deny-by-default.yaml
$ oc apply -f deny-by-default.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。
6.2.2.4. 外部クライアントからのトラフィックを許可するネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
deny-by-default
ポリシーを設定すると、外部クライアントからラベル app=web
を持つ Pod へのトラフィックを許可するポリシーの設定に進むことができます。
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意の namespace でネットワークポリシーを作成できます。
この手順に従って、パブリックインターネットから直接、またはロードバランサーを使用して Pod にアクセスすることにより、外部サービスを許可するポリシーを設定します。トラフィックは、ラベル app=web
を持つ Pod にのみ許可されます。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが適用される namespace で作業している。
手順
パブリックインターネットからのトラフィックが直接、またはロードバランサーを使用して Pod にアクセスできるようにするポリシーを作成します。YAML を
web-allow-external.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ポリシーを適用します。成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。oc apply -f web-allow-external.yaml
$ oc apply -f web-allow-external.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。このポリシーは、次の図に示すように、外部トラフィックを含むすべてのリソースからのトラフィックを許可します。
6.2.2.5. すべての namespace からアプリケーションへのトラフィックを許可するネットワークポリシーを作成する リンクのコピーリンクがクリップボードにコピーされました!
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意の namespace でネットワークポリシーを作成できます。
この手順に従って、すべての namespace 内のすべての Pod から特定のアプリケーションへのトラフィックを許可するポリシーを設定します。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが適用される namespace で作業している。
手順
すべての namespace のすべての Pod から特定のアプリケーションへのトラフィックを許可するポリシーを作成します。YAML を
web-allow-all-namespaces.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、ポリシーオブジェクトに
namespaceSelector
パラメーターを指定しないと、namespace は選択されません。これは、ポリシーがネットワークポリシーがデプロイされる namespace からのトラフィックのみを許可することを意味します。次のコマンドを入力して、ポリシーを適用します。成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。oc apply -f web-allow-all-namespaces.yaml
$ oc apply -f web-allow-all-namespaces.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。
検証
次のコマンドを入力して、
default
namespace で Web サービスを開始します。oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
$ oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
alpine
イメージをsecondary
namespace にデプロイし、シェルを開始します。oc run test-$RANDOM --namespace=secondary --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=secondary --rm -i -t --image=alpine -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェルで次のコマンドを実行し、サービスが要求を許可していることを確認します。
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.2.6. namespace からアプリケーションへのトラフィックを許可するネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意の namespace でネットワークポリシーを作成できます。
特定の namespace からラベル app=web
を持つ Pod へのトラフィックを許可するポリシーを設定するには、次の手順に従います。以下の場合にこれを行うことができます。
- 実稼働データベースへのトラフィックを、運用ワークロードがデプロイされている namespace のみに制限します。
- 特定の namespace にデプロイされた監視ツールを有効にして、現在の namespace からメトリクスをスクレイピングします。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが適用される namespace で作業している。
手順
ラベルが
purpose=production
の特定の namespace 内にあるすべての Pod からのトラフィックを許可するポリシーを作成します。YAML をweb-allow-prod.yaml
ファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ポリシーを適用します。成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。oc apply -f web-allow-prod.yaml
$ oc apply -f web-allow-prod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功した出力には、ポリシーオブジェクトの名前と
作成された
ステータスが一覧表示されます。
検証
次のコマンドを入力して、
default
namespace で Web サービスを開始します。oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
$ oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
prod
namespace を作成します。oc create namespace prod
$ oc create namespace prod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
prod
namespace にラベルを付けます。oc label namespace/prod purpose=production
$ oc label namespace/prod purpose=production
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
dev
namespace を作成します。oc create namespace dev
$ oc create namespace dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
dev
namespace にラベルを付けます。oc label namespace/dev purpose=testing
$ oc label namespace/dev purpose=testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
alpine
イメージをdev
namespace にデプロイし、シェルを開始します。oc run test-$RANDOM --namespace=dev --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=dev --rm -i -t --image=alpine -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェルで次のコマンドを実行し、ブロックされた要求の理由を確認します。たとえば、予期される出力状態は
wget: download timed out
となっています。wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
alpine
イメージをprod
namespace にデプロイし、シェルを開始します。oc run test-$RANDOM --namespace=prod --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=prod --rm -i -t --image=alpine -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェルで次のコマンドを実行し、リクエストが許可されていることを確認します。
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.2.7. OpenShift Cluster Manager を使用したネットワークポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスターの namespace に許可される Ingress または egress ネットワークトラフィックを記述する詳細なルールを定義するには、ネットワークポリシーを作成できます。
前提条件
- OpenShift Cluster Manager にログインしている。
- OpenShift Dedicated クラスターを作成している。
- クラスターにアイデンティティープロバイダーを設定している。
- 設定したアイデンティティープロバイダーにユーザーアカウントを追加している。
- OpenShift Dedicated クラスター内にプロジェクトを作成しました。
手順
- OpenShift Cluster Manager で、アクセスするクラスターをクリックします。
- コンソールを開く をクリックして、OpenShift Web コンソールに移動します。
- アイデンティティープロバイダーをクリックし、クラスターにログインするためのクレデンシャルを指定します。
- 管理者の観点から、Networking の下の NetworkPolicies をクリックします。
- NetworkPolicy の作成 をクリックします。
- ポリシー名 フィールドにポリシーの名前を入力します。
- オプション: このポリシーが 1 つ以上の特定の Pod にのみ適用される場合は、特定の Pod のラベルとセレクターを指定できます。特定の Pod を選択しない場合、このポリシーはクラスター上のすべての Pod に適用されます。
- オプション: Deny all ingress traffic または Deny all egress traffic チェックボックスを使用して、すべてのイングレストラフィックとエグレストラフィックをブロックできます。
- イングレスルールとエグレスルールの任意の組み合わせを追加して、承認するポート、名前空間、または IP ブロックを指定することもできます。
Ingress ルールをポリシーに追加します。
Add ingress rule を選択して新規ルールを設定します。このアクションにより、受信トラフィックを制限する方法を指定できる Add allowed source ドロップダウンメニューを含む新しい Ingress ルール 行が作成されます。ドロップダウンメニューでは、Ingress トラフィックを制限する 3 つのオプションを利用できます。
- Allow pods from the same namespace では、空間内の Pod へのトラフィックが制限されます。namespace に Pod を指定できますが、このオプションは空のままにすると namespace の Pod からのすべてのトラフィックを許可します。
- Allow pods from inside the cluster では、ポリシーと同じクラスター内の Pod へのトラフィックが制限されます。インバウンドトラフィックを許可する名前空間と Pod を指定できます。このオプションを空白のままにすると、このクラスター内のすべての名前空間と Pod からのインバウンドトラフィックが許可されます。
- IP ブロックによるピアの許可 は、指定された Classless Inter-Domain Routing (CIDR) IP ブロックからのトラフィックを制限します。例外オプションを使用して、特定の IP をブロックできます。CIDR フィールドを空白のままにすると、すべての外部ソースからのすべてのインバウンドトラフィックが許可されます。
- すべての受信トラフィックをポートに制限できます。ポートを追加しない場合、トラフィックはすべてのポートにアクセスできます。
ネットワークポリシーにエグレスルールを追加します。
Add egress rule 選択して、新しいルールを設定します。このアクションにより、送信トラフィックを制限する方法を指定できる Add allowed destination"* する * ドロップダウンメニューを含む新しい Egress rule 行が作成されます。ドロップダウンメニューには、下りトラフィックを制限する 3 つのオプションがあります。
- Allow pods from the same namespace では、同じ namespace 内の Pod へのトラフィックが制限されます。namespace に Pod を指定できますが、このオプションは空のままにすると namespace の Pod からのすべてのトラフィックを許可します。
- Allow pods from inside the cluster では、ポリシーと同じクラスター内の Pod へのトラフィックが制限されます。アウトバウンドトラフィックを許可する namespace および Pod を指定できます。このオプションを空白のままにすると、このクラスター内のすべての名前空間と Pod からのアウトバウンドトラフィックが許可されます。
- Allow peers by IP block すると、指定された CIDR IP ブロックからのトラフィックが制限されます。例外オプションを使用して、特定の IP をブロックできます。CIDR フィールドを空白のままにすると、すべての外部ソースからのすべてのアウトバウンドが許可されます。
- すべてのアウトバウンドトラフィックをポートに制限できます。ポートを追加しない場合、トラフィックはすべてのポートにアクセスできます。
6.2.3. ネットワークポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
admin
ロールを持つユーザーは、namespace のネットワークポリシーを表示できます。
6.2.3.1. サンプル NetworkPolicy オブジェクト リンクのコピーリンクがクリップボードにコピーされました!
以下は、サンプル NetworkPolicy オブジェクトにアノテーションを付けます。
6.2.3.2. CLI を使用したネットワークポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
namespace のネットワークポリシーを検査できます。
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意のネットワークポリシーを表示できます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが存在する namespace で作業している。
手順
namespace のネットワークポリシーを一覧表示します。
namespace で定義されたネットワークポリシーオブジェクトを表示するには、以下のコマンドを実行します。
oc get networkpolicy
$ oc get networkpolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 特定のネットワークポリシーを検査するには、以下のコマンドを入力します。
oc describe networkpolicy <policy_name> -n <namespace>
$ oc describe networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<policy_name>
- 検査するネットワークポリシーの名前を指定します。
<namespace>
- オプション: オブジェクトが現在の namespace 以外の namespace に定義されている場合は namespace を指定します。
以下に例を示します。
oc describe networkpolicy allow-same-namespace
$ oc describe networkpolicy allow-same-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc describe
コマンドの出力Copy to Clipboard Copied! Toggle word wrap Toggle overflow
cluster-admin
権限で Web コンソールにログインする場合、YAML で、または Web コンソールのフォームから、クラスターの任意の namespace でネットワークポリシーを直接表示できます。
6.2.3.3. OpenShift Cluster Manager を使用したネットワークポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Cluster Manager でネットワークポリシーの設定の詳細を表示できます。
前提条件
- OpenShift Cluster Manager にログインしている。
- OpenShift Dedicated クラスターを作成している。
- クラスターにアイデンティティープロバイダーを設定している。
- 設定したアイデンティティープロバイダーにユーザーアカウントを追加している。
- ネットワークポリシーを作成しました。
手順
- OpenShift Cluster Manager Web コンソールの Administrator パースペクティブから、Networking の下にある NetworkPolicies をクリックします。
- 表示するネットワークポリシーを選択します。
- ネットワークポリシー の詳細ページで、関連付けられたすべての Ingress および egress ルールを表示できます。
ネットワークポリシーの詳細で YAML を選択して、ポリシー設定を YAML 形式で表示します。
注記これらのポリシーの詳細のみを表示できます。これらのポリシーは編集できません。
6.2.4. ネットワークポリシーの削除 リンクのコピーリンクがクリップボードにコピーされました!
admin
ロールを持つユーザーは、namespace からネットワークポリシーを削除できます。
6.2.4.1. CLI を使用したネットワークポリシーの削除 リンクのコピーリンクがクリップボードにコピーされました!
namespace のネットワークポリシーを削除できます。
cluster-admin
ロールを持つユーザーでログインしている場合、クラスター内の任意のネットワークポリシーを削除できます。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。 - ネットワークポリシーが存在する namespace で作業している。
手順
ネットワークポリシーオブジェクトを削除するには、以下のコマンドを入力します。成功した出力には、ポリシーオブジェクトの名前と
削除され
たステータスが一覧表示されます。oc delete networkpolicy <policy_name> -n <namespace>
$ oc delete networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<policy_name>
- ネットワークポリシーの名前を指定します。
<namespace>
- オプションのパラメーター。現在の namespace 以外の namespace にオブジェクトを定義した場合、namespace を指定してパラメーターを指定します。
成功した出力には、ポリシーオブジェクトの名前と
削除され
たステータスが一覧表示されます。
cluster-admin
権限で Web コンソールにログインする場合、YAML で、または Web コンソールの Actions メニューのポリシーから、クラスターの任意の namespace でネットワークポリシーを直接削除できます。
6.2.4.2. OpenShift Cluster Manager を使用したネットワークポリシーの削除 リンクのコピーリンクがクリップボードにコピーされました!
namespace のネットワークポリシーを削除できます。
前提条件
- OpenShift Cluster Manager にログインしている。
- OpenShift Dedicated クラスターを作成している。
- クラスターにアイデンティティープロバイダーを設定している。
- 設定したアイデンティティープロバイダーにユーザーアカウントを追加している。
手順
- OpenShift Cluster Manager Web コンソールの Administrator パースペクティブから、Networking の下にある NetworkPolicies をクリックします。
ネットワークポリシーを削除するには、次のいずれかの方法を使用します。
ネットワークポリシー テーブルからポリシーを削除します。
- ネットワークポリシー テーブルから、削除するネットワークポリシーの行にあるスタックメニューを選択し、NetworkPolicy の削除 をクリックします。
個々のネットワークポリシーの詳細から アクション ドロップダウンメニューを使用してポリシーを削除します。
- ネットワークポリシーの アクション ドロップダウンメニューをクリックします。
- メニューから Delete NetworkPolicy を選択します。
6.2.5. ネットワークポリシーを使用したマルチテナント分離の設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、マルチテナントネットワークの分離を実行するようにネットワークポリシーを設定できます。
このセクションで説明するようにネットワークポリシーを設定すると、以前のバージョンの OpenShift Dedicated における OpenShift SDN のマルチテナントモードと同様のネットワーク分離が実現します。
6.2.5.1. ネットワークポリシーを使用したマルチテナント分離の設定 リンクのコピーリンクがクリップボードにコピーされました!
他のプロジェクト namespace の Pod およびサービスから分離できるようにプロジェクトを設定できます。
前提条件
-
クラスターが、
mode: NetworkPolicy
が設定されたNetworkPolicy
オブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc
) がインストールされている。 -
admin
権限を持つユーザーとしてクラスターにログインしている。
手順
以下の
NetworkPolicy
オブジェクトを作成します。allow-from-openshift-ingress
という名前のポリシー:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記policy-group.network.openshift.io/ingress: ""
は、OVN-Kubernetes の推奨される namespace セレクターラベルです。allow-from-openshift-monitoring
という名前のポリシー。Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow-same-namespace
という名前のポリシー:Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow-from-kube-apiserver-operator
という名前のポリシー:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、新規の New
kube-apiserver-operator
webhook controller validating health of webhook を参照してください。
オプション: 以下のコマンドを実行し、ネットワークポリシーオブジェクトが現在のプロジェクトに存在することを確認します。
oc describe networkpolicy
$ oc describe networkpolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow