자습서: Azure Arc에서 사용하도록 설정된 AKS에서 애플리케이션 배포

적용 대상: Azure Stack HCI 22H2의 AKS, Windows Server의 AKS

Azure Arc에서 사용하도록 설정된 Azure Kubernetes Service 사용하는 경우 사용자 고유의 앱과 서비스를 빌드하고 Kubernetes 클러스터에 배포할 수 있습니다. Kubernetes는 컨테이너화된 앱에 대한 분산 플랫폼을 제공합니다. 클러스터에서 가용성 및 연결을 관리하도록 할 수 있습니다.

7부 중 4부인 이 자습서에서는 AKS의 Kubernetes 클러스터에 샘플 애플리케이션을 배포하는 방법을 설명합니다. 이 문서에서 배울 내용은 다음과 같습니다.

  • Kubernetes 매니페스트 파일 업데이트
  • Kubernetes에서 애플리케이션 배포
  • 애플리케이션 테스트

이후 자습서에서는 이 애플리케이션의 크기를 조정하고 업데이트하는 방법을 설명합니다.

이 빠른 시작에서는 Kubernetes 기본 개념을 이해하고 있다고 가정합니다.

시작하기 전에

이전 자습서에서는 애플리케이션을 컨테이너 이미지로 패키지한 다음 Azure Container Registry 이미지를 업로드하고 Kubernetes 클러스터를 만드는 방법을 설명했습니다.

이 자습서를 완료하려면 미리 만든 azure-vote-all-in-one-redis.yaml Kubernetes 매니페스트 파일이 필요합니다. 이전 자습서에서 애플리케이션 소스 코드와 함께 이 파일을 다운로드했습니다. 리포지토리를 복제하고 디렉터리를 복제된 리포지토리로 변경했는지 확인합니다. 이러한 단계를 완료하지 않은 경우 자습서 1 - 컨테이너 이미지 만들기로 시작합니다.

이 자습서에는 Azure CLI 버전 2.0.53 이상이 필요합니다. az --version을 실행하여 버전을 찾습니다. Azure CLI를 설치하거나 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

매니페스트 파일 업데이트

이 자습서에서는 Azure Container Registry instance 샘플 애플리케이션에 대한 컨테이너 이미지를 저장합니다. 애플리케이션을 배포하려면 컨테이너 레지스트리 로그인 서버 이름을 포함하도록 Kubernetes 매니페스트 파일의 이미지 이름을 업데이트해야 합니다.

다음과 같이 az acr list 명령을 사용하여 Azure Container Registry 로그인 서버 이름을 가져옵니다.

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

첫 번째 자습서에서 복제한 GitHub 리포지토리의 샘플 매니페스트 파일은 microsoft의 로그인 서버 이름을 사용합니다. 복제된 azure-voting-app-redis 디렉터리에 있는지 확인한 다음 메모장과 같은 텍스트 편집기를 사용하여 매니페스트 파일을 엽니다.

notepad azure-vote-all-in-one-redis.yaml

microsoft를 Azure Container Registry 로그인 서버 이름으로 대체합니다. 이미지 이름은 매니페스트 파일의 60번 줄에 있습니다. 다음 예제는 기본 이미지 이름을 보여줍니다.

containers:
- name: azure-vote-front
  image: mcr.microsoft.com/azuredocs/azure-vote-front:v1

매니페스트 파일이 다음 예제와 같이 표시되도록 고유한 Azure Container Registry 로그인 서버 이름을 제공합니다.

containers:
- name: azure-vote-front
  image: <acrName>.azurecr.io/azure-vote-front:v1

파일을 저장하고 닫습니다.

애플리케이션 배포

애플리케이션을 배포하려면 kubectl apply 명령을 사용합니다. 이 명령은 매니페스트 파일을 구문 분석하고 정의된 Kubernetes 개체를 만듭니다. 다음 예제처럼 샘플 매니페스트 파일을 지정합니다.

kubectl apply -f azure-vote-all-in-one-redis.yaml

다음 예제 출력은 Kubernetes 클러스터에서 성공적으로 생성된 리소스를 보여 줍니다.

$ kubectl apply -f azure-vote-all-in-one-redis.yaml

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

애플리케이션 테스트

애플리케이션이 실행되면 Kubernetes 서비스는 애플리케이션 프런트 엔드를 인터넷에 노출합니다. 이 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다.

진행률을 모니터링하려면 kubectl get service 명령을 인수와 함께 --watch 사용합니다.

kubectl get service azure-vote-front --watch

처음에는 azure-vote-front 서비스에 대한 EXTERNAL-IP보류 중으로 표시됩니다.

azure-vote-front   LoadBalancer   10.0.34.242   <pending>     80:30676/TCP   5s

EXTERNAL-IP 주소가 보류 중에서 실제 공용 IP 주소로 변경되면 Ctrl-C를 사용하여 watch 프로세스를 중지 kubectl 합니다. 다음 예제 출력은 서비스에 할당된 유효한 공용 IP 주소를 보여줍니다.

azure-vote-front   LoadBalancer   10.0.34.242   52.179.23.131   80:30676/TCP   67s

애플리케이션이 실제로 작동하는 모습을 보려면 웹 브라우저를 서비스의 외부 IP 주소로 엽니다.

로컬 웹 브라우저에서 열린 AKS 클러스터에서 실행되는 컨테이너 이미지 Azure Voting App을 보여주는 스크린샷

애플리케이션이 로드되지 않는 경우 이미지 레지스트의 권한 부여 문제가 원인일 수 있습니다. 컨테이너 상태를 보려면 kubectl get pods 명령을 사용합니다. 컨테이너 이미지를 끌어올 수 없는 경우 Azure Kubernetes Service의 Azure Container Registry를 사용하여 인증을 참조하세요.

다음 단계

이 자습서에서는 Arc에서 사용하도록 설정된 AKS의 Kubernetes 클러스터에 샘플 Azure 투표 애플리케이션을 배포했습니다. 다음을 수행하는 방법을 배웠습니다.

  • Kubernetes 매니페스트 파일 업데이트
  • Kubernetes에서 애플리케이션 실행
  • 애플리케이션 테스트

그 다음 자습서로 이동하여 Kubernetes 애플리케이션 및 기본 Kubernetes 인프라 규모를 조정하는 방법을 알아보세요.