[Kubernetes] Network Policy

1. Network Policy

Network Policy는 쿠버네티스의 Pod에 적용할 수 있는 방화벽 정책 기능이라고 볼 수 있다. 기본적으로 쿠버네티스 클러스터 내부의 모든 파드와 객체간에는 네트워크 상으로 통신이 가능하다. 감사나 내부 정보보안 규정으로 Web 서버에서 DB서버로의 접근을 차단해야 하는 경우와 같은 상황에서 사용할 수 있다.적용하는 Pod 기준으로 들어오는 트래픽을 Ingress, 나가는 트래픽을 Egress라고 한다.

#policy-definition.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: 
  name: db-policy
spec: 
  podSelector: 
    matchLabels:
      role: db
  policyTypes: 
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          name: api-pod
    ports:
    - protocol: TCP
      port: 3306

# kubectl create -f policy-definition.yaml

2. Ingress from, Egress to

ingress from, egress to 에 사용할 수 있는 selector 종류로는 podSelector, namespaceSelector, ipBlock(CIDR) 세가지가 있다. Selector를 조합해서 사용할 경우 배열 작성에 유의해야 한다.

# namespace = alice이고 role = client인 pod
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          user: alice
      podSelector:
        matchLabels:
          role: client


 # namespace = alice인 모든 pod 나 role = client인 local namespace의 pod
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          user: alice
    - podSelector:
        matchLabels:
          role: client

'Kubernetes' 카테고리의 다른 글

[Kubernetes] Authentication  (0) 2021.02.01
[Kubernetes] Volume 관리  (0) 2021.01.25
[Kubernetes] 권한 관리(RBAC)  (0) 2020.12.30
[Kubernetes] 백업, 복구  (0) 2020.12.23
[Kubernetes] 클러스터 업그레이드  (0) 2020.12.17