자습서: AKS(Azure Kubernetes Service)에서 애플리케이션 업데이트Tutorial: Update an application in Azure Kubernetes Service (AKS)

Kubernetes에서 애플리케이션을 배포한 후 새 컨테이너 이미지 또는 이미지 버전을 지정하여 해당 애플리케이션을 업데이트할 수 있습니다.After an application has been deployed in Kubernetes, it can be updated by specifying a new container image or image version. 배포의 일부분만 동시에 업데이트되도록 업데이트가 스테이징됩니다.An update is staged so that only a portion of the deployment is updated at the same time. 이처럼 스테이징 업데이트가 수행되므로 업데이트 중에도 애플리케이션을 계속 실행할 수 있습니다.This staged update enables the application to keep running during the update. 또한 배포 오류가 발생하는 경우에는 롤백 메커니즘도 제공됩니다.It also provides a rollback mechanism if a deployment failure occurs.

이 자습서(전체 7부 중 6부)에서는 샘플 Azure 투표 앱을 업데이트합니다.In this tutorial, part six of seven, the sample Azure Vote app is updated. 다음 방법을 알아봅니다.You learn how to:

  • 프런트 엔드 애플리케이션 코드 업데이트Update the front-end application code
  • 업데이트된 컨테이너 이미지 만들기Create an updated container image
  • Azure Container Registry에 컨테이너 이미지 푸시Push the container image to Azure Container Registry
  • 업데이트된 컨테이너 이미지 배포Deploy the updated container image

시작하기 전에Before you begin

이전 자습서에서 애플리케이션은 컨테이너 이미지로 패키징되었습니다.In previous tutorials, an application was packaged into a container image. 이 이미지는 Azure Container Registry로 업로드되었고, AKS 클러스터를 만들었습니다.This image was uploaded to Azure Container Registry, and you created an AKS cluster. 그런 다음, 애플리케이션은 AKS 클러스터에 배포되었습니다.The application was then deployed to the AKS cluster.

이 자습서에서 사용한 미리 작성된 Docker Compose 파일과 애플리케이션 소스 코드를 포함하는 애플리케이션 리포지토리도 복제했습니다.An application repository was also cloned that includes the application source code, and a pre-created Docker Compose file used in this tutorial. 리포지토리 복제본을 만들었으며, 디렉터리를 복제된 디렉터리로 변경했는지 확인합니다.Verify that you've created a clone of the repo, and have changed directories into the cloned directory. 이러한 단계를 완료하지 않은 경우 수행하려면 자습서 1 - 컨테이너 이미지 만들기로 시작합니다.If you haven't completed these steps, and want to follow along, start with Tutorial 1 – Create container images.

이 자습서의 작업을 수행하려면 Azure CLI 버전 2.0.53 이상을 실행해야 합니다.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. az --version을 실행하여 버전을 찾습니다.Run az --version to find the version. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.If you need to install or upgrade, see Install Azure CLI.

애플리케이션 업데이트Update an application

샘플 애플리케이션을 변경한 다음, AKS 클러스터에 배포된 버전을 업데이트하겠습니다.Let's make a change to the sample application, then update the version already deployed to your AKS cluster. 복제된 azure-voting-app-redis 디렉터리에 있는지 확인합니다.Make sure that you're in the cloned azure-voting-app-redis directory. 그런 다음, azure-vote 디렉터리 내에서 애플리케이션 예제 소스 코드를 찾을 수 있습니다.The sample application source code can then be found inside the azure-vote directory. 같은 편집기를 사용하여config_file.cfgvi 파일을 엽니다.Open the config_file.cfg file with an editor, such as vi:

vi azure-vote/azure-vote/config_file.cfg

VOTE1VALUEVOTE2VALUE 값을 색과 같은 다른 값으로 변경합니다.Change the values for VOTE1VALUE and VOTE2VALUE to different values, such as colors. 다음 예제에서는 업데이트된 값을 보여줍니다.The following example shows the updated values:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

파일을 저장하고 닫습니다.Save and close the file. vi에서 :wq를 사용합니다.In vi, use :wq.

컨테이너 이미지 업데이트Update the container image

프런트 엔드 이미지를 다시 만들고 업데이트된 애플리케이션을 테스트하려면 docker-compose 명령을 사용합니다.To re-create the front-end image and test the updated application, use docker-compose. --build 인수를 사용하여 애플리케이션 이미지를 다시 만들도록 Docker Compose에 명령합니다.The --build argument is used to instruct Docker Compose to re-create the application image:

docker-compose up --build -d

로컬에서 애플리케이션 테스트Test the application locally

업데이트된 컨테이너 이미지에 변경 내용이 적용되었는지 확인하고, 로컬 웹 브라우저를 http://localhost:8080으로 엽니다.To verify that the updated container image shows your changes, open a local web browser to http://localhost:8080.

Azure의 Kubernetes 클러스터 이미지

config_file.cfg 파일에 제공된 업데이트된 값은 실행 중인 애플리케이션에 표시됩니다.The updated values provided in the config_file.cfg file are displayed in your running application.

이미지 태그 지정 및 밀어넣기Tag and push the image

업데이트된 이미지를 올바르게 사용하려면 azure-vote-front 이미지에 ACR 레지스트리의 로그인 서버 이름을 태그로 지정해야 합니다.To correctly use the updated image, tag the azure-vote-front image with the login server name of your ACR registry. az acr list 명령을 사용하여 로그인 서버 이름을 가져옵니다.Get the login server name with the az acr list command:

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

docker tag를 사용하여 이미지에 태그를 지정합니다.Use docker tag to tag the image. 다음과 같이 <acrLoginServer>를 ACR 로그인 서버 이름 또는 공용 레지스트리 호스트 이름으로 바꾸고, 이미지 버전을 :v2로 업데이트합니다.Replace <acrLoginServer> with your ACR login server name or public registry hostname, and update the image version to :v2 as follows:

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v2

이제 docker push를 사용하여 레지스트리에 이미지를 업로드합니다.Now use docker push to upload the image to your registry. <acrLoginServer>를 ACR 로그인 서버 이름으로 바꿉니다.Replace <acrLoginServer> with your ACR login server name.

참고

ACR 레지스트리로 푸시하는 데 문제가 있는 경우 여전히 로그인되어 있는지 확인합니다.If you experience issues pushing to your ACR registry, make sure that you are still logged in. Azure Container Registry 만들기 단계에서 생성한 Azure Container Registry의 이름을 사용하여 az acr login 명령을 실행합니다.Run the az acr login command using the name of your Azure Container Registry that you created in the Create an Azure Container Registry step. az acr login --name <azure container registry name>)을 입력합니다.For example, az acr login --name <azure container registry name>.

docker push <acrLoginServer>/azure-vote-front:v2

업데이트된 애플리케이션 배포Deploy the updated application

최대 작동 시간을 제공하려면 애플리케이션 Pod의 여러 인스턴스가 실행되고 있어야 합니다.To provide maximum uptime, multiple instances of the application pod must be running. kubectl get pods 명령을 사용하여 실행 중인 프런트 엔드 인스턴스 수를 확인합니다.Verify the number of running front-end instances with the kubectl get pods command:

$ kubectl get pods

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-217588096-5w632    1/1       Running   0          10m
azure-vote-front-233282510-b5pkz   1/1       Running   0          10m
azure-vote-front-233282510-dhrtr   1/1       Running   0          10m
azure-vote-front-233282510-pqbfk   1/1       Running   0          10m

프런트 엔드 Pod가 하나만 있는 경우 다음과 같이 azure-vote-front 배포를 확장합니다.If you don't have multiple front-end pods, scale the azure-vote-front deployment as follows:

kubectl scale --replicas=3 deployment/azure-vote-front

애플리케이션을 업데이트하려면 kubectl set 명령을 사용합니다.To update the application, use the kubectl set command. <acrLoginServer>를 컨테이너 레지스트리의 로그인 서버 또는 호스트 이름으로 업데이트하고, v2 애플리케이션 버전을 지정합니다.Update <acrLoginServer> with the login server or host name of your container registry, and specify the v2 application version:

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2

배포를 모니터링하려면 kubectl get pod 명령을 사용합니다.To monitor the deployment, use the kubectl get pod command. 업데이트된 애플리케이션이 배포되면 Pod가 종료되고 새 컨테이너 이미지로 다시 만들어집니다.As the updated application is deployed, your pods are terminated and re-created with the new container image.

kubectl get pods

다음 예제 출력은 배포가 진행됨에 따라 Pod가 종료되고 새 인스턴스가 실행되는 것을 보여줍니다.The following example output shows pods terminating and new instances running as the deployment progresses:

$ kubectl get pods

NAME                               READY     STATUS        RESTARTS   AGE
azure-vote-back-2978095810-gq9g0   1/1       Running       0          5m
azure-vote-front-1297194256-tpjlg  1/1       Running       0          1m
azure-vote-front-1297194256-tptnx  1/1       Running       0          5m
azure-vote-front-1297194256-zktw9  1/1       Terminating   0          1m

업데이트된 애플리케이션 테스트Test the updated application

업데이트된 애플리케이션을 보려면 먼저 azure-vote-front 서비스의 외부 IP 주소를 가져옵니다.To view the update application, first get the external IP address of the azure-vote-front service:

kubectl get service azure-vote-front

로컬 웹 브라우저를 서비스의 IP 주소로 엽니다.Now open a local web browser to the IP address of your service:

Azure의 Kubernetes 클러스터 이미지

다음 단계Next steps

이 자습서에서는 애플리케이션을 업데이트하고 AKS 클러스터에 배포했습니다.In this tutorial, you updated an application and rolled out this update to your AKS cluster. 구체적으로 다음 작업 방법을 알아보았습니다.You learned how to:

  • 프런트 엔드 애플리케이션 코드 업데이트Update the front-end application code
  • 업데이트된 컨테이너 이미지 만들기Create an updated container image
  • Azure Container Registry에 컨테이너 이미지 푸시Push the container image to Azure Container Registry
  • 업데이트된 컨테이너 이미지 배포Deploy the updated container image

다음 자습서를 진행하여 AKS 클러스터를 새 버전의 Kubernetes로 업그레이드하는 방법을 알아보세요.Advance to the next tutorial to learn how to upgrade an AKS cluster to a new version of Kubernetes.