빠른 시작: 코드 리포지토리에서 새 AKS(Azure Kubernetes Service) 자동 클러스터에 애플리케이션 배포

적용 대상: ✔️ AKS 자동화

자동화된 배포를 사용하여 코드 리포지토리에서 새 또는 기존 AKS 자동 클러스터로 애플리케이션을 빌드하고 배포합니다. 자동화된 배포는 GitHub Action 워크플로를 설정하여 코드를 빌드하고 배포하는 프로세스를 간소화합니다. 연결되면 새로 커밋할 때마다 파이프라인이 시작됩니다. 자동화된 배포는 draft.sh 기반으로 빌드됩니다. 새 배포 워크플로를 만들 때 기존 Dockerfile을 사용하거나, Dockerfile을 생성하거나, 기존 Kubernetes 매니페스트를 사용하거나, Kubernetes 매니페스트를 생성할 수 있습니다. 생성된 매니페스트는 보안 및 복원력 모범 사례를 염두에 두고 만들어집니다. AKS Automatic에는 5분 이내에 99.9%의 적격 Pod 준비 작업이 완료되는 것을 보장하는 Pod 준비 SLA가 포함되어 있어, 애플리케이션에 대한 신뢰할 수 있는 자체 복구 인프라를 제공합니다.

이 빠른 시작에서는 다음을 알아봅니다.

  • 코드 리포지토리에 연결합니다.
  • 애플리케이션을 컨테이너화합니다.
  • Kubernetes 매니페스트를 구성합니다.
  • AKS 자동 클러스터를 만듭니다.
  • 끌어오기 요청을 통해 애플리케이션을 배포합니다.

시작하기 전 주의 사항:

  • 배포할 애플리케이션이 있는 GitHub 계정이 있어야 합니다.
  • AKS Automatic은 AKS 클러스터에서 Azure Policy를 활성화하지만, 더 원활한 환경을 위해 구독에 Microsoft.PolicyInsights 리소스 공급자를 미리 등록해야 합니다. 자세한 내용은 Azure 리소스 공급자 및 형식 참조하세요.

중요합니다

AKS 1.36부터 새 AKS 자동 클러스터에서는 업스트림 Ingress NGINX 지원 종료로 인해 기본적으로 애플리케이션 라우팅 추가 기능이 포함된 관리형 NGINX 인그레스 대신 애플리케이션 라우팅 추가 기능을 통한 Kubernetes Gateway API가 사용하도록 설정됩니다.

기존 자동 클러스터는 영향을 받지 않지만 애플리케이션 라우팅 추가 기능을 통해 Kubernetes Gateway API로 마이그레이션을 시작해야 합니다.

제한점

AKS 자동 클러스터에는 다음과 같은 제한 사항이 적용됩니다.

  • AKS Automatic은 다음 지역에서 정식 출시되었습니다: australiaeast, austriaeast, belgiumcentral, brazilsouth, canadacentral, centralindia, centralus, chilecentral, denmarkeast, eastasia, eastus, eastus2, francecentral, germanywestcentral, indonesiacentral, israelcentral, italynorth, japaneast, japanwest, koreacentral, malaysiawest, mexicocentral, newzealandnorth, northeurope, norwayeast, polandcentral, southafricanorth, southcentralus, southeastasia, spaincentral, swedencentral, switzerlandnorth, uaenorth, uksouth, westeurope, westus2, westus3.
    • 새 AKS 자동 클러스터는 기본적으로 관리되는 시스템 노드 풀 및 LocalDNS를 사용하도록 설정합니다. 모든 지역에서 관리되는 시스템 노드 풀이 없으면 AKS 자동 클러스터를 만들 수 없습니다.
  • AKS 자동 클러스터에는 node 리소스 그룹 잠금 미리 구성되어 있어 MC_ 리소스 그룹을 변경할 수 없으므로 기본 프라이빗 DNS 영역에서 가상 네트워크 링크가 차단됩니다. VNet 간 또는 사용자 지정 DNS 시나리오의 경우 사용자 지정 가상 네트워크에서 프라이빗 AKS(Azure Kubernetes Service) 자동 클러스터 만들기 따라 사용자 지정 네트워크 및 프라이빗 DNS를 사용합니다.
  • Azure CLI 버전 2.86.0 이상이 필요합니다. 버전을 찾으려면 명령을 실행 az --version 합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
  • 다음 확장은 지원되지 않습니다.
  • Windows 노드는 지원되지 않습니다.
  • AKS 기본 SKU와 자동 SKU 간의 마이그레이션은 지원되지 않습니다.
  • 관리되는 시스템 노드 풀이 없는 AKS 자동 클러스터와 관리되는 시스템 노드 풀이 있는 AKS 자동 클러스터 간의 마이그레이션은 지원되지 않습니다.

애플리케이션 소스 코드 가져오기

코드 리포지토리에서 애플리케이션을 배포하려면 Azure 포털 홈페이지에서 시작합니다.

Kubernetes 서비스 만들기 메뉴에서 '애플리케이션 배포'를 선택하는 스크린샷

  1. 위쪽 검색 창에서 Kubernetes 서비스를 검색합니다 .
  2. 검색 결과에서 Kubernetes 서비스를 선택합니다.
  3. 만들기 단추를 선택하고 애플리케이션 배포를 선택합니다.

소스 코드 리포지토리에 연결

배포 워크플로를 만들고 자동화하고 원하는 소스 코드 리포지토리에 연결할 권한을 부여합니다.

  1. 기본 사항 탭에서 애플리케이션 배포를 선택합니다.
  2. Project 세부 정보 아래에서 Subscription, Resource GroupRegion 선택합니다.
  3. 리포지토리 세부 정보에서 워크플로의 이름을 입력한 다음, 액세스 권한 부여를 선택하여 원하는 GitHub 리포지토리에 연결합니다.
  4. 리포지토리분기를 선택합니다.
  5. 다음 버튼을 선택합니다.

컨테이너 이미지 구성 선택

Kubernetes에 대한 애플리케이션을 준비하려면 컨테이너 이미지로 빌드하고 컨테이너 레지스트리에 저장해야 합니다. Dockerfile을 사용하여 컨테이너 이미지를 빌드하는 방법에 대한 지침을 제공합니다. 소스 코드 저장소에 Dockerfile이 아직 없는 경우, 자동화된 배포가 Dockerfile을 생성할 수 있습니다. 이미 존재하는 경우, 기존 Dockerfile을 사용할 수 있습니다.

자동화된 배포를 사용하여 Go, C#, Node.js, Python, Java, Gradle, Clojure, PHP, Ruby, Erlang, Swift 및 Rust와 같은 많은 언어 및 프레임워크에 대한 Dockerfile을 생성합니다. 언어 지원은 draft.sh에서 사용할 수 있는 것을 기반으로 합니다.

  1. 컨테이너 구성에 대한 자동 컨테이너화(Dockerfile 생성)를 선택합니다.
  2. 생성된 Dockerfile을 리포지토리에 저장할 위치를 선택합니다.
  3. 지원되는 언어 및 프레임워크 목록에서 애플리케이션 환경을 선택합니다.
  4. 애플리케이션 포트를 입력합니다.
  5. 기존 Azure Container Registry를 선택하거나 새 Azure Container Registry를 만듭니다. 이 레지스트리는 빌드된 애플리케이션 이미지를 저장하는 데 사용됩니다. AKS 자동 클러스터의 kubelet ID 에는 해당 레지스트리에 대한 권한이 부여 AcrPull 됩니다.

Kubernetes 매니페스트 구성 선택

Kubernetes에서 실행되는 애플리케이션은 많은 Kubernetes 기본 구성 요소로 구성됩니다. 이러한 구성 요소는 사용할 컨테이너 이미지, 실행할 복제본 수, 애플리케이션을 노출하는 데 필요한 공용 IP가 있는 경우 등을 설명합니다. 자세한 내용은 공식 Kubernetes 설명서를 참조하세요. 소스 코드 리포지토리에 배포할 기본 Kubernetes 매니페스트가 아직 없는 경우 자동화된 배포에서 이를 생성할 수 있습니다. 그렇지 않으면 기존 매니페스트 집합을 활용할 수 있습니다. 기존 Helm 차트를 선택할 수도 있습니다.

자동화된 배포를 사용하여 애플리케이션을 실행하도록 기본 Kubernetes 매니페스트 파일 집합을 생성합니다. 현재 자동화된 배포는 Deployment, Service, 및 ConfigMap를 만듭니다.

생성된 매니페스트는 다음과 같은 배포 보호의 권장 사항을 적용하도록 설계되었습니다.

Kubernetes 매니페스트를 생성하려면 다음을 수행합니다.

  1. 배포 옵션에 대한 애플리케이션 배포 파일 생성 을 선택합니다.
  2. 애플리케이션 포트를 입력합니다. 이 포트는 생성된 Service포트에서 사용됩니다.
  3. 생성된 Kubernetes 매니페스트를 리포지토리에 저장할 위치를 선택합니다.
  4. 다음 버튼을 선택합니다.

애플리케이션을 배포할 위치 선택

클러스터가 아직 없는 경우 이 배포의 일부로 새 AKS 자동 클러스터를 만들 수 있습니다.

  1. 클러스터 구성에 대한 자동 Kubernetes 클러스터 만들기 를 선택합니다.
  2. 클러스터 이름을 입력합니다.
  3. 자동 업그레이드 유지 관리 일정을 선택하거나 기본값을 선택한 상태로 둡니다.
  4. 애플리케이션이 배포된 Kubernetes 네임스페이스를 입력합니다.
  5. 모니터링 및 로깅 수준을 선택하거나 기본값을 선택한 상태로 둡니다.
  6. 다음 버튼을 선택합니다.

구성 검토 및 배포

클러스터, 애플리케이션 및 Kubernetes 매니페스트에 대한 구성을 검토한 다음 배포를 선택합니다. 클러스터를 만드는 데 몇 분 정도 걸리며 배포 페이지에서 벗어나지 마세요.

애플리케이션 배포를 보여 주는 스크린샷

  1. 새 AKS 자동 클러스터가 만들어지거나 기존 클러스터가 구성됩니다.
  2. 컨테이너 레지스트리가 만들어지거나 기존 레지스트리가 클러스터로 구성됩니다.
  3. GitHub 작업 워크플로가 클러스터에 배포될 수 있도록 페더레이션된 자격 증명이 만들어집니다.
  4. 끌어오기 요청은 생성된 파일 및 워크플로를 사용하여 코드 리포지토리에 생성됩니다.

끌어오기 요청 검토 및 병합

배포가 성공하면 끌어오기 요청 보기 단추를 선택하여 코드 리포지토리에서 생성된 끌어오기 요청의 세부 정보를 확인합니다.

GitHub의 풀 리퀘스트 스크린샷.

  1. 변경된 파일의 변경 내용을 검토하고 원하는 내용을 편집합니다.
  2. 병합 끌어오기 요청을 선택하여 변경 내용을 코드 리포지토리에 병합합니다.

변경 내용을 병합하면 애플리케이션을 컨테이너 이미지로 빌드하고, Azure Container Registry 저장하고, 클러스터에 배포하는 GitHub Actions 워크플로가 실행됩니다.

 진행 중인 GitHub Actions 워크플로를 보여 주는 스크린샷.

배포된 리소스 확인

파이프라인이 완료된 후 Azure Portal에서 Service 서비스 메뉴의 서비스 및 인그레스를 선택하여 생성된 Kubernetes 을 확인할 수 있습니다.

서비스 및 인그레스 창의 스크린샷.

외부 IP를 선택하면 실행 중인 애플리케이션이 있는 새 브라우저 페이지가 열립니다.

실행 중인 Contoso Air 애플리케이션을 보여 주는 스크린샷

리소스 삭제

클러스터를 완료한 후에는 Azure 요금이 발생하지 않도록 클러스터를 삭제할 수 있습니다.

  1. Azure 포털에서 리소스 그룹으로 이동합니다.
  2. 리소스 그룹 삭제를 선택합니다.
  3. 리소스 그룹의 이름을 입력하여 삭제를 확인하고 삭제를 선택합니다.
  4. 삭제 확인 대화 상자에서 삭제를 선택합니다.

다음 단계

이 빠른 시작에서는 AKS 자동 을 사용하여 Kubernetes 클러스터에 애플리케이션을 배포하고 코드 리포지토리에서 CI/CD(연속 통합/연속 배포) 파이프라인을 설정했습니다.

AKS Automatic에 대해 자세히 알아보려면 계속 소개하세요.