CKA SimA 15 NetworkPolicy

1 개요[ | ]

k8s NetworkPolicy 작성 예시
k8s 클러스터 내 보안 문제 해결을 위한 NetworkPolicy 작성 예시

2 초기 상태 확인[ | ]

  • Pod IP 및 라벨 확인
# k -n project-alpha get po -o wide -L app
NAME      READY   STATUS    RESTARTS   AGE   IP             APP
web-0     1/1     Running   0          1d    10.42.0.10     web
db1-0     1/1     Running   0          1d    10.42.0.11     db1
db2-0     1/1     Running   0          1d    10.42.0.12     db2
valut-0   1/1     Running   0          1d    10.42.0.13     valut

3 연결 테스트 (제한 없음)[ | ]

  • 아직 NetworkPolicy가 없어 모든 Pod에 접근 가능
# k -n project-alpha exec web-0 -- curl -s 10.42.0.11:1111
database one
# k -n project-alpha exec web-0 -- curl -s 10.42.0.12:2222
database two
# k -n project-alpha exec web-0 -- curl -s 10.42.0.13:3333
valut storage

4 NetworkPolicy 작성[ | ]

  • web 앱에서 db1, db2 앱으로만 특정 포트로 egress 허용
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: np-web
  namespace: project-alpha
spec:
  podSelector:
    matchLabels:
      app: web
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: db1
    ports:
    - protocol: TCP
      port: 1111
  - to:
    - podSelector:
        matchLabels:
          app: db2
    ports:
    - protocol: TCP
      port: 2222
  • 정책 적용
# k apply -f np-web.yaml
networkpolicy.networking.k8s.io/np-web created

5 적용 후 연결 테스트[ | ]

  • 허용된 포트는 정상 연결
# k -n project-alpha exec web-0 -- curl -s 10.42.0.11:1111
database one
# k -n project-alpha exec web-0 -- curl -s 10.42.0.12:2222
database two
  • 허용되지 않은 대상 및 포트는 연결 차단됨
# k -n project-alpha exec web-0 -- curl -s 10.42.0.13:3333
^C

6 관련 문서[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}