Azure 관리형 Calico에서 셀프 관리형 Calico로 마이그레이션
이 문서는 AKS 클러스터의 네트워크 정책을 Azure 관리형 Calico에서 셀프 관리형 Calico로 바꾸는 방법을 설명해요. 이렇게 전환하면 글로벌 네트워크 정책, staged 네트워크 정책, policy tier 등 Calico의 모든 네트워크 정책 기능을 사용할 수 있게 돼요.
출처: 문서
본문
이 페이지는 AKS 클러스터의 네트워크 정책을 Azure 관리형 Calico에서 셀프 관리형 Calico로 마이그레이션하는 방법을 설명해요. 이렇게 전환하면 글로벌 네트워크 정책, staged 네트워크 정책, policy tier를 포함한 Calico의 모든 네트워크 정책 기능에 접근할 수 있어요.
AKS에서 Azure 관리형 Calico와 셀프 관리형 Calico 이해하기
AKS의 Azure 관리형 Calico
Azure는 네트워크 정책 적용을 위한 관리형 옵션으로 Calico를 제공해요. --network-policy calico 옵션으로 AKS 클러스터를 만들면 Azure가 Calico 정책 적용 컴포넌트의 설치와 라이프사이클을 대신 관리해줘요. 이 관리형 버전은 표준 Kubernetes Network Policy API의 견고하고 지원되는 구현을 제공해요. 파드 라벨과 네임스페이스 기반의 ingress/egress 트래픽 같은 기본적인 pod-to-pod 통신 규칙을 강제해야 하는 사용자에게 적합하죠. 다만 이 관리형 서비스는 그 표준 API 범위 안의 기능으로 한정돼요. Calico 버전을 바꿀 수 없고, Calico 고유의 커스텀 리소스나 고급 기능은 사용할 수 없어요.
AKS의 셀프 관리형 Calico
Calico의 모든 정책 기능을 쓰려면 AKS 클러스터에 직접 설치해야 해요. 기존 AKS 클러스터에서 네트워크 정책 구성을 변경하고(--network-policy none), Tigera Operator로 Calico를 배포하면 돼요. 이 방식은 표준 Kubernetes 정책보다 풍부한 기능을 제공하는 Calico Network Policy API에 접근할 수 있게 해줘요. 대표적인 기능은 다음과 같아요:
- 글로벌 네트워크 정책: 모든 네임스페이스에 걸쳐 모든 파드와 엔드포인트에 적용되는 규칙이에요. 표준 Kubernetes Network Policy로는 불가능해요.
- 순서와 우선순위: 정책에 순서를 부여하고 명시적인 deny 규칙을 적용할 수 있어서, 트래픽 흐름을 더 세밀하게 제어할 수 있어요.
- 확장된 엔드포인트 타입: Calico 정책은 파드뿐 아니라 호스트 인터페이스, VM 같은 엔드포인트에도 적용할 수 있어요.
핵심 차이는 이거예요. Azure 관리형 버전은 기본 정책을 위한 간단한 손놓고 쓰는(hands-off) 경험을 주고, 셀프 관리형 설치는 완전한 제어권과 Calico의 모든 고급 네트워크 보안 기능을 제공해요.
사전 준비
네트워크 정책에 Azure 관리형 Calico를 사용하는 AKS 클러스터가 필요해요. 클러스터가 이 구성인지 확인하려면 다음 명령을 실행해 보세요:
az aks show --name my-calico-cluster --resource-group my-calico-rg \
--query "networkProfile.networkPlugin, networkProfile.networkPolicy"
기대 출력
[
"azure",
"calico"
]
경고: 마이그레이션 중에 애플리케이션 연결이 끊길 수 있어요
마이그레이션 중에 네트워크 정책이 제거되고, 마이그레이션 후 다시 적용해야 해요.
Azure 관리형 Calico에서 셀프 관리형 Calico로 마이그레이션
마이그레이션 동안 현재 네트워크 정책을 저장하고, Azure 관리형 Calico를 제거하고, 셀프 관리형 Calico를 설치한 뒤, 네트워크 정책을 다시 적용하게 돼요.
-
모든 네임스페이스의 기존 네트워크 정책을 전부 가져와서 파일로 저장해요:
kubectl get netpol -A -o yaml > network-policy.yaml파일을 검토해서 기대했던 정책이 모두 들어 있는지 확인해요.
-
AKS 클러스터 구성을 수정해서 Azure 관리형 Calico를 제거해요:
az aks update \ --name my-calico-cluster \ --resource-group my-calico-rg \ --network-policy=none -
새 구성을 확인해요:
az aks show --name my-calico-cluster --resource-group my-calico-rg \ --query "networkProfile.networkPlugin, networkProfile.networkPolicy"기대 출력
[ "azure", "none" ] -
Calico를 설치해요. 대부분의 Calico 설치와 달리 여기서는 CRD를 설치하지 않아요. 이미 존재할 수 있기 때문인데, Operator가 확인해서 빠진 것이 있으면 직접 만들어줘요.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/tigera-operator.yaml -
Calico에 필요한 구성을 제공해서 설치를 완료해요
kubectl create -f - <<EOF kind: Installation apiVersion: operator.tigera.io/v1 metadata: name: default spec: kubernetesProvider: AKS cni: type: AzureVNET --- # This optional section configures the Calico API server. # For more information, see: https://docs.tigera.io/calico/latest/reference/installation/api#operator.tigera.io/v1.APIServer apiVersion: operator.tigera.io/v1 kind: APIServer metadata: name: default spec: {} --- # This optional section enables the Calico Goldmane flow aggregator. apiVersion: operator.tigera.io/v1 kind: Goldmane metadata: name: default --- # This optional section enables the Calico Whisker observability UI. apiVersion: operator.tigera.io/v1 kind: Whisker metadata: name: default EOF -
Calico가 떠서 정상 동작하는지 확인해요
kubectl get tigerastatus기대 출력
NAME AVAILABLE PROGRESSING DEGRADED SINCE apiserver True False False 100s calico True False False 50s goldmane True False False 55s ippools True False False 105s whisker True False False 80s모든 컴포넌트가
AVAILABLE을True로 보고하는지 확인해요. -
기존 정책을 모두 다시 적용해요
kubectl apply -f network-policy.yaml -
클러스터에 모든 네트워크 정책이 돌아왔는지 확인해요:
kubectl get netpol -A -o yaml
더 알아보기 (Learn more)
Azure 관리형 Calico는 표준 Kubernetes NetworkPolicy만 지원하고, Calico 고유의 글로벌 정책·tier 같은 기능은 셀프 관리형에서만 쓸 수 있어요. 마이그레이션 중에는 네트워크 정책이 잠시 사라지므로, 정책 백업과 재적용 단계를 꼭 지키세요. 설치 후에는 tigerastatus로 모든 컴포넌트가 AVAILABLE=True인지 확인하는 게 핵심이에요.