Table of Contents
Azure Kubernetes Service(AKS)는 Microsoft의 Microsoft Azure 서비스(AKS)를 통해 Microsoft의 Microsoft Azure 서비스(AKS)를 통해 Microsoft의 Microsoft 인증서를 취득했습니다. Microsoft는 Microsoft의 Microsoft 인증서를 취득한 후 Microsoft의 Microsoft 인증서를 취득했습니다. Microsoft는 Microsoft의 Microsoft 인증서를 취득한 후 Microsoft의 Microsoft 인증서를 취득했습니다. Microsoft는 Microsoft의 Microsoft 인증서를 취득한 후 Microsoft 인증서를 취득했습니다. Microsoft는 Microsoft의 Microsoft 인증서를 취득한 후 Microsoft 인증서를 취득했습니다.
왜 Microservices에 대한 AKS?
쿠버네티스의 마이크로서비스를 실행하는 것은 자연적 적합이며, 클러스터 관리 오버헤드의 많은 AKS 요약본입니다. AKS는 Azure Monitor, Azure Active Directory, Azure Virtual Network를 통한 ID 관리 및 네트워킹을 통해 내장된 모니터링을 통해 깊이 통합합니다. 관리형 쿠버네티스는 제어반을 유지해야 하며, 자동으로 업그레이드를 처리하고, 상태 및 무정전 작업대를 위한 강력한 플랫폼을 제공합니다. 이미 Azure를 활용한 기업을 위해 AKS는 가동 시간과 마이크로서비스를 가속화합니다.
AKS에서 Microservices 배포
1. 당신의 서비스를 콘테이너로
각 마이크로 서비스는 컨테이너 이미지로 포장되어야 합니다. Dockerfiles를 사용하여 종속성 및 실행시간 구성을 정의합니다. 멀티 스테이지 빌드는 이미지가 작고 안전하게 유지하도록 도와줍니다. AKS 클러스터에서 빠르고 안전한 액세스를 위해 Azure Container Registry (ACR)의 이미지를 저장하십시오. ACR는 AKS와 인증 통합하여 수동으로 끌어 버리는 비밀을 관리할 필요가 있습니다.
2. AKS 클러스터 구성 및 구성
Azure CLI, Azure Portal, 또는 Infrastructure를 통해 AKS 클러스터를 제공 할 수 있습니다. Terraform과 같은 코드 도구. 주요 구성 결정은 노드 크기 (CPU / 메모리), 노드 수, 가용성 영역, 높은 가용성, 네트워크 플러그인 (Azure CNI 또는 kubenet)을 포함합니다. 생산 마이크로 서비스에서 Azure CNI를 사용하여 네트워크 성능과 Azure 네트워킹 기능을 사용하여 더 나은 네트워크 성능과 통합합니다. 리소스 요구 사항에 따라 노드 수를 자동으로 조정하는 클러스터를 활성화하십시오.
3. Kubernetes Manifests 또는 Helm Charts를 가진 콘테이너를 배치하십시오
간단한 배포를 위해, 쿠버네티스는 (YAML 파일) Deployments, Services, ConfigMaps 및 Secrets를 정의합니다. 복잡한 마이크로 서비스 생태계를 위해, Helm 차트는 템플릿, 재사용 가능한 배포를 제공합니다. 단일 Helm 차트는 구성 가능한 매개 변수를 가진 여러 관련 마이크로 서비스를 배포할 수 있으며, 환경 별 배포를 일관성 있게 만듭니다. Helm을 사용하여 롤백 및 업그레이드를 포함한 각 서비스의 수명주기를 관리하십시오.
4. 네트워킹 및 서비스 발견
Microservices는 신뢰할 수 있는 커뮤니케이션이 필요합니다. Kubernetes Services(ClusterIP, NodePort, LoadBalancer)는 안정적인 엔드포인트를 제공합니다. 내부 통신을 위한 ClusterIP를 사용합니다. 외부 액세스는 NGINX 또는 Azure Application Gateway Ingress Controller와 같은 진입 컨트롤러를 구현합니다. 사용자 정의 도메인 네임을 위한 Azure DNS와 결합합니다. Azure API Management(APIM)와 같은 API 게이트웨이는 마이크로서비스, 제한 인증, 변환 및 전환율을 앞두고 있습니다.
5. 구성 및 비밀 관리
ConfigMaps 및 Secrets를 사용하여 코드에서 분리 구성. 데이터베이스 암호 및 API 키와 같은 민감한 데이터를 위해 Azure Key Vault 및 Secrets Store CSI 드라이버를 사용하여 직접 팟에 삽입합니다. 이것은 YAML 파일에 비밀을 저장하고 자동 회전을 가능하게합니다. 환경 별 구성은 ConfigMaps로 저장하고 배포 중에 적용 할 수 있습니다.
AKS에서 Microservices 관리
스크리닝
쿠버네티스는 여러 가지 스케일링 메커니즘을 제공합니다. 수평 포드 오토스케이너(HPA)는 CPU 또는 메모리 활용, 또는 사용자 정의 메트릭(예: 초당 요청)을 기반으로 하는 파드 복제 수를 자동으로 조정합니다. 이벤트 구동 워크로드를 위해 KEDA(Kubernetes Event-driven Autoscaling)을 사용하여 큐 길이, 카프카 래그, 기타 이벤트 소스를 기반으로 합니다. 클러스터 오토스케이너(Cluster Autoscaler)는 노드를 제거하거나 노드를 제거하기 위해 필요한 경우, 낮은 비용으로 자원을 절약할 수 있습니다.
모니터링 및 관찰성
Azure Log Analytics를 사용하여 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다. 이 기능은 애플리케이션을 실행하는 데 필요한 모든 기능을 제공합니다.
업데이트 및 롤아웃
쿠버네티스 배포 전략(RollingUpdate 또는 Recreate)은 업데이트 속도를 제어합니다. 고급 배포 패턴을 위해 카나리아 릴리스나 블루그린 배포를 구현합니다. 카나리아 배포는 새로운 버전의 트래픽의 작은 비율을 우회하여 실제 검증을 허용합니다. Flagger 또는 Argo Rollouts와 같은 도구는 AKS의 이러한 전략을 자동화합니다. 항상 리소스 요청 및 제한을 정의하여 롤아웃 중에 리소스의 스타뷰션을 방지합니다.
- 연혁
보안은 모든 계층에서 시행되어야 합니다. 개발자와 운영자에게 미세 곡물 허가를 부여하는 쿠버네티스 RBAC의 AKS와 Azure Active Directory (Azure AD)를 통합합니다. AKS의 Azure Policy를 사용하여 준수 규칙 (예를 들어, 권한 컨테이너를 허용)을 시행합니다. 네트워크 정책을 구현하여 pod-to-pod 커뮤니케이션을 제한하십시오. 컨테이너를 위한 Azure Defender를 사용하여 취약점에 대한 컨테이너 이미지를 정기적으로 스캔합니다. Enable Pod Standards (base 또는 AKS를 사용하여 제한하는) 및 클러스터에 대한 정책.
AKS에서 Microservices용 CI/CD 파이프 라인
자동화된 파이프라인은 microservices agility에 필수적입니다. Azure DevOps 또는 GitHub Actions를 사용하여 빌드, 테스트 및 독립적으로 각 서비스를 배포합니다. 전형적인 파이프라인: (1) 단일 및 통합 테스트로 컨테이너 이미지를 빌드하십시오. (2) 푸시 이미지 ACR; (3) 보안 검사; (4) Helm을 사용하여 시효 환경에 배포; (5) 연기 테스트; (6) 롤링 업데이트 또는 운하 전략을 사용하여 생산에 촉진합니다. Flux 또는 Argo와 같은 GitOps 도구는 자동 배포 및 GitOps 수정을 유지하고 자동 배포를 활성화합니다.
많은 마이크로 서비스 환경을 위해, 팀 구조와 릴리스 cadence에 따라 모노레포 또는 멀티-레포 접근 방식을 고려하십시오. 독립적 인 배포를 가능하게하기 위해 각 서비스에 대한 별도의 파이프라인을 사용하십시오. Git 저장소에 저장 배치가 나타나며 클러스터에 변경 사항을 동기화 할 GitOps 연산자를 사용합니다.
예제 파이프 구조 (Azure DevOps)
- Build Stage: Run test, build Docker image, ACR에 푸시.
- Deploy to Dev: dev namespace에서 서비스를 업그레이드하기 위해 Helm과 Azure CLI를 사용합니다.
- Integration Tests: dev 환경에 대한 API 테스트를 실행합니다.
- Approval Gate: 생산 전 수동 또는 자동화 품질 검사.
- Prod에듀로이:건강 검사와 롤링 업데이트; 실패에 자동 롤백.
비용 최적화 및 자원 관리
AKS의 Microservice는 신중하게 관리되지 않은 경우 상당한 비용을 생성할 수 있습니다. 네임스페이스당 리소스 할당을 설정하여 컨템포러리 소스에서 한 팀을 방지합니다. 일괄 처리 또는 결함 허용 작업 부하에 대한 Azure Spot VMs를 사용하여 할인. 오른쪽 크기 노드: 메모리 인텐시브 서비스에 대한 작은 노드 풀 및 더 큰 노드를 사용하십시오. AKS 클러스터 자동 확장기를 사용하여 오프 피크 시간 동안 노드를 스케일로 확장하십시오. Azure Management 및 Cost-Mes를 사용하여 Azure Management 및 Risk Management를 식별합니다.
AKS에서 생산 Microservices에 대한 모범 사례
- statelessness를 위한 디자인:] 외부 데이터베이스 또는 관리 서비스 (Azure Cosmos DB, Azure SQL, Redis Cache)에 있는 상점 국가. 중요한 자료에 대한 로컬 저장소를 피하십시오.
- Implement Health probes: 각 컨테이너에 대한 실시간 및 읽기 조사를 구성하여 쿠버네티스가 실패를 감지하고 트래픽을 적절하게 경로를 감지할 수 있습니다.
- ]pod disruption 예산을 사용합니다.는 자발적 붕괴 (노출 유지 보수, 업그레이드) 동안 종결되는 중요한 서비스를 보호합니다.
- 코드로 인프라를 채택: AKS 클러스터, 노드 풀 및 관련 Azure 리소스를 제공하도록 Terraform 또는 Bicep을 사용합니다. 이 환경 전체에 일관성을 보장합니다.
- Separate 환경: 은 별명공간(dev, staging, prod) 을 사용하며, 네트워크 정책과 RBAC을 적용하여 환경의 격리를 합니다.
- Regularly update Kubernetes version: AKS automates 패치 업데이트, 하지만 당신은 작은 버전 업그레이드를 계획해야. 단계별 접근을 사용: dev를 먼저 업그레이드, 그 다음 단계로, 그 다음 생산.
- 백업 및 재난 복구: Velero를 사용하여 쿠버네티스 리소스와 지속적 볼륨을 백업합니다. 높은 가용성을 위해 지역 전체에 중요한 데이터를 복제합니다.
외부 자료
더 깊은 다이빙을 위해, 공식 ]Azure Kubernetes Service documentation]를 참조합니다. ]Helm documentation은 차트 생성에 대한 상세지도를 제공합니다. 모니터링을 위해 Prometheus Summary를 살펴보십시오. GitOps의 경우 Argo CD documentation[[LT:[LT:7]][LT:7]]]]]]]를 방문하십시오.
관련 기사
Azure Kubernetes Service에서 마이크로 서비스를 배포하고 관리하려면 아키텍처, 배포, 모니터링, 보안 및 자동화에 대한 주의적인 계획이 필요합니다. AKS는 쿠버네티스 제어 비행기의 복잡성을 요약하고 Azure의 생태계와 통합하여 팀이 기능을 제공하도록 지원합니다. 아래에서 수행되는 사례를 통해 Helm 기반 배포, 자동화, 관찰성, 보안 구성 및 CI/CD-organizations는 확장 가능한, 탄력성, 마이크로 서비스 및 단일 서비스 플랫폼에 대한 지속적인 비용으로 통합됩니다. AKS는 단일 서비스 플랫폼에서 단일 서비스 아키텍처를 제공합니다.