0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

networkpolicyを理解する

Posted at

目的

  • networkpolicy を理解する

手段

killercodaで手を動かす

環境

killercoda

networkpolicy とは

KubernetesのNetworkPolicyは、Pod(コンテナの実行単位)間のネットワークトラフィックを制御・制限するためのKubernetesリソースです。

デフォルトでは、Kubernetesクラスター内のすべてのPodは、特別な制限がなければ他のすべてのPodと自由に通信できます。NetworkPolicyは、このデフォルトの許可設定を変更し、セキュリティを強化するために、特定のインバウンド (Ingress) およびアウトバウンド (Egress) トラフィックを許可または拒否するルールを定義します。

つまり、kubernetes環境の L4 Firewall です。pod(label)やnamespace単位で通信元・通信先のリソースを指定します。また、IPアドレス(cidr)やexcept(除外)で特定の通信のみを許可できます。

気を付ける点は以下の通りです

  • networkpolicyが存在しない状態は全てのpod間で通信可能
  • 各種条件は配列の数で and または or を指定可能
  • 通信を許可する条件を記載する。空のルール({})は全ての通信を許可する
  • 条件を記載するルール行を記載しない場合は全ての通信を許可しない

それぞれサンプル設定を確認します。

  • networkpolicyが存在しない状態は全てのpod間で通信可能
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
# シンプルにNetworkPolicyリソースが存在しない状態です
  • 各種条件は配列の数で and または or を指定可能
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          user: alice
      podSelector:
        matchLabels:
          role: client
# from 配列に入る要素は一つです。(-は一つ)故に、条件は and になります。
# namespaceSelector 条件及びpodSelector 条件を満たすことが条件です
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          user: alice
    - podSelector:
        matchLabels:
          role: client
# from 配列に入る要素は二つです。(-は二つ)故に、条件は or になります。
# namespaceSelector条件、または、podSelector 条件を満たすことが条件です
  • 通信を許可する条件を記載する。空のルール({})は全ての通信を許可する
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
spec:
  podSelector: {}
  policyTypes:
  - Ingress
# 全ての ingress 通信を拒否します。
# 許可する通信を指定する `ingress:` 行が存在しません。
# この許可する設定行が存在しないポリシーは指定された方向の通信を全て拒否します

また、namespaceSelector や podSelector の {} 指定は全てのリソースを対象とします。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector: {}
# {} は全ての pod を対象とします

あとがき

Kubernetes は奥が深い...

ソース

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?