다음을 통해 공유


빠른 시작: Azure Developer CLI을 사용하여 AKS(Azure Kubernetes Service) 클러스터 배포

AKS(Azure Kubernetes Service)는 클러스터를 빠르게 배포하고 관리할 수 있는 관리형 Kubernetes 서비스입니다. 이 빠른 시작에서는 다음을 알아봅니다.

  • Azure Developer CLI(azd)를 다운로드하여 설치합니다.
  • Azure Developer CLI 템플릿(azd 템플릿)에서 애플리케이션을 복제합니다.
  • Azure Developer CLI(azd)를 사용하여 AKS 클러스터를 배포합니다.
  • 소매 앱을 시뮬레이션하는 마이크로 서비스 그룹으로 샘플 다중 컨테이너 애플리케이션을 실행합니다.
  • azd 템플릿에서 만들어진 컨테이너를 삭제하고 정리합니다.

참고 항목

AKS 클러스터 프로비전을 빠르게 시작하기 위해 이 문서에는 평가 목적으로만 기본 설정으로 클러스터를 배포하는 단계가 포함되어 있습니다. 프로덕션에 즉시 사용 가능한 클러스터를 배포하기 전에 기본 참조 아키텍처를 숙지하여 비즈니스 요구 사항에 어떻게 부합하는지 고려하는 것이 좋습니다.

시작하기 전에

이 빠른 시작에서는 Kubernetes 기본 개념을 이해하고 있다고 가정합니다. 자세한 내용은 AKS(Azure Kubernetes Service)의 Kubernetes 핵심 개념을 참조하세요.

애플리케이션 코드 검토

Azure-Samples/aks-store-demo GitHub 리포지토리에서 애플리케이션 코드를 검토할 수 있습니다.

빠른 시작 애플리케이션에는 다음과 같은 Kubernetes 배포 및 서비스가 포함됩니다.

Azure Store 샘플 아키텍처를 보여 주는 다이어그램.

  • 스토어 프런트: 고객이 제품을 보고 주문을 할 수 있는 웹 애플리케이션입니다.
  • 제품 서비스: 제품 정보를 표시합니다.
  • 주문 서비스: 주문을 합니다.
  • Rabbit MQ: 주문 큐에 대한 메시지 큐입니다.

참고 항목

프로덕션에 사용할 영구 스토리지가 없으면 Rabbit MQ와 같은 상태 저장 컨테이너를 실행하지 않는 것이 좋습니다. 여기서는 단순화를 위해 사용되었지만 그 대신 Azure Cosmos DB 또는 Azure Service Bus와 같은 관리되는 서비스를 사용하는 것이 좋습니다.

Azure Developer CLI 템플릿 복제

  1. 매개 변수와 함께 azd init 명령을 사용하여 --template 리포지토리에서 AKS 스토어 데모 템플릿을 복제합니다.

    azd init --template Azure-Samples/aks-store-demo
    
  2. aks-azdqs-1과 같이 영숫자와 하이픈만 사용하는 프로젝트의 환경 이름을 입력합니다.

    Enter a new environment name: aks-azdqs-1
    

Azure 클라우드 계정에 로그인

azd 템플릿에는 서비스를 만드는 데 필요한 모든 코드가 포함되어 있지만 AKS에서 애플리케이션을 호스트하려면 Azure 계정에 로그인해야 합니다.

  1. azd auth login 명령을 사용하여 계정에 로그인합니다.

    azd auth login
    
  2. 출력에 표시되는 디바이스 코드를 복사하고 Enter 키를 눌러 로그인합니다.

    Start by copying the next code: XXXXXXXXX
    Then press enter and continue to log in from your browser...
    

    중요합니다

    네트워크 외부 가상 머신 또는 GitHub Codespace를 사용하는 경우 azd auth login으로 로그인하는 데 사용할 때 특정 Azure 보안 정책으로 인해 충돌이 발생합니다. 여기서 문제가 발생하면 아래에 제공된 azd auth 해결 방법을 따르면 됩니다. 이 방법은 [curl][az-auth-login]을 실행한 후 리디렉션된 로컬호스트 URL에 azd auth login 요청을 사용하는 것을 포함합니다.

  3. 조직의 로그인 페이지에서 자격 증명으로 인증합니다.

  4. Azure CLI에서 연결을 시도하는지 확인합니다.

  5. "디바이스 코드 인증이 완료되었습니다. Azure에 로그인했습니다."라는 메시지가 원래 터미널에 나타나는지 확인합니다.

    Waiting for you to complete authentication in the browser...
    Device code authentication completed.
    Logged in to Azure.
    

azd 인증 해결 방법

이 해결 방법을 사용하려면 Azure CLI를 설치해야 합니다.

  1. 터미널 창을 열고 az login 매개 변수가 --scope로 설정된 https://graph.microsoft.com/.default 명령을 사용하여 Azure CLI로 로그인합니다.

    az login --scope https://graph.microsoft.com/.default
    

    다음 예제와 같이 브라우저 액세스 토큰을 만들려면 새 탭의 인증 페이지로 리디렉션되어야 합니다.

    https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
    
  2. azd auth login으로 로그인을 시도한 후 받은 웹 페이지의 localhost URL을 복사합니다.

  3. 새 터미널 창에서 다음 curl 요청을 사용하여 로그인합니다. <localhost> 자리 표시자를 이전 단계에서 복사한 localhost URL로 바꿔야 합니다.

    curl <localhost>
    

    로그인에 성공하면 다음 예와 같이 HTML 웹페이지가 출력됩니다.

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/">
        <title>Login successfully</title>
        <style>
            body {
                font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            }
    
            code {
                font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
                display: inline-block;
                background-color: rgb(242, 242, 242);
                padding: 12px 16px;
                margin: 8px 0px;
            }
        </style>
    </head>
    <body>
        <h3>You have logged into Microsoft Azure!</h3>
        <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p>
        <h3>Announcements</h3>
        <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p>
        <p>You may opt-in to use WAM by running the following commands:</p>
        <code>
            az config set core.allow_broker=true<br>
            az account clear<br>
            az login
        </code>
    </body>
    </html>
    
  4. 현재 터미널을 닫고 원래 터미널을 엽니다. 구독의 JSON 목록이 표시됩니다.

  5. 사용하려는 구독의 id 필드를 복사합니다.

  6. az account set 명령을 사용하여 구독을 설정합니다.

    az account set --subscription <subscription_id>
    

클러스터에 대한 리소스 만들기 및 배포

azdazd-hooks 폴더 내의 모든 후크를 실행하여 애플리케이션 서비스를 사전 등록, 프로비전 및 배포합니다.

이 빠른 시작의 azd 템플릿은 AKS 클러스터 및 Azure Key Vault를 사용하여 새 리소스 그룹을 만듭니다. 키 자격 증명 모음은 클라이언트 암호를 저장하고 pets 네임스페이스에서 서비스를 실행합니다.

  1. azd up 명령을 사용하여 모든 애플리케이션 리소스를 만듭니다.

    azd up
    
  2. 청구 사용량에 대한 Azure 구독을 선택합니다.

    ? Select an Azure Subscription to use:  [Use arrows to move, type to filter]
    > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    
  3. 애플리케이션을 배포할 지역을 선택합니다.

    Select an Azure location to use:  [Use arrows to move, type to filter]
      1.  (South America) Brazil Southeast (brazilsoutheast)
      2.  (US) Central US (centralus)
      3.  (US) East US (eastus)
    > 43. (US) East US 2 (eastus2)
      4.  (US) East US STG (eastusstg)
      5.  (US) North Central US (northcentralus)
      6.  (US) South Central US (southcentralus)
    

    azd는 자동으로 사전 프로비전 및 사후 프로비전 명령을 실행하여 애플리케이션에 대한 리소스를 만듭니다. 이 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다. 완료되면 다음 예제와 유사한 출력이 표시됩니다.

    SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
    

애플리케이션 테스트

애플리케이션이 실행되면 애플리케이션 프런트 엔드를 인터넷에 공개하는 Kubernetes 서비스가 만들어집니다. 이 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다. Kubernetes 클러스터를 관리하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. kubectlazd up 중에 이미 설치되었습니다.

  1. pets 명령을 사용하여 네임스페이스를 데모 네임스페이스 kubectl set-context로 설정합니다.

    kubectl config set-context --current --namespace=pets
    
  2. 배포된 Pod의 상태는 kubectl get pods 명령을 사용하여 확인합니다. 계속하기 전에 모든 Pod가 Running인지 확인합니다.

    kubectl get pods
    
  3. 스토어 프런트 애플리케이션에 대한 공용 IP 주소를 확인하고 kubectl get service 인수와 함께 --watch 명령을 사용하여 진행 상황을 모니터링합니다.

    kubectl get service store-front --watch
    

    서비스에 대한 store-front 출력은 처음에 보류 중으로 표시됩니다.

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   <pending>     80:30025/TCP   4h4m
    
  4. EXTERNAL-IP 주소가 보류 중에서 실제 공용 IP 주소로 변경되면 CTRL-C를 사용하여 kubectl 조사식 프로세스를 중지합니다.

    다음 샘플 출력은 서비스에 할당된 유효한 공용 IP 주소를 보여 줍니다.

    NAME          TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)        AGE
    store-front   LoadBalancer   10.0.100.10   20.62.159.19   80:30025/TCP   4h5m
    
  5. Azure Store 앱이 작동하는 모습을 보려면 서비스의 외부 IP 주소로 웹 브라우저를 엽니다.

    AKS Store 샘플 애플리케이션의 스크린샷.

클러스터 삭제

빠른 시작이 완료되면 Azure 요금이 청구되지 않도록 불필요한 리소스를 정리합니다.

  1. azd down 명령을 사용하여 빠른 시작에서 만든 모든 리소스를 삭제합니다.

    azd down
    
  2. y을 입력하고 Enter를 눌러 구독에서 사용된 모든 리소스를 제거하기로 한 결정을 확인합니다.

    ? Total resources to delete: 14, are you sure you want to continue? (y/N)
    
  3. y을 입력하고 Enter를 눌러 해당되는 경우 제거에서 빠른 시작 변수를 다시 사용하도록 허용합니다.

    [Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names may not be reused. In the future, you can use the argument --purge to skip this confirmation.
    
    ? Would you like to permanently delete these resources instead, allowing their names to be reused? (y/N)
    

    리소스가 삭제되면 다음 예와 비슷한 출력이 표시됩니다.

    SUCCESS: Your application was removed from Azure in 14 minutes 30 seconds.
    

참고 항목

이 샘플 애플리케이션은 데모 목적으로 사용되며 Kubernetes 애플리케이션에 대한 모든 모범 사례를 나타내지는 않습니다. 프로덕션용 AKS를 사용하여 전체 솔루션을 만드는 방법에 대한 지침은 AKS 솔루션 지침을 참조하세요.

다음 단계

이 빠른 시작에서는 Kubernetes 클러스터를 배포한 다음, 해당 클러스터에 간단한 다중 컨테이너 애플리케이션을 배포했습니다. 이 샘플 응용 프로그램은 데모 목적으로만 사용되며 Kubernetes 응용 프로그램에 대한 모든 모범 사례를 나타내지는 않습니다. 프로덕션용 AKS를 사용하여 전체 솔루션을 만드는 방법에 대한 지침은 AKS 솔루션 지침을 참조하세요.

AKS에 대해 자세히 알아보고 배포 예제에 대한 전체 코드를 연습해 보려면 Kubernetes 클러스터 자습서를 계속 진행합니다.