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

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

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

7부 중 6부인 이 자습서에서는 샘플 Azure Vote 앱을 업데이트하는 방법을 설명합니다. 다음 방법을 알게 됩니다.

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

시작하기 전에

이전 자습서에서는 다음을 수행하는 방법을 알아보았습니다.

  • 애플리케이션을 컨테이너 이미지에 패키지하고 이미지를 Azure Container Registry 업로드합니다.
  • Azure Stack HCI에서 Kubernetes 클러스터를 만들고 애플리케이션을 클러스터에 배포합니다.
  • 이 자습서에서 사용할 수 있는 애플리케이션 소스 코드 및 미리 만들어진 Docker Compose 파일을 포함하는 애플리케이션 리포지토리를 복제합니다.

리포지토리의 복제본을 만들고 디렉터리를 복제된 디렉터리로 변경했는지 확인합니다. 이러한 단계를 완료하지 않은 경우 자습서 1 - 컨테이너 이미지 만들기로 시작합니다.

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

애플리케이션 업데이트

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

notepad azure-vote/azure-vote/config_file.cfg

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

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

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

컨테이너 이미지 업데이트

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

docker-compose up --build -d

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

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

로컬 웹 브라우저에서 로컬로 열려 실행되는 업데이트된 컨테이너 이미지 Azure Voting App의 예를 보여주는 스크린샷

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

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

업데이트된 이미지를 올바르게 사용하려면 azure-vote-front 이미지에 Azure Container Registry instance 로그인 서버 이름으로 태그를 지정합니다. az acr list 명령을 사용하여 로그인 서버 이름을 가져옵니다.

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

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

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

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

참고

컨테이너 레지스트리로 푸시하는 데 문제가 발생하는 경우 여전히 로그인되어 있는지 확인합니다. 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 주소에 대한 웹 브라우저를 엽니다.

로컬 웹 브라우저에서 열린 Kubernetes 클러스터에서 실행되는 업데이트된 이미지 Azure Voting App의 예를 보여 주는 스크린샷

다음 단계

이 자습서에서는 애플리케이션을 업데이트하고 이 업데이트를 Kubernetes 클러스터에 롤아웃했습니다. 구체적으로 다음 작업 방법을 알아보았습니다.

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

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