AWS와 Azure 간의 플랫폼 차이점을 더 잘 이해했으므로 AWS의 웹 애플리케이션 아키텍처와 AKS(Azure Kubernetes Service)와 호환되도록 하는 데 필요한 수정 사항을 살펴보겠습니다.
Yelb 애플리케이션 아키텍처
Yelb 샘플 웹 애플리케이션은 yelb-ui라는 프런트 엔드 구성 요소와 yelb-appserver라는 애플리케이션 구성 요소로 구성됩니다.
JavaScript 코드를 브라우저에 yelb-ui로 제공합니다. 이 코드는 Angular 애플리케이션에서 컴파일됩니다.
yelb-ui 구성 요소에는 배포 모델에 따라 nginx 프록시가 포함될 수 있습니다. 캐시 yelb-appserver 서버() 및 Postgres 백 엔드 데이터베이스(redis-server)와 상호 작용하는 yelb-db 애플리케이션입니다.
Redis Cache 는 페이지 보기 수를 저장하고 PostgreSQL 은 투표를 유지합니다. 두 서비스 모두 AWS 또는 Azure에 데이터를 저장하기 위해 관리되는 서비스를 사용하지 않고 Kubernetes 에 배포됩니다.
원래 Yelb 애플리케이션은 자체 포함되며 외부 서비스에 의존하지 않으므로 코드를 변경하지 않고 AWS에서 Azure로 마이그레이션할 수 있습니다. Azure에서 AKS에 배포된 Redis Cache 및 PostgreSQL 서비스의 대체 항목으로 Azure Managed Redis 및 Azure Database for PostgreSQL을 사용할 수 있습니다.
샘플 Yelb 애플리케이션을 사용하면 사용자가 일련의 대안(레스토랑)에 투표하고 받은 투표 수에 따라 원형 차트를 동적으로 업데이트할 수 있습니다. 또한 애플리케이션은 페이지 보기 수를 추적하고 투표 또는 페이지 새로 고침 시 API 요청을 제공하는 인스턴스의 yelb-appserver 호스트 이름을 표시합니다. 이 기능을 사용하면 애플리케이션을 독립적으로 또는 공동으로 데모할 수 있습니다.
AWS의 아키텍처
AWS는 일반적인 웹 악용으로부터 웹 애플리케이션 및 API를 보호하기 위해 AWS WAF(웹 애플리케이션 방화벽) 및 AWS Firewall Manager를 제공합니다.
AZURE 서비스에 AWS 서비스 매핑
최소한의 변경으로 Azure에서 AWS 워크로드를 다시 만들려면 각 AWS 서비스에 해당하는 Azure를 사용합니다. 다음 표에서는 서비스 매핑을 요약합니다.
| 서비스 매핑 | AWS 서비스 | Azure 서비스 |
|---|---|---|
| 웹 액세스 방화벽 | AWS WAF(웹 애플리케이션 방화벽) | Azure WAF(Web Application Firewall) |
| 애플리케이션 부하 분산 | ALB(애플리케이션 부하 분산 장치) | Azure Application GatewayApplication Gateway for Containers(AGC) |
| 콘텐츠 전송 네트워크 | Amazon CloudFront | AFD(Azure Front Door) |
| 오케스트레이션 | EKS(Elastic Kubernetes Service) | AKS(Azure Kubernetes Service) |
| 암호 자격 증명 | AWS KMS(키 관리 서비스) | Azure Key Vault |
| 컨테이너 레지스트리 | ECR(Amazon Elastic Container Registry) | ACR(Azure Container Registry) |
| DNS(도메인 이름 시스템) | Amazon Route 53 | Azure DNS |
| Caching | Amazon ElastiCache | Azure Managed Redis |
| NoSQL | Amazon DynamoDB | PostgreSQL용 Azure 데이터베이스 |
Azure와 AWS 서비스 간의 포괄적인 비교는 AWS와 Azure 서비스 비교를 참조하세요.
Azure의 아키텍처
이 솔루션에서 Yelb 애플리케이션은 AKS 클러스터에 배포되고 NGINX 수신 컨트롤러와 같은 수신 컨트롤러를 통해 노출됩니다. 수신 컨트롤러 서비스는 내부(또는 프라이빗) 부하 분산 장치를 통해 노출됩니다. 내부 부하 분산 장치를 사용하여 AKS에서 애플리케이션에 대한 액세스를 제한하는 방법에 대한 자세한 내용은 AKS(Azure Kubernetes Service)에서 내부 부하 분산 장치 사용을 참조하세요.
이 샘플은 애플리케이션 라우팅 추가 기능을 포함한 관리되는 NGINX 인그레스 컨트롤러 또는 Helm 차트를 사용하여 관리되지 않는 NGINX 인그레스 컨트롤러 설치를 지원합니다. NGINX 수신 컨트롤러를 사용하는 애플리케이션 라우팅 추가 기능은 다음과 같은 기능을 제공합니다.
- Kubernetes NGINX 수신 컨트롤러를 기반으로 관리되는 NGINX 수신 컨트롤러를 쉽게 구성합니다.
- 공용 및 프라이빗 영역 관리를 위해 Azure DNS 와 통합합니다.
- Azure Key Vault에 저장된 인증서로 SSL 종료
다른 구성은 다음 문서를 참조하세요.
Yelb 애플리케이션은 AKS 클러스터와 동일한 가상 네트워크 또는 피어된 가상 네트워크 내의 전용 서브넷에 배포된 Azure Application Gateway 리소스로 보호됩니다. 일반적인 악용 및 취약성으로부터 웹 애플리케이션을 중앙 집중식으로 보호하는 AZURE WAF(웹 애플리케이션 방화벽)를 사용하여 Yelb 애플리케이션에 대한 액세스를 보호할 수 있습니다.
솔루션 아키텍처 디자인
다음 다이어그램은 Azure에서 권장되는 아키텍처를 보여줍니다.
솔루션 아키텍처는 다음으로 구성됩니다.
- Application Gateway는 TLS 종료를 처리하고 HTTPS를 통해 백 엔드 애플리케이션과 통신합니다.
- Application Gateway 수신기는 Azure Key Vault에서 가져온 SSL 인증서를 사용합니다.
- 수신기에 연결된 Azure WAF 정책은 들어오는 요청에 대해 OWASP 규칙 및 사용자 지정 규칙을 실행하고 악의적인 공격을 차단합니다.
- Application Gateway 백 엔드 HTTP 설정은 포트 443에서 HTTPS를 통해 Yelb 애플리케이션을 호출합니다.
- Application Gateway 백엔드 풀 및 상태 검사기는 HTTPS를 사용하여 AKS 내부 로드 밸런서를 통해 NGINX 인그레스 컨트롤러를 호출합니다.
- NGINX 수신 컨트롤러는 AKS 내부 부하 분산 장치를 사용합니다.
- AKS 클러스터는 CSI 볼륨을 통해 Azure Key Vault에서 비밀, 인증서 및 키를 검색하도록 비밀 저장소 CSI 드라이버 추가 기능용 Azure Key Vault 공급자와 함께 구성됩니다.
- SecretProviderClass는 Azure Key Vault에서 Application Gateway에서 사용하는 것과 동일한 인증서를 검색합니다.
- Kubernetes 인그레스 객체는 NGINX 인그레스 컨트롤러를 사용하여 AKS 내부 로드 밸런서를 통해 HTTPS로 애플리케이션을 노출합니다.
- Yelb 서비스는 형식
ClusterIP이며 NGINX 수신 컨트롤러를 통해 노출됩니다.
이 아키텍처를 사용하여 AKS에 Yelb 애플리케이션 을 배포하는 방법에 대한 포괄적인 지침은 도우미 샘플을 참조하세요.
대체 솔루션
Azure는 AKS 클러스터에 웹 애플리케이션을 배포하고 웹 애플리케이션 방화벽을 사용하여 보안을 유지하는 몇 가지 옵션을 제공합니다.
AGIC(Application Gateway 수신 컨트롤러)는 Kubernetes 애플리케이션이므로 Azure의 네이티브 Application Gateway L7 부하 분산 장치를 활용하여 AKS(Azure Kubernetes Service) 워크로드에 대한 클라우드 소프트웨어를 인터넷에 노출할 수 있습니다. AGIC는 호스트되는 Kubernetes 클러스터를 모니터링하고 선택한 서비스가 인터넷에 노출되도록 Application Gateway를 지속적으로 업데이트합니다.
인그레스 컨트롤러는 AKS 클러스터의 자체 Pod에서 실행됩니다. AGIC는 Kubernetes 리소스의 하위 집합에서 변경 내용을 모니터링하고, 클러스터의 상태를 Application Gateway 특정 구성으로 변환하고, ARM(Azure Resource Manager)에 적용합니다. 자세한 내용은 Application Gateway Ingress Controller에 대한 정보를 확인하세요.
다음 표에서는 AGIC(Application Gateway 수신 컨트롤러)의 장점과 단점을 간략하게 설명합니다.
| 장점 | 단점 |
|---|---|
|
*
네이티브 통합: AGIC는 Azure 서비스, 특히 Azure Application Gateway와 네이티브 통합을 제공하므로 AKS에서 실행되는 서비스에 대한 트래픽을 원활하고 효율적으로 라우팅할 수 있습니다. * 간소화된 배포: AGIC를 AKS 추가 기능으로 배포하는 것은 다른 방법에 비해 간단하고 간단합니다. 이를 통해 AGIC를 사용하도록 설정된 Application Gateway 및 AKS 클러스터를 빠르고 쉽게 설정할 수 있습니다. * 완전 관리형 서비스: AGIC를 추가 기능으로 사용하는 것은 완전 관리형 서비스로, 자동 업데이트 및 Microsoft의 지원 증가와 같은 이점을 제공합니다. 그러면 Ingress Controller가 최신 상태를 유지하며 추가적인 지원 기능을 제공합니다. |
* 단일 클라우드 접근 방식: AGIC는 주로 단일 클라우드 접근 방식을 채택하는 고객이 채택합니다. 여러 클라우드 플랫폼 간에 배포가 요구되는 다중 클라우드 아키텍처가 필요한 경우 최선의 선택이 아닐 수 있습니다. 이 경우 NGINX, Traefik 또는 HAProxy와 같은 클라우드에 구애받지 않는 수신 컨트롤러를 사용하여 vendo-lockin 문제를 방지할 수 있습니다. |
자세한 내용은 다음 리소스를 참조하세요.