AKS(Azure Kubernetes Service)

[특집 시리즈] Azure Kubernetes Service 워크샵 - 1. 소개

zerobig-k8s 2021. 4. 5. 07:23

이번에 소개할 내용은 MS Learn의 학습 모듈 중 Azure Kubernetes Service 워크샵을 토대로 한다. 전반적으로 내용이 좋아 다시 한번 정리해볼겸 시리즈로 엮어서 진행해 나가려 한다.

원문의 내용을 최대한 살리되 어색한 번역 및 최근 업데이트 된 내용에 대해 현행화를 하고 필요 시 추가적인 내용을 함께 정리하며  진행해 나가고자 한다. 모쪼록 이 글이 AKS에 대한 관심을 가지시는 분들에게 도움이 되길 바란다.

 

 

 

 

소개

전국적인 스무디 매장 체인인 Fruit Smoothies의 IT 엔지니어라고 가정해보라. 회사의 개발 팀은 사용자가 회사의 다양한 스무디 맛을 평가할 수 있도록 하는 새로운 웹 사이트를 개발했다. Fruit Smoothies는 전 세계에 대규모 팔로워 기반이 있는 여러 아울렛을 갖추고 있으며 회사에서는 많은 팬이 새 웹 사이트를 방문할 것으로 기대한다. 평가 웹 사이트를 배포할 때 필요한 경우 사이트 크기 조정을 신속하게 할 수 있는지 확인하려고 한다.

평가 웹 사이트는 여러 구성 요소로 구성된다. 웹 프런트 엔드, 캡처된 데이터를 저장하는 문서 데이터베이스 및 RESTful API가 있다. API를 사용하면 웹 프런트 엔드가 데이터베이스와 통신할 수 있다. 평가 웹 사이트에서 민감한 데이터를 저장할 수 있으므로 추가 요구 사항은 HTTPS 인증서를 사용하여 사이트를 보호하는 것이다.

Fruit Smoothies는 Kubernetes를 컴퓨팅 플랫폼으로 사용하려고 한다. 개발 팀은 이미 애플리케이션 개발 및 배포를 위해 컨테이너를 사용하고 있으며 오케스트레이션 플랫폼을 사용하면 많은 이점을 얻을 수 있다. Kubernetes는 컨테이너화된 워크로드의 배포, 크기 조정 및 관리를 자동화하기 위한 이식 가능하고 확장성 있는 오픈 소스 플랫폼이다. Kubernetes는 복잡한 컨테이너 관리를 요약하고 다양한 컴퓨팅 환경에서 컨테이너를 오케스트레이션하는 선언적 구성을 제공한다. 이 오케스트레이션 플랫폼은 PaaS(Platform as a Service) 및 IaaS(Infrastructure as a Service) 제품을 사용하는 것과 동일한 사용 편의성과 유연성을 제공한다.

이 모듈에서는 AKS(Azure Kubernetes Service)의 Kubernetes에 다중 컨테이너 애플리케이션을 배포하는 작업을 진행한다.

Azure 구독을 사용하여 이 워크숍에서 리소스를 배포한다. 이와 같은 리소스에 대한 예상 비용을 산출하려면 배포할 리소스의 사전 구성된 Azure 계산기 추정 을 참조한다.

 

 

 

 

학습 목표

이 모듈에서는 다음을 수행한다.

  • Azure Kubernetes Service 클러스터 만들기
  • Pod에 대한 최상의 배포 옵션 선택
  • 내부 및 외부 네트워크 사용자에게 Pod 노출
  • Azure Kubernetes Service 수신에 대한 SSL/TLS 구성
  • Azure Kubernetes Service 클러스터의 상태 모니터링
  • Azure Kubernetes Service 클러스터에서 애플리케이션 규모 조정

 

 

 

전제 조건

  • Kubernetes 및 관련 개념에 대한 지식. Kubernetes를 처음 사용하는 경우 Kubernetes의 기본 사항부터 시작한다.
  • 리소스를 배포 할 Azure 구독
  • Azure Cloud Shell에 대한 익숙함
  • GitHub 계정.

 

 

 

애플리케이션 아키텍처

우리의 목표는 다음 실습 시리즈에서 Fruit Smoothies 평가 웹 사이트를 실행하는 Azure의 관리형 Kubernetes 서비스인 AKS(Azure Kubernetes Service)를 배포하는 것이다.

Kubernetes가 복잡한 컨테이너 관리를 추상화 하고 컨테이너를 오케스트레이션하는 선언적 구성을 제공하는 방법을 보여 주기 위해 완료해야 할 몇 가지 작업이 있다.

1. AKS를 사용하여 Kubernetes 클러스터를 배포한다.

2. 애플리케이션 컨테이너 이미지를 저장하도록 Azure Container Registry를 구성한다.

3. 세 가지 등급 애플리케이션 구성 요소를 배포한다.

  a. Helm3를 사용하여 Fruit Smoothies 웹 사이트 문서 데이터베이스를 배포한다.

  b. 디플로이먼트 매니페스트를 사용하여 Fruit Smoothies RESTFul API를 배포한다.

  c. 디플로이먼트 매니페스트를 사용하여 Fruit Smoothies 웹 사이트 프런트 엔드를 배포한다.

4. Helm3을 사용하여 Azure Kubernetes 인그레스를 배포한다.

5. cert-manager를 사용하여 컨트롤러에서 SSL/TLS를 구성한다.

6. 컨테이너가 Fruit Smoothies 웹 사이트 배포를 모니터링하도록 Azure Monitor를 구성한다.

7. Fruit Smoothies 클러스터에 대한 클러스터 자동 크기 조정기 및 Horizontal Pod Autoscaler를 구성한다.

 

 

 

 

소스 코드

애플리케이션은 API와 프런트 엔드의 두 가지 구성 요소로 구성된다. 두 구성 요소 모두 Node.js로 작성된다. API는 MongoDB 데이터베이스에 데이터를 저장한다.

구성 요소 링크
API ratings-api GitHub 리포지토리
프런트 엔드 ratings-web GitHub 리포지토리

 

 

2편에서 계속