자습서: AKS(Azure Kubernetes Service)에서 애플리케이션 실행
Kubernetes는 컨테이너화된 애플리케이션용 분산 플랫폼을 제공합니다. 고유한 애플리케이션 및 서비스를 빌드하여 Kubernetes 클러스터에 배포하고, 클러스터가 가용성 및 연결을 관리하게 합니다. 7개 중 네 번째 부분인 이 자습서에서는 샘플 애플리케이션을 Kubernetes 클러스터에 배포합니다. 다음 방법을 알아봅니다.
- Kubernetes 매니페스트 파일을 업데이트합니다.
- Kubernetes에서 애플리케이션을 실행합니다.
- 응용 프로그램을 테스트합니다.
이후 자습서에서는 애플리케이션을 스케일 아웃하고 업데이트합니다.
이 빠른 시작에서는 Kubernetes 기본 개념을 이해하고 있다고 가정합니다. 자세한 내용은 AKS(Azure Kubernetes Service)의 Kubernetes 핵심 개념을 참조하세요.
팁
AKS 클러스터는 구성 관리에 GitOps를 사용할 수 있습니다. GitOps를 사용하면 원본 제어에 푸시되는 클러스터 상태 선언이 클러스터에 자동으로 적용될 수 있습니다. GitOps를 사용하여 AKS 클러스터에 애플리케이션을 배포하는 방법에 대한 자세한 내용은 GitOps with Flux v2 자습서에서 Azure Kubernetes Service 클러스터에 대한 필수 조건을 참조하세요.
시작하기 전에
이전 자습서에서는 애플리케이션을 컨테이너 이미지로 패키지하고, Azure Container Registry에 이미지를 업로드하고, Kubernetes 클러스터를 만들었습니다.
이 자습서를 완료하려면 미리 작성된 azure-vote-all-in-one-redis.yaml
Kubernetes 매니페스트 파일이 필요합니다. 이 파일 다운로드는 이전 자습서의 애플리케이션 원본에 포함되었습니다. 리포지토리를 복제했으며 디렉터리를 복제된 리포지토리로 변경했는지 확인하세요. 이러한 단계를 수행하지 않았고 따라하려는 경우 자습서 1: AKS를 위한 애플리케이션 준비부터 시작합니다.
이 자습서의 작업을 수행하려면 Azure CLI 버전 2.0.53 이상을 실행해야 합니다. az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
매니페스트 파일 업데이트
이 자습서에서는 ACR(Azure Container Registry) 인스턴스가 애플리케이션 예제용 컨테이너 이미지를 저장합니다. 애플리케이션을 배포하려면 ACR 로그인 서버 이름을 포함하도록 Kubernetes 매니페스트 파일에서 이미지 이름을 업데이트해야 합니다.
az acr list 명령을 사용하여 ACR 로그인 서버 이름을 가져옵니다.
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
첫 번째 자습서에서 복제한 Git 리포지토리의 샘플 매니페스트 파일은 Microsoft Container Registry(mcr.microsoft.com)의 이미지를 사용합니다. 복제된 azure-voting-app-redis 디렉터리에 있는지 확인한 다음, vi
와 같은 텍스트 편집기를 사용하여 매니페스트 파일을 엽니다.
vi azure-vote-all-in-one-redis.yaml
mcr.microsoft.com를 해당 ACR 로그인 서버 이름으로 바꿉니다. 매니페스트 파일의 줄 60에서 이미지 이름을 찾을 수 있습니다. 다음 예제는 기본 이미지 이름을 보여줍니다.
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
매니페스트 파일이 다음 예제처럼 보이도록 해당 ACR 로그인 서버 이름을 입력합니다.
containers:
- name: azure-vote-front
image: <acrName>.azurecr.io/azure-vote-front:v1
파일을 저장하고 닫습니다. vi
에서 :wq
를 사용합니다.
애플리케이션 배포
애플리케이션을 배포하려면 kubectl apply
명령을 사용하여 샘플 매니페스트 파일을 지정합니다. 이 명령은 매니페스트 파일을 구문 분석하고 정의된 Kubernetes 개체를 만듭니다.
kubectl apply -f azure-vote-all-in-one-redis.yaml
다음 예제 출력에서는 AKS 클러스터에서 성공적으로 만들어진 리소스를 보여줍니다.
$ 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 서비스가 만들어집니다. 이 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다.
진행 상태를 모니터링하려면 --watch
인수와 함께 kubectl get service
명령을 사용합니다.
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
를 사용하여 kubectl
조사식 프로세스를 중지합니다. 다음 예제 출력은 서비스에 할당된 유효한 공용 IP 주소를 보여줍니다.
azure-vote-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s
애플리케이션이 실제로 작동하는 모습을 보려면 웹 브라우저를 서비스의 외부 IP 주소로 엽니다.
애플리케이션이 로드되지 않는 경우 이미지 레지스트리의 권한 부여 문제가 있을 수 있습니다. 컨테이너 상태를 보려면 kubectl get pods
명령을 사용합니다. 컨테이너 이미지를 풀할 수 없는 경우 Azure Kubernetes Service의 Azure Container Registry를 사용하여 인증을 참조하세요.
다음 단계
이 자습서에서는 샘플 Azure 투표 애플리케이션을 AKS의 Kubernetes 클러스터에 배포했습니다. 구체적으로 다음 작업 방법을 알아보았습니다.
- Kubernetes 매니페스트 파일을 업데이트합니다.
- Kubernetes에서 애플리케이션을 실행합니다.
- 응용 프로그램을 테스트합니다.
다음 자습서에서는 Kubernetes 애플리케이션 및 기본 Kubernetes 인프라를 스케일링하는 방법을 알아봅니다.