편집

다음을 통해 공유


Azure Kubernetes Service를 사용하여 CNCF 프로젝트 빌드

AKS(Azure Kubernetes Service)

이 문서에서는 AKS(Azure Kubernetes Service)를 배포한 후 CNCF(Cloud Native Computing Foundation)의 프로젝트를 사용하는 애플리케이션을 개념화, 설계, 빌드 및 배포하는 방법을 보여줍니다. 아키텍처에서는 GitHub의 CNCF 프로젝트 앱을 설명합니다. 리포지토리의 설정 지침에서는 아키텍처를 배포하는 단계를 설명합니다.

아키텍처

CNCF 프로젝트를 빌드하기 위한 참조 아키텍처를 보여 주는 아키텍처 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

워크로드는 직원이 비용 보고서를 제출하고 보는 데 사용할 수 있는 간단한 웹 애플리케이션입니다. 직원이 경비 보고서를 제출하면 직원의 관리자가 이메일을 받습니다.

워크플로

애플리케이션 흐름

1. 직원이 NGINX 수신을 통해 웹앱에 액세스하여 비용을 제출합니다.

2. 웹앱은 API 앱을 호출하여 직원 관리자를 검색합니다.

3. 웹앱은 비용 보고서를 만들기 위해 생성된 메시지를 Knative Broker에 푸시합니다.

4. 비용 보고서는 MySQL에 저장됩니다.

5. Knative는 비용 메시지를 페이로드로 사용하여 Email Dispatcher 함수를 트리거합니다.

6.Email Dispatcher는 SendGrid 메시지를 만듭니다.

7. SendGrid는 검토할 수 있도록 이메일을 검색된 관리자에게 보냅니다.

DevOps 흐름

a. 개발자는 Visual Studio Code에 코드를 작성하거나 업데이트합니다.

b. 개발자는 코드를 Visual Studio Code의 로컬 작업 영역에서 GitHub로 푸시합니다.

c. Github Webhook는 GitHub 코드를 복제하는 Tekton 파이프라인을 트리거합니다.

d. 파이프라인은 빌드 및 푸시하고 컨테이너 이미지를 Harbor 레지스트리에 푸시합니다.

e. Tekton은 웹앱, API 앱 및 Email Dispatcher 애플리케이션을 배포합니다.

f. Prometheus는 애플리케이션 메트릭을 캡처합니다.

g. 엔지니어는 Grafana 대시보드에서 메트릭을 모니터링합니다.

h. DevOps 엔지니어는 Grafana 대시보드를 모니터링합니다.

인프라

i. AKS 기준에 제공된 인프라를 기반으로 하는 AKS 클러스터입니다.

ii. 클러스터 스토리지에 사용되는 Rook Ceph입니다.

iii. Linkerd 서비스 메시입니다.

iv. Kubernetes 클러스터에서 전체 애플리케이션을 추적하는 데 사용되는 Jaeger입니다.

클러스터 작업

GitOps 관리를 사용하여 클러스터와 클러스터 부트스트랩을 관리하는 것이 도움이 될 수 있습니다. Flux는 인기 있는 GitOps 운영자입니다. 업데이트된 매니페스트와 Helm 차트에서 유효성 검사를 사용할 있도록 GitHub Actions와 연결되는 경우가 많습니다.

구성 요소

Azure

OSS(오픈 소스 소프트웨어)

  • Kubernetes. CNCF. 컨테이너화된 애플리케이션의 배포, 크기 조정 및 관리를 자동화합니다.
  • Flux. CNCF. 인프라 배달을 위한 GitOps 공급자입니다.
  • Rook. CNCF. 클러스터의 스토리지 관리를 제공합니다.
  • Harbor. CNCF. 이미지의 컨테이너 레지스트리입니다.
  • Linkerd. CNCF. OpenFaaS, NGINX, Prometheus 및 Jaeger와 통합되는 서비스 메시입니다.
  • Prometheus. CNCF. 애플리케이션 메트릭을 캡처합니다.
  • Jaeger. CNCF. Kubernetes 클러스터에서 전체 애플리케이션을 추적합니다.
  • Knative. CNCF. 서버리스 및 이벤트 기반 애플리케이션을 빌드하는 데 사용됩니다. Email Dispatcher 함수를 배포합니다.
  • MySQL. 비용 보고서를 저장하는 데이터베이스입니다.
  • NGINX. 직원이 웹앱에 액세스하여 비용 보고서를 제출하는 데 사용하는 Kubernetes 수신 컨트롤러입니다.
  • Tekton. CI/CD(연속 통합/지속적인 배포)에 사용되는 Continuous Delivery Foundation 프로젝트입니다. 웹앱, API 앱 및 Email Dispatcher 애플리케이션을 배포합니다.
  • Grafana. 애플리케이션 메트릭 대시보드입니다.
  • SendGrid. 비용 보고서를 검토할 수 있도록 관리자에게 메일을 보내는 외부 이메일 서비스입니다.
  • GitHub. 코드 리포지토리입니다. Tekton 파이프라인에서는 GitHub 코드를 사용합니다.
  • .NET Core. 웹 프런트 엔드 및 웹 API에 사용됩니다.
  • Flux. GitOps 관리를 제공합니다.

대안

이 프로젝트에서는 CNCF 등급별 프로젝트와 인큐베이션된 프로젝트를 사용합니다. 사용되는 서비스에 대한 여러 가지 대안이 있을 수 있습니다. 대안은 CNCF 웹 사이트를 참조하세요. 대안 중 일부를 설명하는 몇 가지 리소스는 다음과 같습니다.

다양한 Azure 서비스를 대안으로 사용하는 것이 좋을 수 있습니다. 예를 들어 웹 애플리케이션 라우팅, Azure Container Registry, Azure Container Storage, Azure Monitor, Prometheus용 Azure Monitor 관리형 서비스, Azure Managed Grafana가 있습니다.

Microsoft는 Nginx, Istio, Prometheus, Grafana 및 OpenEBS를 포함하여 AKS에서 OSS 프로젝트를 관리되는 추가 기능/파생 프로젝트로 지원합니다.

시나리오 정보

AKS뿐만 아니라 모든 Kubernetes 클러스터에 이 아키텍처를 배포할 수 있습니다. AKS 플랫폼의 유연성에 대한 한 가지 예제를 제공합니다. AKS를 사용하면 Azure에서 관리되는 Kubernetes 클러스터를 간단하게 배포할 수 있습니다.

이 문서를 검토한 후에는 주로 CNCF 프로젝트로 구성된 일반적인 애플리케이션을 배포하는 방법을 잘 이해할 수 있습니다.

잠재적인 사용 사례

다음과 같은 다른 사용 사례의 디자인 패턴도 비슷합니다.

  • 컨테이너 기반 워크로드에 사용되는 CI/CD 파이프라인 만들기
  • AKS용 GitOps 사용

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

  • Kubernetes 클러스터의 경우 최소한 VM(가상 머신) SKU DS2_v2 이상의 3노드 사용자 노드 풀이 필요합니다.
  • Azure 관리 디스크를 사용하는 볼륨을 영역 간에 연결할 수 없습니다. 동일한 영역에 있어야 합니다.
  • Rook을 설치하는 데 20~25분 정도 걸릴 수 있습니다. 다음 단계로 진행하기 전에 Ceph 클러스터가 완전히 프로비전되었는지 확인합니다.
  • Jaeger를 설정하는 데 약 5분이 걸립니다.
  • Linkerd가 대시보드에 표시되는 데 약 12분이 걸립니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

Azure 가격 계산기를 사용하여 비용을 예측할 수 있습니다. 다음은 Azure에서 이 프로젝트를 실행할 수 있도록 고려해야 하는 몇 가지 가격 책정 사항입니다. 무시할 수 있는 대역폭 비용이 적용됩니다.

Virtual Machine Scale Sets

AKS 클러스터에 대한 Azure Virtual Machine Scale Sets에서 사용되는 VM에는 요금이 청구됩니다. 자세한 내용은 Virtual Machine Scale Sets 가격 책정을 참조하세요.

스토리지

스토리지 비용은 Rook 설치에 필요한 각 데이터 디스크에 적용됩니다. 이 3노드 AKS 클러스터의 경우 Rook 구성은 노드당 1GB 디스크와 200GB 디스크 등 데이터 디스크 두 개를 사용합니다. 자세한 내용은 스토리지 비용 가격 책정을 참조하세요.

부하 분산 장치

이 AKS 클러스터와 연결된 부하 분산 장치에 요금이 청구됩니다. 자세한 내용은 Load Balancer 가격 책정을 참조하세요.

가상 네트워크

AKS 클러스터에서 사용하는 가상 네트워크에 요금이 청구됩니다. 자세한 내용은 가상 네트워크 가격 책정을 참조하세요.

시나리오 배포

Azure/클라우드 네이티브 앱 GitHub 리포지토리에서 이 시나리오를 배포합니다. 제공된 시퀀스의 설정 지침을 수행하여 사용자 환경에 CNCF 프로젝트 앱을 배포합니다.

이 리포지토리는 커뮤니티 프로젝트입니다. 커뮤니티의 개선 사항과 수정 사항의 PR(끌어오기 요청)을 수락하고 승인합니다.

다음 단계