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

Kubernetes에서 애플리케이션을 배포한 후 새 컨테이너 이미지 또는 이미지 버전을 지정하여 해당 애플리케이션을 업데이트할 수 있습니다. 배포의 일부분만 동시에 업데이트되도록 업데이트가 스테이징됩니다. 이처럼 스테이징 업데이트가 수행되므로 업데이트 중에도 애플리케이션을 계속 실행할 수 있습니다. 또한 배포 오류가 발생하는 경우에는 롤백 메커니즘도 제공됩니다.

이 자습서(전체 7부 중 6부)에서는 샘플 Azure 투표 앱을 업데이트합니다. 다음 방법에 대해 설명합니다.

  • 프런트 엔드 애플리케이션 코드 업데이트
  • 업데이트된 컨테이너 이미지 만들기
  • Azure Container Registry에 컨테이너 이미지 푸시
  • 업데이트된 컨테이너 이미지 배포

시작하기 전에

이전 자습서에서 애플리케이션은 컨테이너 이미지로 패키징되었습니다. 이 이미지는 Azure Container Registry로 업로드되었고, AKS 클러스터를 만들었습니다. 그런 다음, 애플리케이션은 AKS 클러스터에 배포되었습니다.

이 자습서에서 사용한 미리 작성된 Docker Compose 파일과 애플리케이션 소스 코드를 포함하는 애플리케이션 리포지토리도 복제했습니다. 리포지토리 복제본을 만들었으며, 디렉터리를 복제된 디렉터리로 변경했는지 확인합니다. 이러한 단계를 완료하지 않은 경우 수행하려면 자습서 1 - 컨테이너 이미지 만들기로 시작합니다.

이 자습서의 작업을 수행하려면 Azure CLI 버전 2.0.53 이상을 실행해야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

애플리케이션 업데이트

샘플 애플리케이션을 변경한 다음, AKS 클러스터에 배포된 버전을 업데이트하겠습니다. 복제된 azure-voting-app-redis 디렉터리에 있는지 확인합니다. 그런 다음, azure-vote 디렉터리 내에서 애플리케이션 예제 소스 코드를 찾을 수 있습니다. vi 같은 편집기를 사용하여 config_file.cfg 파일을 엽니다.

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

VOTE1VALUEVOTE2VALUE 값을 색과 같은 다른 값으로 변경합니다. 다음 예제에서는 업데이트된 값을 보여줍니다.

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

파일을 저장 후 닫습니다. vi에서 :wq를 사용합니다.

컨테이너 이미지 업데이트

프런트 엔드 이미지를 다시 만들고 업데이트된 애플리케이션을 테스트하려면 docker-compose 명령을 사용합니다. --build 인수를 사용하여 애플리케이션 이미지를 다시 만들도록 Docker Compose에 명령합니다.

docker-compose up --build -d

로컬에서 애플리케이션 테스트

업데이트된 컨테이너 이미지에 변경 내용이 적용되었는지 확인하고, 로컬 웹 브라우저를 http://localhost:8080으로 엽니다.

Screenshot showing an example of the updated container image Azure Voting App running locally opened in a local web browser

config_file.cfg 파일에 제공된 업데이트된 값은 실행 중인 애플리케이션에 표시됩니다.

이미지 태그 지정 및 밀어넣기

업데이트된 이미지를 올바르게 사용하려면 azure-vote-front 이미지에 ACR 레지스트리의 로그인 서버 이름을 태그로 지정해야 합니다. az acr list 명령을 사용하여 로그인 서버 이름을 가져옵니다.

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

docker tag를 사용하여 이미지에 태그를 지정합니다. 다음과 같이 <acrLoginServer>를 ACR 로그인 서버 이름 또는 공용 레지스트리 호스트 이름으로 바꾸고, 이미지 버전을 :v2로 업데이트합니다.

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

이제 docker push를 사용하여 레지스트리에 이미지를 업로드합니다. <acrLoginServer>를 ACR 로그인 서버 이름으로 바꿉니다.

참고 항목

ACR 레지스트리로 푸시하는 데 문제가 있는 경우 여전히 로그인되어 있는지 확인합니다. Azure Container Registry 만들기 단계에서 생성한 Azure Container Registry의 이름을 사용하여 az acr login 명령을 실행합니다. 예: az acr login --name <azure container registry name>.

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

업데이트된 애플리케이션 배포

최대 작동 시간을 제공하려면 애플리케이션 Pod의 여러 인스턴스가 실행되고 있어야 합니다. kubectl get pods 명령을 사용하여 실행 중인 프런트 엔드 인스턴스 수를 확인합니다.

$ 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 배포를 확장합니다.

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

애플리케이션을 업데이트하려면 kubectl set 명령을 사용합니다. <acrLoginServer>를 컨테이너 레지스트리의 로그인 서버 또는 호스트 이름으로 업데이트하고, v2 애플리케이션 버전을 지정합니다.

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

배포를 모니터링하려면 kubectl get pod 명령을 사용합니다. 업데이트된 애플리케이션이 배포되면 Pod가 종료되고 새 컨테이너 이미지로 다시 만들어집니다.

kubectl get pods

다음 예제 출력은 배포가 진행됨에 따라 Pod가 종료되고 새 인스턴스가 실행되는 것을 보여줍니다.

$ 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

업데이트된 애플리케이션 테스트

업데이트된 애플리케이션을 보려면 먼저 azure-vote-front 서비스의 외부 IP 주소를 가져옵니다.

kubectl get service azure-vote-front

이제 서비스의 IP 주소로 웹 브라우저를 엽니다.

Screenshot showing an example of the updated image Azure Voting App running in an AKS cluster opened in a local web browser.

다음 단계

이 자습서에서는 애플리케이션을 업데이트하고 AKS 클러스터에 배포했습니다. 다음 방법에 대해 알아보았습니다.

  • 프런트 엔드 애플리케이션 코드 업데이트
  • 업데이트된 컨테이너 이미지 만들기
  • Azure Container Registry에 컨테이너 이미지 푸시
  • 업데이트된 컨테이너 이미지 배포

다음 자습서를 진행하여 AKS 클러스터를 새 버전의 Kubernetes로 업그레이드하는 방법을 알아보세요.