Azure Kubernetes Service(AKS)란?
Azure Kubernetes Service(AKS)는 Microsoft Azure에서 제공하는 완전 관리형 Kubernetes 서비스입니다. 컨테이너화된 애플리케이션의 배포, 스케일링, 운영을 자동화하는 Kubernetes의 복잡한 클러스터 관리 부담을 Azure가 대신 처리해 줍니다. 컨트롤 플레인(Control Plane)은 Azure가 무료로 관리하며, 사용자는 워커 노드(Worker Node)에 대한 비용만 지불합니다. 이로 인해 Kubernetes의 강력한 기능을 누리면서도 운영 오버헤드를 최소화할 수 있습니다.
AKS는 Azure Monitor, Azure Active Directory, Azure Container Registry, Azure DevOps 등 Azure 에코시스템과 긴밀하게 통합됩니다. RBAC 기반 접근 제어, 자동 노드 패치, 클러스터 자동 확장(Cluster Autoscaler), 수평 파드 자동 확장(HPA), 수직 파드 자동 확장(VPA) 등 엔터프라이즈 환경에서 필요한 기능을 폭넓게 지원합니다.
AKS 클러스터 구성 요소
컨트롤 플레인
AKS 컨트롤 플레인은 API 서버(kube-apiserver), etcd(클러스터 상태 저장소), 스케줄러(kube-scheduler), 컨트롤러 매니저(kube-controller-manager)로 구성됩니다. Azure가 이 모든 컴포넌트를 자동으로 관리하고, 99.95%(SLA가 있는 유료 업타임) 또는 99.9%(무료)의 가용성 SLA를 제공합니다. 가용성 영역(Availability Zones)을 활용하면 99.99%까지 SLA를 높일 수 있습니다.
노드 풀(Node Pool)
AKS 클러스터는 하나 이상의 노드 풀로 구성됩니다. 시스템 노드 풀(System Node Pool)은 CoreDNS, kube-proxy 등 클러스터 핵심 컴포넌트를 실행하며, 사용자 노드 풀(User Node Pool)은 애플리케이션 워크로드를 실행합니다. 서로 다른 VM 크기나 OS를 가진 여러 노드 풀을 구성하면, GPU가 필요한 ML 워크로드는 GPU 노드 풀에, 일반 웹 서버는 범용 노드 풀에 배치하는 혼합 워크로드 운영이 가능합니다.
AKS 클러스터 생성하기
Azure CLI로 AKS 클러스터 생성
Azure CLI를 사용하면 몇 가지 명령어만으로 AKS 클러스터를 생성할 수 있습니다. 먼저 리소스 그룹을 생성한 후 az aks create 명령을 실행합니다. 이때 –node-count로 초기 노드 수, –node-vm-size로 VM 크기, –enable-addons monitoring으로 Azure Monitor 통합, –generate-ssh-keys로 SSH 키 자동 생성을 설정합니다. 클러스터 생성은 약 5~10분이 소요됩니다. 생성 후 az aks get-credentials 명령으로 kubeconfig를 로컬에 저장하면 kubectl로 클러스터를 제어할 수 있습니다.
프로덕션 권장 설정
프로덕션 AKS 클러스터를 구성할 때는 가용성 영역(–zones 1 2 3), Azure CNI 네트워킹(–network-plugin azure), Azure AD 통합(–enable-aad), RBAC 활성화(–enable-rbac), 시스템 노드 풀과 사용자 노드 풀 분리를 반드시 고려해야 합니다. 또한 Private Cluster(–enable-private-cluster)를 활성화하면 API 서버에 공개 인터넷이 아닌 VNet 내부에서만 접근할 수 있어 보안이 강화됩니다.
Kubernetes 워크로드 배포
Deployment와 Service
Kubernetes에서 애플리케이션을 배포할 때는 Deployment 리소스를 사용합니다. Deployment는 원하는 파드(Pod) 수를 유지하고, 롤링 업데이트와 롤백을 자동으로 처리합니다. replicas 값을 조정해 스케일 아웃/인할 수 있으며, maxSurge와 maxUnavailable을 설정해 업데이트 시 가용성을 제어합니다. Service 리소스는 파드 집합에 안정적인 엔드포인트를 제공합니다. LoadBalancer 타입 Service를 생성하면 Azure Load Balancer와 공용 IP가 자동으로 프로비저닝됩니다.
Ingress 컨트롤러
여러 서비스를 단일 로드밸런서로 라우팅하려면 Ingress 컨트롤러를 사용합니다. AKS에서 가장 많이 사용되는 Ingress 컨트롤러는 NGINX Ingress Controller와 Azure Application Gateway Ingress Controller(AGIC)입니다. AGIC는 Azure Application Gateway와 통합되어 WAF(웹 방화벽), SSL 오프로딩, URL 기반 라우팅을 기본으로 지원합니다. cert-manager와 연동하면 Let’s Encrypt 인증서 발급과 갱신도 자동화할 수 있습니다.
AKS 자동 확장 구성
Cluster Autoscaler
클러스터 자동 확장기(Cluster Autoscaler)는 파드 스케줄링 실패(리소스 부족)를 감지하면 노드를 자동으로 추가하고, 노드 사용률이 낮을 때는 노드를 제거해 비용을 절감합니다. AKS 노드 풀 생성 시 –enable-cluster-autoscaler, –min-count, –max-count를 설정하면 활성화됩니다. 최솟값과 최댓값을 적절히 설정해 예상치 못한 비용 급증을 방지하는 것이 중요합니다.
Horizontal Pod Autoscaler(HPA)
HPA는 파드의 CPU 사용률이나 사용자 정의 메트릭을 기반으로 파드 수를 자동 조정합니다. kubectl autoscale deployment 명령이나 HorizontalPodAutoscaler YAML로 설정합니다. CPU 사용률 70% 초과 시 파드를 추가하고 30% 미만 시 축소하는 정책을 적용하면, 트래픽 변화에 유연하게 대응하면서 리소스 낭비를 줄일 수 있습니다.
AKS 보안 강화
Azure AD 통합 및 RBAC
AKS에 Azure AD를 통합하면 Azure AD 사용자와 그룹을 Kubernetes RBAC에 직접 매핑할 수 있습니다. ClusterRoleBinding을 통해 DevOps팀에는 cluster-admin 권한, 개발자에게는 특정 네임스페이스 접근 권한만 부여하는 세분화된 접근 제어가 가능합니다. Azure AD 조건부 접근 정책과 결합하면 MFA(다중 인증)를 클러스터 접근에도 적용할 수 있습니다.
Microsoft Defender for Containers
Microsoft Defender for Containers는 AKS 클러스터의 실행 중인 워크로드에서 위협을 탐지합니다. 컨테이너 이미지 취약점 스캔, 런타임 위협 탐지, Kubernetes API 감사 로그 분석 등의 기능으로 컨테이너 환경의 보안을 강화합니다. Azure Security Center와 통합되어 보안 권고사항을 한곳에서 관리할 수 있습니다.
마치며
Azure Kubernetes Service는 컨테이너 오케스트레이션의 복잡성을 낮추고, 개발팀이 인프라보다 애플리케이션 개발에 집중할 수 있게 해주는 강력한 서비스입니다. 클러스터 자동 확장, Azure AD 통합, Ingress 컨트롤러, CI/CD 파이프라인 연동까지 차근차근 적용해 나가면 안정적이고 확장 가능한 컨테이너 플랫폼을 구축할 수 있습니다. AKS 무료 플랜으로 시작해 소규모 클러스터를 직접 운영해 보는 것을 추천합니다.