AKS 아키텍처가이드
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Microsoft Azure AKS(Azure Kubernetes Service)를 활용하여 어플리케이션을 개발하고 관리할 때 주로 활용하게 되는 Azure Cloud Platform의 서비스와 아키텍처 구성에 대해 개괄적으로 설명합니다.
1. AKS 개요
AKS(Azure Kubernetes Service)는 Azure Cloud Platform 기반에 컨테이너식 애플리케이션 배포를 위한 관리형 환경입니다. AKS 클러스터는 Kubernetes 명령 및 Resource를 사용하여 응용 프로그램을 배포 및 관리 하고 자동 배포를 위한 배포 정책 설정과 어플리케이션 상태 모니터링 서비스를 제공합니다.
2. 아키텍처 구성
형상관리, CI/CD, 컨테이너 레지스트리, 런타임 어플리케이션, 데이터베이스, 로깅/모니터링 등을 어플리케이션 라이프사이클 관점에서 구성하는 방법을 정의한다.

3. AKS 기반의 Microservice CI/CD 아키텍처
Container 서비스를 통해 매우 손쉽게 응용 프로그램을 지속적으로 빌드 및 배포할 수 있습니다. AKS(Azure Kubernetes Service)에서 Kubernetes를 사용하여 해당 컨테이너의 배포를 오케스트레이션하는 방식으로 컨테이너를 복제 가능하고 관리 가능한 클러스터를 구성 할 수 있습니다.

4. AKS vs. ACI vs. Container Services
Microsoft Azure에서는 다양한 종류의 Container Service를 제공하고 있습니다. 최종 목적은 컨테이너 서비스에 Microservice 기반 애플리케이션을 개발/배포하기 위한 편리한 환경을 제공하는것이지만 비용/용도/개발환경에 따라 다양한 기능과 기술지원이 필요하기 때문에 사용자가 목적에 맞게 선택 할 수 있도록 다양한 컨테이너 환경을 지원하고 있습니다.
- AKS(Azure Kubernetes Services)
- ACI(Azure Container Instances)
- Container Services
- Service Fabric Clusters
- App Services
4.1. AKS(Azure Kubernetes Services)
AKS(Azure Kubernetes Service)는 완벽한 관리형 Kubernetes 환경 제공하며 Container 오케스트레이션에 대한 전문 지식 없이 컨테이너화된 응용 프로그램을 빠르고 쉽게 배포하고 관리할 수 있는 클러스터 구성 환경을 제공합니다. 또한 응용 프로그램을 오프라인으로 변경하지 않고 온라인으로 클러스터 추가 리소스를 프로비전하고, 업그레이드하고, 크기 조정하여 진행 중인 작업 및 유지 관리를 간편하게 할 수 있습니다. 또한 사용자 요구사항에 맞도록 VPC Network을 구성하거나 다른 Azure 서비스와 연계가능한 Container 서비스 환경을 만들 수 있습니다.
4.2. ACI(Azure Container Instances)
Container Instances는 클라우드 응용 프로그램을 패키지, 배포 및 관리하기 위한 기본 환경을 제공합니다. ACI는 컨테이너 서비스를 제공하는 가상 머신을 직접 관리하지 않고 Azure에서 컨테이너를 실행하는 가장 빠르고 간단한 방법을 제공합니다. Azure Container Instances는 간단한 응용 프로그램, 작업 자동화 및 빌드 작업 등 간단하게 격리된 컨테이너 실행 환경이 필요한 경우에 적합한 솔루션입니다. 여러 컨테이너 간 서비스 검색, 자동 크기 조정 및 조정된 응용 프로그램 업그레이드를 포함하여 전체 컨테이너 오케스트레이션이 필요한 환경에는 AKS(Azure Kubernetes Service)가 좀더 적합합니다.
4.3. Container Services
Azure Container Service는 Azure Portal, Azure 명령줄 도구 및 Azure API의 기능이 포함된 SLA 기반 Azure 서비스입니다. 이 서비스는 몇가지 구성 옵션을 통해 표준 컨테이너 오케스트레이션 도구(DC/OS, Docker Swarm, Kubernetes)를 선택하고 실행하는 클러스터를 신속하게 구현하고 관리할 수 있습니다. ACS Engine은 고급 사용자가 모든 수준의 클러스터 구성을 사용자가 변경하여 사용할 있는 오픈 소스 프로젝트입니다. 인프라 및 소프트웨어 양쪽의 구성을 변경하는 기능이 있기 때문에 ACS Engine용 SLA는 Azure에서 제공되지 않으며 운영자 담당자가 직접 모든 서비스를 관리하는 환경에 사용할 수 있습니다. 현재 Container Service는 서비스 종료 예정입니다.
4.4. Service Fabric Clusters
Azure Service Fabric은 손쉽게 패키지하고 배포하며 확장 가능하고 안정성이 뛰어난 마이크로 서비스 및 컨테이너를 관리하도록 배포된 시스템 플랫폼입니다. 또한 Service Fabric은 클라우드 네이티브 응용 프로그램 개발 및 인프라 관리를 간편하게 제공 할 수 있습니다. 개발자와 관리자가 복잡한 인프라 문제를 피하고 업무 수행에 필수적인 까다로운 어플리케이션을 확장 가능하고 안정적인 서비스를 제공하므로 개발자는 어플리케이션을 구현하는 데 집중할 수 있습니다. Service Fabric은 컨테이너에서 실행되는 엔터프라이즈급 Level1 클라우드 규모의 응용 프로그램을 빌드 및 관리하기 위한 차세대 플랫폼 서비스입니다.
4.5. App Services
Windows와 Linux에서 사용할 수 있는 Azure Web App을 통해 개발자는 인프라 관리에 대해 걱정할 필요 없이 다양한 언어로 작성되고 다수의 서비스와 통합된 엔터프라이즈급 웹 응용 프로그램을 손쉽게 배포하고 확장할 수 있습니다. Web App for Containers 을 통해 개발자는 고유한 Docker 형식의 컨테이너 이미지를 가져와서 Azure에서 대규모로 쉽게 배포하고 실행할 수 있습니다. Azure Functions는 기존 Azure App Service 플랫폼을 확장하는, 서버를 사용하지 않는 이벤트 구동 환경입니다. 매우 작은 리소스를 사용하는 어플리케이션에 적합하며 크기를 조정할 수 있으므로 사용한 리소스에 대해서만 비용을 지불합니다. Azure API Apps를 사용하여 다양한 언어로 작성된 API를 쉽게 빌드, 호스팅 서비스를하는데 이용할 수 있습니다.
구분 | AKS(Azure Kubernetes Services) | ACI(Azure Container Instances) | Web App for Containers |
|---|---|---|---|
| 비용 | - VM Instance 사용료 기준와 스토리지/네트웍킹 리소스 사용료 - Kubernetes 클러스터 마스터노드를 제외한 worker node 및 Infra resource 사용료 | - 컨테이너 그룹의 CPU/Memory 사용량 기준(초) - vCPU당 0.000014$ / Memory 1GB 0.000005$ | - 어플리케이션 요금제 기반 사용료 지불(시간) - Free and Shared(Preview), Basic/Standard/Premium 서비스 요금제 - vCPU/Memory/Storage에 따른 시간당 단가 차이가 있음. |
| 스케일링 | - VM 인스턴스 확장 방식 - 컨테이너 배포 상태에 따라 VM 인스턴스 확장 축소 가능 - 클러스터 VM 인스턴스는 수동으로 확장/축소 가능하며 Pods는 Kubernetes 자체 기능으로 auto scaling 구성 가능함. | - 컨테이너 그룹은 동일한 호스트 시스템내에서 예약된 컨테이너 자원임. - 컨테이너 그룹은 lifecycle, network, storage volume을 공유하며 Kubernetes의 Pods와 유사함. - 가용성 확보를 위해서는 멀티 컨테이너 그룹을 구성해야 하며 현재 멀티 컨테이너 그룹은 Linux 컨테이너만 지원함. | - 어플리케이션 사용상태에 따라 다양한 조건의 auto scaling 정책 적용이 가능함. - CPU/Memory 사용량 같은 자원사용 기준뿐 아니라 날짜/시간등의 auto scaling 설정도 가능함. |
| 모니터링 지원도구 | - Azure VM 인스턴스에서 제공하는 다양한 모니터링 서비스 및 Kudu 제공 | - 컨테이너 로그 및 Alert 로그 제공하는 수준으로 프로덕션 서비스로 제공하기에는 부족함. - 호스트 자체 장애시 로그 제공 불가함. | - 어플리케이션 분석을 위한 Kudu 및 서비스 요금제 등급에 따른 다양한 모니터링 서비스 제공 |
| 기타 기능 | - 공인 아이피, DNS 및 SSL 구성 가능 | - 공인 아이피, DNS 제공하나 SSL 구성 불가능함. | - 공인 아이피, DNS(서비스 요금제에 따라 다름) 및 SSL 구성 가능 |
5. AKS와 Kubernetes 비교
오픈소스 Kubernetes 대비 AKS(Azure Kubernetes Service)가 제공하는 차별적인 기능에 대해 소개한다.
- 액세스 관리 : Azure 포털의 Identity 카테로그의 서비스를 활요앟여 계정 및 역할 권한으로 클러스터의 액세스 권한을 관리함
- 네트워킹 : AKS Advanced 네트웍 옵션을 이용해 컨테이너 클러스터에 하이브리드 네트워킹을 구성이 가능함
- 보안 및 규정 : AKS 보안팀이 Kubernetes Engine을 지원하며 HIPAA 및 PCI DSS 3.1 규정을 모두 준수
- 통합 로깅 및 모니터링 : Monitoring 카테고리의 Logs, Metrics, Insights(Preview) 기능을 사용 설정하면 애플리케이션 실행 상태를 손쉽게 확인이 가능함
- 자동 업그레이드 : Kubernetes의 최신 출시 버전으로 클러스터를 자동으로 최신 상태로 유지 할수 있으며 N-4 버전까지 지원함.
- 완전 관리형 서비스 : AKS Kubernetes Engine을 완전하게 관리하므로 클러스터의 가용성이 보장되고 최신 상태로 유지됨
- Private Container Registry : Azure Container Registry와 통합하면 손쉽게 Private Docker 이미지를 저장하고 액세스가 가능함
- 신속한 빌드 : DevOps 서비스를 사용하여 Kubernetes Engine에서 안정적으로 컨테이너를 배포 및 CI/CD 구성이 가능함.
- 사용 편의성 : 콘솔 화면 내에 터미널 접속 기능이 있어, 별도의 CLI 설치 작업 없이 손쉽게 사용이 가능함
댓글
댓글 쓰기