Microsoft Azure의 셀프 관리형 Kubernetes
Microsoft Azure에서 직접 운영하는 Kubernetes 클러스터에 Calico를 사용하는 방법을 다뤄요. aks-engine으로 Azure CNI 네트워킹과 Calico 네트워크 정책을 조합하는 절차를 안내해요. Terraform+kubeadm, Kubespray 같은 대안도 함께 소개해요.
출처: 문서
본문
큰 그림
Microsoft Azure의 셀프 관리형 Kubernetes 클러스터에서 Calico를 사용해요.
이런 점이 좋아요
(AKS 같은 관리형 Kubernetes 서비스 대신) 자신의 Kubernetes 클러스터를 직접 운영하면 Calico와 Kubernetes를 구성할 때 가장 큰 유연성을 얻어요. Calico는 유연한 네트워킹 기능과 "어디서든 동작하는" 보안 적용을 결합해서, 네이티브 Linux 커널 성능과 진정한 클라우드 네이티브 확장성을 갖춘 솔루션을 제공해요.
개념
aks-engine은 Microsoft Azure에서 Kubernetes 클러스터를 만들고 관리하는 오픈소스 도구예요. Microsoft의 Azure Kubernetes Service (AKS)의 핵심 기술이지만, 클러스터를 직접 관리할 수 있게 해 줘요.
시작하기 전에...
- kubectl을 설치해요
- Azure CLI 도구를 설치해요
방법
Azure에서 Kubernetes를 설치하고 관리하는 방법은 여러 가지가 있어요. 이 가이드는 aks-engine을 사용해 네트워킹에는 Azure의 CNI 플러그인을, 네트워크 정책 적용에는 Calico를 사용하는 클러스터를 배포하는 방법을 보여 줘요. 이 방식의 장점은 파드가 워커 노드의 Azure Network Interface에 연결된 IP 주소를 배정받는 거예요. IP는 VNet 네트워크 풀에서 오기 때문에 Kubernetes 클러스터 바깥의 리소스에 접근할 때 NAT이 필요 없어요. 다만 자신의 환경에는 다른 옵션이 더 잘 맞을 수도 있어요.
Azure 네트워킹과 Calico 네트워크 정책을 위한 aks-engine
워크스테이션에 aks-engine을 설치해요.
배포 전에 네트워크 정책에 Calico를 사용하도록 클러스터 정의를 커스터마이징해요. kubernetesConfig 섹션에 다음을 추가하거나 수정해요(다른 Kubernetes 구성 설정은 aks-engine 문서를 참고하세요).
"kubernetesConfig": {
"networkPlugin": "azure",
"networkPolicy": "calico"
}
또는 이 값들이 이미 설정된 예시 클러스터 정의에서 시작해 자신의 필요에 맞게 커스터마이징할 수도 있어요.
그다음 클러스터 정의를 -m 플래그로 aks-engine deploy에 전달하며 aks-engine 문서에 따라 클러스터를 배포해요.
여러분이 얻게 되는 것의 세부 내용:
| Policy | IPAM | CNI | Overlay | Routing | Datastore |
|---|---|---|---|---|---|
| Calico | Azure | Azure | No | VPC Native | Kubernetes |
?
다른 옵션과 도구
Calico 네트워킹
네트워킹과 정책 적용 모두에 Calico를 배포할 수도 있어요. 이 모드에서 Calico는 파드 IP 주소를 하부 Azure VNet으로부터 가려 주는 VXLAN 기반 오버레이 네트워크를 사용해요. 대규모 배포나 여러 클러스터를 운영하면서 IP 주소 공간이 큰 부담일 때 유용할 수 있어요.
아쉽게도 aks-engine은 이 모드를 지원하지 않으므로, 클러스터를 설치하고 관리하려면 다른 도구 체인을 사용해야 해요. 몇 가지 옵션이에요.
Terraform
Terraform은 선언적 구성으로 인프라 프로비저닝을 자동화하는 도구예요. Terraform "프로비저너(provisioner)"를 사용하면 Docker, kubeadm, Kubernetes 설치까지 자동화할 수도 있어요. 자세한 내용은 Terraform 문서를 참고하세요.
kubeadm
kubeadm은 이미 프로비저닝된 컴퓨팅 리소스(클라우드의 VM이나 베어 메탈 호스트) 위에 Kubernetes 클러스터를 부트스트랩하는 명령줄 도구예요. 클라우드 리소스 프로비저닝, Kubernetes 설치, Calico 설치를 모두 처리하는 aks-engine과 달리, kubeadm은 Kubernetes 설치라는 두 번째 단계만 담당해요. kubeadm 설치가 끝나면 이어서 Calico를 설치하세요.
Kubespray
Kubespray는 Azure를 포함한 여러 클라우드를 지원하면서 Kubernetes 클러스터를 프로비저닝하고 관리하는 도구예요. Calico가 기본 네트워킹 프로바이더이고, kube_network_plugin 변수를 calico로 설정할 수도 있어요. 자세한 내용은 Kubespray 문서를 참고하세요.
다음 단계
필요 사항
권장
더 알아보기 (Learn more)
Azure CNI + Calico 정책 조합은 파드 IP를 VNet 네이티브로 유지하면서 정책만 Calico가 담당해요. VXLAN 오버레이로 파드 IP를 가리는 "Calico 네트워킹" 모드가 필요하면 aks-engine 대신 Terraform+kubeadm이나 Kubespray를 써야 해요. IP 공간이 부담이면 오버레이 모드를 먼저 검토해 보세요.