- 정의 및 목적
- 사용 방법
https://kubernetes.io/docs/concepts/services-networking/network-policies/
1. 정의 및 목적
Network Policy는 IP 또는 포트 수준에서 파드 간 트래픽을 제어한다.
트래픽을 제어함으로 파드로 들어오거나 내보내는 트래픽을 허용하거나 차단하여 민감한 데이터에 대한 접근을 제한하고 보안을 향상 시킬 수 있다.
전제 조건
NetworkPolicy는 네트워크 플러그인에 의해 구현된다.
만약 네트워크 플러그인의 컨트롤러가 해당 기능을 구현하지 않았다면 실행하더라도 적용되지 않는다.
2. 사용 방법
공식 문서에서 제공하는 yaml 예시를 보자.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
각 필드가 직관적이라 무슨 내용인지 쉽게 인지할 수 있다.
- podSelector : 트래칙을 제어할 파드를 선택하는 필드
- policyType : 네트워크 정책의 유형
- ingress : 파드로 들어오는 트래픽에 대한 제어
- ipBlock: 특정 IP 대역을 허용하거나 배제하기 위한 필드
- namespaceSelector : 네임스페이스의 라벨을 통해 특정 네임스페이스에서 보내는 트래픽만 받도록 제한
- podSelector : 파드의 라벨을 통해 특정 파드에서 보내는 트래픽만 받도록 제한
- ports : 수신할 트래픽을 특정 프로토콜로 제한하거나 지정한 포트로만 트래픽을 수신하도록 제한
- egress : 파드에서 내보내는 트래픽에 대한 제어
- ipBlock : 특정 IP 대역으로만 트래픽을 송신하도록 제어
- ports : 송신할 트래픽의 프로토콜과 목적지 포트를 지정
Network Policy는 CKA 시험에서도 출제되는 내용이다.
물론 이 yaml 코드를 직접 입력하진 않겠지만 각 필드가 무엇을 의미하는지 이해하는 것이 중요하다.
'Kubernetes' 카테고리의 다른 글
JSONPath (0) | 2024.12.16 |
---|---|
Kubernetes - ETCD backup and restore (0) | 2024.03.04 |
Kubernetes - Metrics Server, PodAutoScaling (0) | 2024.02.03 |
Kubernetes 기초 - Helm(3) (0) | 2024.01.30 |
Kubernetes 기초 - Helm(2) (0) | 2024.01.27 |