Certificated 도전/CKAD- Kubernetes

[CKAD] NetworkPolicy 무조건 알아야함

지추월자 2024. 9. 6. 11:06
반응형

NetworkPolicy 문제도 무조건 나오는 단골 문제라고들 함 그래서 이번에 제대로 정리해서 절대로 틀리지 말아야되겠다 생각에 정리해봅니다.


정의 

NetworkPolicy는 네트워크 보안을 강화하기 위한 리소스, 파드간 통신을 제어하고 제한하는 역할을 합니다. 일반적으로 클러스터에 있는 모든 파드들은 서로 어떠한 설정없이 통신이 가능하죠. 그래서 이 NetworkPolicy를 사용하면 파드간에 허용된 트래픽을 세밀하게 정의할 수 있습니다. 

즉, NetworkPolicy는 허용 규칙만 지정할 수 있으며, 명시적으로 허용되지 않은 트래픽은 기본적으로 차단됩니다.

NetworkPolicy는 네임스페이스 내에서 특정 파드에 대해 허용된 Ingress/ Egress를 제어합니다. NetworkPolicy는 레이블을 기반으로 동작하므로 특정 레이블이 부여된 파드에 대해서만 규칙을 적용할 수 있죠. 

기본적으로 접근이 가능한 상태

NetworkPolicy를 적용하여 특정 라벨을 달고 있는 파드만 접근 가능하도록 아래와 같이 yaml 파일 작성해보았다.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: web-simple
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          run: web-app22

web-app2 라벨을 달고 있는 파드에서 접근 시도하였으나 불가능

위의 파일을 atchLables에서 web-app2 로 제대로 명시 후 배포한 후 다시 접근해보니 web-app2 --> web-app 에서 정상적으로 접근 가능하다는 것을 확인할 수 있었다. 


동작 방식 

Ingress(수신 트래픽)


Ingress 규칙은 특정 파드로 들어오는 트래픽을 허용하거나 차단합니다. Ingress 규칙을 정의하지 않으면, 그 파드로의 모든 수신 트래픽이 차단됩니다.

  • from: 어떤 출처에서 오는 트래픽을 허용할지 정의합니다.
    • namespaceSelector: 특정 네임스페이스에서 오는 트래픽을 필터링합니다.
    • podSelector: 특정 파드에서 오는 트래픽을 필터링합니다.
    • ipBlock: IP 주소 범위에 따라 트래픽을 필터링할 수 있습니다.

Egress(송신 트래픽)

Egress 규칙은 특정 파드에서 나가는 트래픽을 허용하거나 차단합니다. Egress 규칙을 정의하지 않으면, 그 파드에서 모든 외부 트래픽이 차단됩니다. Egress 규칙에서도 다음을 정의할 수 있습니다.

  • to: 트래픽을 허용할 대상(목적지)을 정의합니다.
    • namespaceSelector, podSelector, ipBlock 등을 사용하여 어떤 대상을 향한 트래픽을 허용할지 결정할 수 있습니다.
반응형

'Certificated 도전 > CKAD- Kubernetes' 카테고리의 다른 글

[CKAD] Service Account 완벽 정리  (0) 2024.09.05