반응형

 

문제

app 네임스페이스에서 나가는 모든 traffic을 차단 

apiVersion: networking.k8s.io/v1    
kind: NetworkPolicy                 
metadata:                           
  name: deny-out                    # 네트워크 정책의 이름은 'deny-out'
  namespace: app                    # 적용될 네임스페이스는 'app'
spec:                               
  podSelector: {}                   # 모든 파드를 대상으로 하는 선택자
  policyTypes:                      
    - Egress                        # 아웃바운드(밖으로 나가는) 트래픽에만 적용

 

app 네임스페이스의 모든 파드에 대해 포트 53을 사용하는 TCP 및 UDP 아웃바운드 트래픽만을 허용

apiVersion: networking.k8s.io/v1  
kind: NetworkPolicy                 # 네트워크 정책 리소스 종류
metadata:                           
  name: deny-out                    # 네트워크 정책의 이름
  namespace: app                    # 적용될 네임스페이스
spec:                               
  podSelector: {}                   # 모든 파드를 대상으로 하는 선택자
  policyTypes:                      
  - Egress                          # 아웃바운드(밖으로 나가는) 트래픽에 적용
  egress:                           
  - ports:                          
    - port: 53                      # 포트 53을 사용하는 TCP 트래픽 허용
      protocol: TCP                 
    - port: 53                      # 포트 53을 사용하는 UDP 트래픽 허용
      protocol: UDP

 


 

특정 pod가 메타데이터 서버로 접근 못하게끔하는 네트워크 정책

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: metadata-server                # 정책 이름: metadata-server
  namespace: default                   # 적용 네임스페이스: default
spec:
  podSelector:
    matchLabels:
      trust: nope                      # 레이블 'trust: nope'을 가진 파드 대상
  policyTypes:
    - Egress                           # 아웃바운드 트래픽 제어
  egress:
    - to:
        - ipBlock:
            cidr: 0.0.0.0/0            # 모든 IP 범위 대상 (인터넷 전체)
            except: 
            - 1.1.1.1/32               # 1.1.1.1 주소를 제외

 

default 네임스페이스 내에서 'trust: nope' 레이블을 가진 모든 파드가 1.1.1.1 주소를 제외한 모든 대상으로의 아웃바운드 트래픽을 허용한다.


 

How many network policies do you see in the environment? ( Network Policy 조회 )

- kubectl get networkpolicies

Create a network policy to allow traffic from the Internal application only to the payroll-service and db-service.(Network Policy 생성하기, internal 레이블을 가진 파드는 mysql 파드의 3306 포트 및 payroll 파드의 8080 포트로만 접근할 수 있게 만들기)

 

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: internal-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      name: internal
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - {}
  egress:
    - to:
      - podSelector:
          matchLabels:
            name: mysql
      ports:
        - protocol: TCP
          port: 3306
    - to:
      - podSelector:
          matchLabels:
            name: payroll
      ports:
        - protocol: TCP
          port: 8080
    - ports:
      - port: 53
        protocol: UDP
      - port: 53
        protocol: TCP
반응형

+ Recent posts