본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

네트워크 셋(Network set)

원문 보기 위키 갱신

NetworkSet은 IP 서브넷/CIDR의 임의 집합을 하나로 묶어 Calico 정책에서 매칭할 수 있게 해주는 리소스예요. Calico가 관리하지 않는 외부 네트워크와 주고받는 트래픽에 정책을 적용할 때 특히 유용합니다. 이 문서에서는 NetworkSet의 개념, YAML 예제, 스펙 정의를 소개해요.

출처: 문서

본문

네트워크 셋 리소스(NetworkSet)는 임의의 IP 서브넷/CIDR 집합을 나타내며, Calico 정책으로 매칭될 수 있어요. 네트워크 셋은 Calico가 관리하지 않는 외부 네트워크에서 오거나 그쪽으로 가는 트래픽에 정책을 적용할 때 유용합니다.

NetworkSet은 네임스페이스가 있는 리소스예요. 특정 네임스페이스의 NetworkSet은 그 네임스페이스의 네트워크 정책에만 적용됩니다. 두 리소스가 namespace 값이 같으면 같은 네임스페이스에 있는 거예요. (네임스페이스가 없는 네트워크 셋은 GlobalNetworkSet을 참고하세요.)

CLI에서 리소스 타입을 지정하는 calicoctl 명령어에는 다음 별칭이 지원돼요(모두 대소문자 구분 없음): networkset, networksets, netsets.

각 네트워크 셋의 메타데이터에는 라벨 집합이 포함돼요. Calico가 네트워크 정책 규칙 안의 소스/목적지 셀렉터에 매칭되어야 할 IP 집합을 계산할 때, 그 셀렉터에 매칭되는 네트워크 셋들의 CIDR을 포함시킵니다.

참고: Calico는 패킷의 소스/목적지 IP 주소를 기준으로 매칭하기 때문에, Calico가 활성화된 노드와 네트워크 셋에 나열된 네트워크 사이에 NAT가 있으면 규칙이 의도대로 동작하지 않을 수 있어요. 예를 들어 Kubernetes에서 서비스 IP로 들어오는 트래픽은 도착 호스트에 도달하기 전에 kube-proxy가 SNAT하는 것이 일반적이라, Calico의 워크로드 정책은 실제 소스 대신 kube-proxy가 돌던 호스트의 IP를 소스로 봅니다.

샘플 YAML

apiVersion: projectcalico.org/v3
kind: NetworkSet
metadata:
  name: external-database
  namespace: staging
  labels:
    role: db
spec:
  nets:
    - 198.51.100.0/28
    - 203.0.113.0/24

네트워크 셋 정의

메타데이터

Field Description Accepted Values Schema Default
name The name of this network set. Required. Lower-case alphanumeric with optional _ or -. string
namespace Namespace provides an additional qualification to a resource name. string "default"
labels A set of labels to apply to this endpoint. map

스펙

Field Description Accepted Values Schema Default
nets The IP networks/CIDRs to include in the set. Valid IPv4 or IPv6 CIDRs, for example "192.0.2.128/25" list

더 알아보기 (Learn more)

NetworkSet에 라벨을 붙여두면 정책 셀렉터에서 그 라벨로 CIDR 묶음을 한 번에 참조할 수 있어요. NAT 환경에서는 실제 소스 IP가 가려질 수 있다는 점을 꼭 기억하세요.