株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

構成は一般的なアプリケーションサーバの構成。
ingress(ALB ingress Controllerで生成) – AppPod – DBPOD

まず、Ingress、Egressの両方のアクセスをブロック。
この際にnamespaceを指定しているため、このnamespaceのみ作用される。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: test-20210401-01
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

ingressからAppPodへの通信を許可するための設定。
fromでは、ingressが配置されるサブネットのCIDRブロックを指定。
egressでは、DBPODへの通信を許可する設定をいれている。
ちなみに、この場合はnamespaceとpodのlabelを両方チェックする。and条件のようなもの。
「 podSelector:」の前に「-」を入れないと、and条件になる。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-app-from-ingress
  namespace: test-20210401-01
spec:
  podSelector:
    matchLabels:
      app: test-20210401-01-app
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.4.0.0/16
    - namespaceSelector:
        matchLabels:
          project: test
          namespace: test-20210401-01
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          namespace: test-20210401-01
      podSelector:
        matchLabels:
          app: test-20210401-01-db

AppPODからDBPODへの通信許可設定。
PodSelectorでDBPODを指定して、ingress,egressそれぞれにAPPPODへの通信許可設定を入れている。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-db-from-app
  namespace: test-20210401-01
spec:
  podSelector:
    matchLabels:
      app: test-20210401-01-db
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          namespace: test-20210401-01
      podSelector:
        matchLabels:
          app: test-20210401-01-app
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          namespace: test-20210401-01
      podSelector:
        matchLabels:
          app: test-20210401-01-app

展開したあと

⋊> /h/A/kubernetes on master ◦ kubectl get networkpolicy -A                           04:01:47
NAMESPACE          NAME                     POD-SELECTOR               AGE
test-20210401-01   allow-app-from-ingress   app=test-20210401-01-app   5s
test-20210401-01   allow-db-from-app        app=test-20210401-01-db    8s
test-20210401-01   deny-all                 <none>                     12s

lable selectorでingressを指定することはできないため、ipBlocksで無理やり指定する必要がある模様。

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)