Azure Container Apps 설정
이 단원에서는 Azure CLI를 사용하여 Azure Container Apps 환경과 Azure for PostgreSQL 데이터베이스를 만드는 방법을 알아봅니다. 그런 다음, 로컬 데이터베이스 대신 원격 데이터베이스에 연결되도록 Quarkus 애플리케이션을 구성합니다.
IaaS에서 FaaS에 이르기까지 Azure에 Quarkus 애플리케이션을 배포하는 데 사용할 수 있는 여러 대상이 있습니다. Azure Container Apps는 PaaS와 FaaS 사이에 있습니다. 특정 프로그래밍 모델을 강요하지 않고 스케일 아웃 및 스케일 인 규칙을 제어할 수 있다는 점에서 PaaS에 더 가깝습니다. 한편, 0으로 크기를 조정하거나 이벤트 기반 스케일링, 초당 가격 책정 모델과 같은 서버리스 특성도 가지고 있습니다.
Container Apps는 AKS(Azure Kubernetes Service)를 기반으로 빌드되었습니다. 여기에는 KEDA(Kubernetes를 위한 이벤트 기반 자동 스케일링), Dapr(분산 애플리케이션 런타임), Envoy(클라우드 네이티브 애플리케이션 맞춤으로 설계된 서비스 프록시)와의 긴밀한 통합이 포함됩니다. 기본 복잡성이 추상화되므로 Kubernetes Service, 배포, 수신 또는 볼륨 매니페스트를 구성할 필요가 없습니다. 컨테이너화된 애플리케이션을 구성하기 위한 간단한 API와 사용자 인터페이스가 제공됩니다. 이러한 간소화로 인해 AKS보다 제어력이 떨어집니다.
Container Apps에서는 애플리케이션을 Docker 컨테이너로 패키지해야 합니다. Container Apps는 Dockerfiles 또는 Jib을 사용하여 빌드된 Docker 컨테이너를 지원합니다. 컨테이너는 컨테이너 레지스트리에서 사용할 수 있어야 합니다. Container Apps는 Azure Container Registry, Docker Hub, GitHub Container Registry를 지원합니다. 레지스트리에서 애플리케이션 이미지를 사용할 수 있게 되면 Container Apps는 Azure Portal, Azure CLI, GitHub Actions 및 Azure DevOps에서의 배포를 지원합니다.
Container Apps는 다음과 같은 기능을 제공합니다.
- 개정판: Container Apps의 애플리케이션 수명 주기를 관리하는 데 도움이 되는 자동 버전 관리입니다.
- 트래픽 제어: 파란색/녹색 배포 및 A/B 테스트를 위해 수신 HTTP 트래픽을 여러 수정 버전으로 분할하는 기능입니다.
- 수신: 간단한 HTTPS 수신 구성. DNS나 인증서에 대해 걱정할 필요가 없습니다.
- 자동 크기 조정: KEDA 지원 크기 조정 트리거는 외부 메트릭을 기반으로 앱 규모를 조정합니다.
- 비밀: 컨테이너, 크기 조정 규칙 및 Dapr 사이드카 간에 공유되는 비밀입니다.
- 모니터링: Log Analytics에 자동으로 기록되는 표준 출력 및 오류 스트림입니다.
- Dapr: Container Apps를 위한 Dapr 통합. 간단한 플래그를 사용하여 이 통합을 사용하도록 설정합니다.
다음 연습에서는 다음 개념을 소개합니다.
- 환경: Container Apps 그룹 주변의 보안이 강화된 경계입니다. 앱은 단일 가상 네트워크에 배포되고, 서로 쉽게 상호 통신할 수 있으며, 단일 Log Analytics 작업 영역에 로그를 기록합니다. Kubernetes 네임스페이스와 환경을 비교할 수 있습니다.
- 컨테이너 앱: 함께 배포되고 크기 조정되는 컨테이너 그룹(Pod)입니다. 단일 디스크 공간과 네트워크를 공유합니다.
- 수정: 컨테이너 앱의 변경이 불가능한 스냅샷입니다. 새로운 수정 버전은 자동으로 만들어지며 A/B 테스트와 같은 HTTP 트래픽 리디렉션 전략에 유용합니다.
이제 컨테이너 앱 환경을 만들어 이러한 요소가 어떻게 작동하는지 살펴보겠습니다.