K8sネットワークポリシー生成

Kubernetes NetworkPolicy YAML セキュリティルール生成ツール

宣言的Kubernetes NetworkPolicyマニフェスト、ゼロトラストPod分離、名前空間インgress/egressルール、CIDR ipBlock、複数ポート定義を生成するための開発者向けガイド。

プリセット:
適用ポリシータイプ (spec.policyTypes)
対象ポッドセレクタ (spec.podSelector)

名前空間内のどのポッドを "production" このセキュリティポリシーで制限するか定義します。

ラベル一致 (key = value):
=
=
ポリシーメタデータラベル
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-api-netpol
  namespace: production
  labels:
    tier: api
spec:
  podSelector:
    matchLabels:
      app: backend-api
      tier: api
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - # Allow HTTP from Frontend Pods
      from:
        - podSelector:
            matchLabels:
              app: web-frontend
      ports:
        - protocol: TCP
          port: 8080
    - # Allow Metrics Scraping from Monitoring Namespace
      from:
        - namespaceSelector:
            matchLabels:
              kubernetes.io/metadata.name: monitoring
          podSelector:
            matchLabels:
              app: prometheus
      ports:
        - protocol: TCP
          port: 9090
  egress:
    - # Allow CoreDNS Resolution in kube-system
      to:
        - namespaceSelector:
            matchLabels:
              kubernetes.io/metadata.name: kube-system
          podSelector:
            matchLabels:
              k8s-app: kube-dns
      ports:
        - protocol: UDP
          port: 53
        - protocol: TCP
          port: 53
    - # Allow PostgreSQL Connection
      to:
        - podSelector:
            matchLabels:
              app: postgres
      ports:
        - protocol: TCP
          port: 5432
    - # Allow Redis Cluster Egress
      to:
        - podSelector:
            matchLabels:
              app: redis
      ports:
        - protocol: TCP
          port: 6379
対象Pod
2 Label Selectors
有効ルール数
2 受信 • 3 送信 (6 ポート)
セキュリティ体制
100% Zero-Trust Compliant

ゼロトラスト・マイクロセグメンテーション

podSelector、CIDRブロック、ポートのホワイトリストをブラウザ上で正確に定義し安全なポリシーを出力します。

100% ブラウザ内プライバシー

クラスタ構成やIPサブネット、セキュリティ設定は外部サーバーに一切送信されず、完全に保護されます。

GitOps対応プロダクション出力

標準のKubernetesマニフェストに加え、HelmチャートテンプレートやKustomizeオーバーレイも即座に出力できます。

技術リファレンス&アーキテクチャガイド

Kubernetes NetworkPolicy 生成ツール — リファレンスガイド

宣言的Kubernetes NetworkPolicyマニフェスト、ゼロトラストPod分離、名前空間インgress/egressルール、CIDR ipBlock、複数ポート定義を生成するための開発者向けガイド。

主要パラメータ&設定項目

metadata.namestring (RFC 1123)

対象名前空間内で一意となるNetworkPolicyリソースの識別名。RFC 1123 DNSサブドメイン規格に準拠し、小文字の英数字、ハイフン、ドットのみ使用可能です。

初期値: "app-network-policy"
metadata.namespacestring (DNS Label)

ポリシーを適用する対象のKubernetes名前空間。NetworkPolicyはそのリソースが作成された同一名前空間内のPodに対してのみ適用されます。

初期値: "default"
spec.podSelector.matchLabelsobject (key-value)

トラフィック制御の対象となるPodを識別するラベルセレクター。matchAllPodsが有効な場合、名前空間内の全Podを対象とする空のセレクター {} が出力されます。

初期値: {"app": "backend"}
spec.policyTypesstring[] (Ingress | Egress)

制御対象とするトラフィック方向の指定(Ingress、Egress、またはその両方)。方向を宣言しつつ対応するルール配列を空に設定すると、その方向のトラフィックは完全遮断(Default-Deny)されます。

初期値: ["Ingress"]
spec.ingress[*].from[*]array of PeerEntry

許可するIngressトラフィックの送信元ピア定義。podSelector、namespaceSelector、論理AND結合による複合セレクター、または除外CIDRを含むipBlockに対応します。

初期値: []
spec.ingress[*].ports[*]array of PortEntry

許可する宛先ポートおよびトランスポート層プロトコル(TCP、UDP、SCTP)。数値ポート、名前付きポート、およびendPortによる連続ポート範囲に対応します。

初期値: []
spec.egress[*].to[*].ipBlockobject (cidr, except)

外部通信を許可するCIDR表記のIPv4/IPv6アドレスブロック。except配列でクラスタ内部IPや特定サブネットを通信許可対象から除外できます。

初期値: {"cidr": "0.0.0.0/0", "except": ["10.0.0.0/8"]}

プロの活用テクニック&推奨設定

デフォルト拒否の徹底

podSelector: {} と policyTypes: ['Ingress', 'Egress'] を空のルール配列で宣言し、名前空間全体のデフォルト拒否ポリシーを適用してください。明示的な許可ルールが設定されるまで不要な横方向のトラフィックを完全に遮断し、ゼロトラストなネットワーク分離を実現できます。

名前空間とPodのAND結合

別名前空間の特定Podとの通信を許可する場合、YAMLのリスト要素を分けて(OR条件)定義せず、同一のピアオブジェクト内に namespaceSelector と podSelector を併記(AND条件)してください。これにより対象名前空間内の全Podではなく、特定ラベルを持つPodのみに接続を制限できます。

CoreDNS向けUDP53の許可

ワークロードに対してEgress(送信)制御を導入する際は、kube-system名前空間のCoreDNS宛てにUDPおよびTCPの53番ポートへの通信を必ず明示的に許可してください。DNS名前解決が遮断されると、クラスタ内サービス名や外部APIへの接続がタイムアウトで失敗します。

endPortによるポート範囲指定

Kubernetes 1.22以降で導入された endPort フィールドを活用することで、WebRTCやパッシブFTPなどの連続するポート範囲(例: 30000〜32767)を1つのポート定義でまとめて許可できます。大量の個別ポート宣言によるマニフェスト肥大化を防止できます。

よくあるトラブルと解決策

NetworkPolicyを適用してもPod間の通信が遮断されず全トラフィックが通過してしまう。

クラスタで使用しているCNIプラグインがNetworkPolicyの強制適用に対応しているか確認してください(Calico、Cilium、Weave Net、またはポリシーコントローラーを有効化したAWS VPC CNIなど)。標準のFlannelや拡張機能無効のAWS VPC CNIではNetworkPolicyリソースが完全に無視され、kubectlで正常適用されてもフィルタリングは機能しません。

Egress(送信)ルールを有効化した直後からPodのDNS名前解決が失敗し通信不能になる。

policyTypes に 'Egress' を指定すると、許可されたルール以外の全送信トラフィックがデフォルトで遮断されます。kube-system名前空間のCoreDNS('k8s-app: kube-dns')宛てにUDP/TCPの53番ポートへの通信を許可する明示的なEgressルールを即座に追加してください。

podSelectorとnamespaceSelectorを併記した際に意図しないPodからの通信まで許可される。

YAMLの 'from:' または 'to:' 直下でハイフン(-)を別々に記述すると論理ORとして評価されます。特定名前空間内の特定Podのみに絞り込むには、同一のハイフン項目配下に 'namespaceSelector' と 'podSelector' をネストして論理ANDとして定義してください。

よくある質問 (FAQ)

NetworkPolicyの適用に対応している代表的なKubernetes CNIプラグインは何ですか?▼

Calico、Cilium、Kube-router、VMware Antreaは標準でNetworkPolicyの強制適用に対応しています。Flannel単体では非対応でありCalicoと組み合わせる必要があります(Canal構成)。AWS EKSのAWS VPC CNIではAmazon Network Policy Controllerの追加導入が必要であり、GKEではDataplane V2の有効化が推奨されます。

ingressルールを空配列([])にする場合とingressキー自体を省略する場合の違いは何ですか?▼

policyTypesに'Ingress'が含まれている場合、'ingress: []'(空配列)を指定すると対象Podへのすべての外部着信トラフィックが遮断(Default-Deny)されます。一方、'ingress: [{}]'(空のルールを含む配列)を記述するとすべての送信元からの着信が無条件に全許可されます。YAML構造の違いにより動作が正反対になるため注意が必要です。

Kubernetes標準のNetworkPolicyでHTTPパスやURLヘッダー(Layer 7)の制限は可能ですか?▼

いいえ、標準のKubernetes NetworkPolicyはレイヤー3(IPアドレス/CIDR)およびレイヤー4(TCP/UDP/SCTPポート)のみで動作します。URLパス、HTTPメソッド、リクエストヘッダーなどのレイヤー7制御を行うには、IstioやLinkerdなどのサービスメッシュ、またはCiliumNetworkPolicy CRDを導入する必要があります。

クラスタ内PodのIPアドレスに対してipBlockによる通信制御を行うことは可能ですか?▼

Kubernetes仕様上、ipBlockはクラスタ外のCIDR範囲(外部サービスやオンプレミスIP)を対象として設計されています。クラスタ内のPod間通信ではIPが動的に再割り当てされ、kube-proxy等によるNAT変換が発生するため、クラスタ内部通信の制御には必ずpodSelectorやnamespaceSelectorを使用してください。

このジェネレーターはHelmやKustomizeの出力をどのようにクライアント側で生成していますか?▼

本ツールはブラウザ上のTypeScriptランタイム内でステートオブジェクトを直接パース・変換しており、外部サーバーへの通信は一切行いません。入力されたルール構造から、Release.Name等のパラメータを注入したHelmテンプレートや、kustomization.yamlリソース定義を完全ローカルで即座にビルドします。

関連するおすすめ開発ツール

すべてのツール →
Kubernetes RBAC Role & ClusterRoleBinding YAML 生成ツール開発ツール

APIグループ、リソース操作(verbs)、Subject(ServiceAccount/User/Group)を指定して、Kubernetes RBACのRole、ClusterRole、RoleBinding、ClusterRoleBindingマニフェストを迅速に設計・生成します。

ツールを開く→
Kubernetes StatefulSet&Headless Service YAML ビルダー開発ツール

コンパニオン Headless Service、永続ボリュームテンプレート(volumeClaimTemplates)、レプリカ数、podManagementPolicy を備えた本番仕様の Kubernetes StatefulSet マニフェストを生成します。

ツールを開く→
Nginx Location優先順位テスター & マッチシミュレーター開発ツール

Nginx locationディレクティブのマッチングルール検証ガイド。修飾子優先順位(=、^~、~、~*)のリアルタイムシミュレーション。

ツールを開く→
Cloudflare Headers & Redirects 生成ツール開発ツール

Cloudflare Pagesの _headers および _redirects 構成、セキュリティヘッダーポリシー、エッジリライティングルールの開発者向け構文リファレンス。

ツールを開く→
Vercel.json 設定・アーキテクチャ開発ツール

エッジルーティング、リライト、セキュリティヘッダー、サーバーレス関数、Cron設定を網羅したvercel.jsonの実務開発者向けリファレンス。

ツールを開く→
ESLint Flat Config (eslint.config.mjs) インタラクティブビルダー開発ツール

TypeScript、React、Next.js、Vue、Prettier、カスタムルールに対応した最新のESLint 9+ フラット設定ファイル(eslint.config.mjs / .js)をブラウザ上で安全に生成します。

ツールを開く→