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

파드를 특정 범위의 IP 주소로 제한하기

원문 보기 위키 갱신

레거시 방화벽처럼 IP 범위 기반으로 판단하는 외부 시스템 앞에서, 파드가 쓸 IP를 특정 범위로 묶어 주면 상호 운용이 훨씬 쉬워져요. 이 문서는 Calico IPAM으로 파드 또는 네임스페이스 단위로 IP 풀을 지정하는 방법을 다뤄요.

출처: 문서

본문

큰 그림

파드에 선택되는 IP 주소를 특정 IP 주소 범위로 제한해요.

이런 점이 좋아요

Kubernetes 파드가 IP 범위를 기준으로 판단을 내리는 외부 시스템(예: 레거시 방화벽)과 상호작용할 때는, 여러 IP 범위를 정의하고 파드를 그 범위에 명시적으로 할당하는 게 유용할 수 있어요. Calico IP 주소 관리(IPAM)를 사용하면 파드가 특정 범위 안의 주소를 사용하도록 제한할 수 있어요.

개념

Kubernetes 파드 CIDR

Kubernetes 파드 CIDR은 Kubernetes가 파드 IP가 할당되기를 기대하는 IP 범위예요. 클러스터 전체에 대해 정의되며, 여러 Kubernetes 컴포넌트가 어떤 IP가 파드에 속한 IP인지 판단하는 데 사용해요. 예를 들어 kube-proxy는 그 트래픽이 파드에서 온 것인지 아닌지에 따라 트래픽을 다르게 처리해요. Kubernetes가 올바르게 동작하려면 모든 파드 IP가 이 CIDR 범위 안에 있어야 해요.

IP 풀

IP 풀은 Calico가 파드 IP를 할당하는 IP 주소 범위예요. 기본적으로 Calico는 Kubernetes 파드 CIDR 전체에 대해 하나의 IP 풀을 만들지만, 파드 CIDR을 여러 풀로 쪼개도록 바꿀 수 있어요. 노드 셀렉터나, 파드 또는 파드의 네임스페이스에 붙이는 어노테이션을 사용해 각 파드에 Calico가 어떤 풀을 사용할지 제어할 수 있어요.

시작하기 전에...

이 How to 가이드의 기능에는 다음이 필요해요:

  • Calico IPAM

클러스터가 어떤 IPAM을 사용하는지 확실하지 않다면, 확인 방법은 설치 방식에 따라 달라요.

Tab: Operator

기본 Installation 리소스에서 IPAM 플러그인을 조회할 수 있어요.

kubectl get installation default -o go-template --template {{.spec.cni.ipam.type}}

클러스터가 Calico IPAM을 사용 중이라면 위 명령은 Calico를 반환해요.

Tab: Manifest

Kubernetes 노드 중 하나에 SSH로 접속해서 CNI 설정을 살펴보세요.

cat /etc/cni/net.d/10-calico.conflist

다음 항목을 찾아 보세요:

         "ipam": {
              "type": "calico-ipam"
          },

이 항목이 있으면 Calico IPAM을 사용 중이에요. IPAM이 Calico가 아니거나 10-calico.conflist 파일이 없다면, 클러스터에서 이 기능들을 사용할 수 없어요.

또한 클러스터 관리자는 파드 IP 주소 할당에 사용할 유효한 IP 범위를 정의하도록 IP 풀을 구성해야 해요.

방법

파드를 IP 주소 범위로 제한하기

파드에 키 cni.projectcalico.org/ipv4pools 및/또는 cni.projectcalico.org/ipv6pools를, 값은 대괄호로 묶은 IP 풀 이름 목록으로 어노테이션하세요. 예를 들면:

cni.projectcalico.org/ipv4pools: '["pool-1", "pool-2"]'

풀 이름을 둘러싼 안쪽 큰따옴표에 이스케이프된 "가 사용된 점에 주의하세요.

네임스페이스 안의 모든 파드를 IP 주소 범위로 제한하기

네임스페이스에 키 cni.projectcalico.org/ipv4pools 및/또는 cni.projectcalico.org/ipv6pools를, 값은 대괄호로 묶은 IP 풀 이름 목록으로 어노테이션하세요. 예를 들면:

cni.projectcalico.org/ipv4pools: '["pool-1", "pool-2"]'

풀 이름을 둘러싼 안쪽 큰따옴표에 이스케이프된 \"가 사용된 점에 주의하세요.

파드와 파드의 네임스페이스 둘 다 어노테이션을 갖고 있다면, 파드 어노테이션이 우선해요.

어노테이션은 파드가 생성되는 시점에 반드시 존재해야 해요. 기존 파드에 나중에 추가해도 효과가 없어요.

추가 리소스

Calico IPAM 설정에 도움이 필요하면 Calico CNI 플러그인 구성을 참고하세요.

더 알아보기 (Learn more)

파드 어노테이션이 네임스페이스 어노테이션보다 우선하고, 둘 다 생성 시점에만 유효해요. ipv4pools와 ipv6pools를 함께 쓰면 IPv4/IPv6 각각에 다른 풀을 지정할 수 있어요.