자습서: AKS용 애플리케이션 준비

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

7부 중 1부인 이 자습서에서는 Azure Arc에서 사용하도록 설정된 Azure Kubernetes Service 사용할 때 Kubernetes 클러스터에서 다중 컨테이너 애플리케이션을 사용할 수 있도록 준비됩니다. Docker Compose와 같은 기존 개발 도구는 애플리케이션을 로컬로 빌드하고 테스트하는 데 사용됩니다.

다음 방법을 알아봅니다.

  • GitHub에서 애플리케이션 예제 소스 복제
  • 애플리케이션 예제 소스로 컨테이너 이미지 만들기
  • 로컬 Docker 환경에서 다중 컨테이너 애플리케이션 테스트

완료되면 다음 애플리케이션이 로컬 개발 환경에서 실행됩니다.

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

이후 자습서에서는 컨테이너 이미지가 Azure Container Registry 업로드된 다음 Kubernetes 클러스터에 배포됩니다.

시작하기 전에

이 자습서에서는 컨테이너, 컨테이너 이미지 및 docker 명령과 같은 핵심 Docker 개념에 대한 기본적인 지식이 있다고 가정합니다. 컨테이너 기본 사항에 대한 입문서는 Docker 시작을 참조하세요.

이 자습서를 완료하려면 Linux 컨테이너를 실행하는 로컬 Docker 개발 환경이 필요합니다. Docker는 Windows에서 Docker를 구성하는 패키지를 제공합니다.

참고

AKS는 이러한 자습서의 모든 단계를 완료하는 데 필요한 Docker 구성 요소를 포함하지 않습니다. 따라서 전체 Docker 개발 환경을 사용하는 것이 좋습니다.

애플리케이션 코드 가져오기

이 자습서에서 사용되는 샘플 애플리케이션은 프런트 엔드 웹 구성 요소 및 백 엔드 Redis 인스턴스로 구성된 기본 투표 앱입니다. 웹 구성 요소는 사용자 지정 컨테이너 이미지에 패키지됩니다. Redis 인스턴스는 Docker 허브에서 수정되지 않은 이미지를 사용합니다.

GitHub를 사용하여 샘플 애플리케이션을 개발 환경에 복제합니다.

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

복제된 디렉터리로 변경합니다.

cd azure-voting-app-redis

해당 디렉터리에는 애플리케이션 소스 코드, 미리 만든 Docker Compose 파일 및 Kubernetes 매니페스트 파일이 있습니다. 이러한 파일은 자습서 집합 전체에서 사용됩니다. 디렉터리의 내용과 구조는 다음과 같습니다.

azure-voting-app-redis
│   azure-vote-all-in-one-redis.yaml
│   docker-compose.yaml
│   LICENSE
│   README.md
│
├───azure-vote
│   │   app_init.supervisord.conf
│   │   Dockerfile
│   │   Dockerfile-for-app-service
│   │   sshd_config
│   │
│   └───azure-vote
│       │   config_file.cfg
│       │   main.py
│       │
│       ├───static
│       │       default.css
│       │
│       └───templates
│               index.html
│
└───jenkins-tutorial
        config-jenkins.sh
        deploy-jenkins-vm.sh

컨테이너 이미지 만들기

Docker Compose를 사용하여 컨테이너 이미지 빌드 및 다중 컨테이너 애플리케이션 배포를 자동화할 수 있습니다.

샘플 docker-compose.yaml 파일을 사용하여 컨테이너 이미지를 만들고, Redis 이미지를 다운로드하고, 애플리케이션을 시작합니다.

docker-compose up -d

완료되면 docker images 명령을 사용하여 만든 이미지를 확인합니다. 세 개의 이미지가 다운로드되거나 만들어졌습니다. azure-vote-front 이미지에는 프런트 앤드 애플리케이션이 포함되어 있으며 nginx-flask 이미지를 기준으로 사용합니다. redis 이미지는 Redis 인스턴스를 시작하는 데 사용됩니다.

$ docker images

REPOSITORY                                     TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/azuredocs/azure-vote-front   v1                  84b41c268ad9        9 seconds ago       944MB
mcr.microsoft.com/oss/bitnami/redis            6.0.8               3a54a920bb6c        2 days ago          103MB
tiangolo/uwsgi-nginx-flask                     python3.6           a16ce562e863        6 weeks ago         944MB

docker ps 명령을 실행하여 실행 중인 컨테이너를 확인합니다.

$ docker ps

CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                           NAMES
d10e5244f237        mcr.microsoft.com/azuredocs/azure-vote-front:v1   "/entrypoint.sh /sta…"   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8080->80/tcp   azure-vote-front
21574cb38c1f        mcr.microsoft.com/oss/bitnami/redis:6.0.8         "/opt/bitnami/script…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp          azure-vote-back

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

실행 중인 애플리케이션을 보려면 로컬 웹 브라우저에 http://localhost:8080을 입력합니다. 다음 예제처럼 샘플 애플리케이션이 로드됩니다.

로컬 웹 브라우저에서 열린 컨테이너 이미지를 보여 주는 스크린샷

리소스 정리

이제 애플리케이션의 기능의 유효성이 검사되었으므로 실행 중인 컨테이너를 중지하고 제거할 수 있습니다. 컨테이너 이미지를 삭제하지 마세요. 다음 자습서에서는 azure-vote-front 이미지가 Azure Container Registry instance 업로드됩니다.

docker-compose down 명령을 사용하여 컨테이너 인스턴스 및 리소스를 중지하고 제거합니다.

docker-compose down

로컬 애플리케이션을 제거하면 다음 자습서와 함께 사용할 Azure Vote 애플리케이션 azure-vote-front가 포함된 Docker 이미지가 있습니다.

다음 단계

이 자습서에서는 애플리케이션을 테스트하고 애플리케이션에 대한 컨테이너 이미지를 만들었습니다. 구체적으로 다음 작업 방법을 알아보았습니다.

  • GitHub에서 애플리케이션 예제 소스 복제
  • 애플리케이션 예제 소스로 컨테이너 이미지 만들기
  • 로컬 Docker 환경에서 다중 컨테이너 애플리케이션 테스트

그 다음 자습서로 이동하여 Azure Container Registry에 컨테이너 이미지를 저장하는 방법을 알아봅니다.