자습서: 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 Local에서 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
으로 엽니다.
config_file.cfg에 제공된 업데이트된 값이 실행 중인 애플리케이션에 표시됩니다.
이미지 태그 지정 및 밀어넣기
업데이트된 이미지를 올바르게 사용하려면 Azure Container Registry 인스턴스의 로그인 서버 이름으로 azure-vote-front 이미지에 태그를 지정합니다. 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를 사용하여 레지스트리에 이미지를 업로드합니다. Azure Container Registry 로그인 서버 이름으로 대체 <acrLoginServer>
합니다.
참고 항목
컨테이너 레지스트리로 푸시하는 데 문제가 발생하는 경우 여전히 로그인되어 있는지 확인합니다. 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 Container Registry에 컨테이너 이미지 푸시
- 업데이트된 컨테이너 이미지 배포
클러스터를 새 버전의 Kubernetes로 업그레이드하는 방법을 알아보려면 다음 자습서로 진행하세요.