3.2.5. すべての namespace からアプリケーションへのトラフィックを許可するネットワークポリシーを作成する
全 namespace 内の全 Pod から特定のアプリケーションへのトラフィックを許可するポリシーを設定できます。
cluster-admin ロールを持つユーザーでログインしている場合、クラスター内の namespace でネットワークポリシーを作成できます。
前提条件
-
クラスターが、
mode: NetworkPolicyが設定されたNetworkPolicyオブジェクトをサポートするネットワークプラグイン (OVN-Kubernetes ネットワークプラグインなど) を使用している。 -
OpenShift CLI (
oc) がインストールされている。 -
あなたは
管理者権限を持つユーザー特権でクラスターにログインしました。 - ネットワークポリシーが適用される namespace で作業している。
手順
すべての namespace のすべての Pod から特定のアプリケーションへのトラフィックを許可するポリシーを作成します。YAML を
web-allow-all-namespaces.yamlファイルに保存します。apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: web-allow-all-namespaces namespace: default spec: podSelector: matchLabels: app: web policyTypes: - Ingress ingress: - from: - namespaceSelector: {}ここでは、以下のようになります。
app-
デフォルト名前空間の
app:webPod にのみポリシーを適用します。 namespaceSelectorすべての namespace のすべての Pod を選択します。
注記デフォルトでは、ポリシーオブジェクトで
namespaceSelectorパラメーターを指定しない場合、名前空間は選択されません。これは、そのネットワークポリシーがデプロイされている namespace からのみのトラフィックを許可することを意味します。
次のコマンドを入力して、ポリシーを適用します。正常に処理された場合、ポリシーオブジェクトの名前と
作成ステータスが表示されます。$ oc apply -f web-allow-all-namespaces.yaml
検証
次のコマンドを入力して、
defaultの名前空間で Web サービスを開始します。$ oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80次のコマンドを実行して、
alpineイメージをsecondary名前空間にデプロイし、シェルを開始します。$ oc run test-$RANDOM --namespace=secondary --rm -i -t --image=alpine -- shシェルで次のコマンドを実行し、サービスがリクエストを許可することを確認します。
# wget -qO- --timeout=2 http://web.default<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>