연습 - Azure Kubernetes Service 클러스터에 애플리케이션 배포
이 연습에서는 AKS(Azure Kubernetes Service)에 회사의 백 엔드 메시징 서비스를 테스트 앱으로 배포합니다. 서비스는 이전 연습에서 만든 Redis PaaS 서비스에 연결됩니다.
참고 항목
서비스에 대한 코드는 GitHub 리포지토리에서 사용할 수 있습니다.
Redis에서 목록 만들기
Redis에서 목록을 만들고 임의의 요소로 채워 데이터를 수신하는 큐를 시뮬레이션해야 합니다. 큐의 각 항목은 마이크로 서비스에서 처리할 항목을 나타냅니다. 이 연습에서는 정적 수의 항목을 추가합니다. 연습의 뒷부분에서 마이크로 서비스의 크기를 큐의 항목 수로 조정합니다.
Docker가 컴퓨터에서 실행되고 있는지 확인합니다.
명령을 사용하여 Azure Cache for Redis에 연결하는 Redis 컨테이너를 로컬로
docker run
만듭니다.docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
출력은 다음 예제 출력과 비슷하게 됩니다.
redis-contoso-video.redis.cache.windows.net:6379>
다음 명령을 사용하여
lpush keda
목록을 만들고 임의 요소로 채웁다.lpush keda Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eget interdum felis, ac ultricies nulla. Fusce vehicula mattis laoreet. Quisque facilisis bibendum dui, at scelerisque nulla hendrerit sed. Sed rutrum augue arcu, id maximus felis sollicitudin eget. Curabitur non libero rhoncus, pellentesque orci a, tincidunt sapien. Suspendisse laoreet vulputate sagittis. Vivamus ac magna lacus. Etiam sagittis facilisis dictum. Phasellus faucibus sagittis libero, ac semper lorem commodo in. Quisque tortor lorem, sollicitudin non odio sit amet, finibus molestie eros. Proin aliquam laoreet eros, sed dapibus tortor euismod quis. Maecenas sed viverra sem, at porta sapien. Sed sollicitudin arcu leo, vitae elementum
다음 명령을 사용하여 목록의 길이를 확인합니다.
llen keda
llen keda
exit
을(를) 입력하여 Redis 셸을 종료합니다.
배포 매니페스트 만들기
애플리케이션을 배포하는 배포 매니페스트 파일을 만듭니다. 매니페스트 파일을 사용하면 배포하려는 리소스 유형 및 워크로드와 관련된 세부 정보를 정의할 수 있습니다.
Kubernetes는 인텔리전스가 없는 Pod라는 논리 구조로 컨테이너를 그룹화합니다. 배포는 누락된 인텔리전스를 추가하여 애플리케이션을 만듭니다.
Cloud Shell에서 다음 명령을 사용하여
touch
호출deployment.yaml
되는 Kubernetes 배포에 대한 매니페스트 파일을 만듭니다.touch deployment.yaml
code .
을 입력하여 Cloud Shell에서 통합 편집기를 엽니다.deployment.yaml
파일을 열고 다음 매니페스트 코드를 붙여넣습니다. Redis 환경 변수를 사용자 고유의 값으로 바꿔야 합니다.apiVersion: apps/v1 kind: Deployment metadata: name: contoso-microservice spec: replicas: 1 # Tells K8S the number of containers to process the Redis list items selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: contoso-microservice # Labels follow the `name: value` template template: # Template of the pod inside the Deployment metadata: labels: app: contoso-microservice spec: containers: - image: mcr.microsoft.com/mslearn/samples/redis-client:latest name: contoso-microservice resources: requests: cpu: 100m memory: 128Mi limits: cpu: 100m memory: 128Mi env: - name: REDIS_HOST value: "redis-contoso-video.redis.cache.windows.net" # *** REPLACE with your value *** - name: REDIS_PORT value: "6379" # *** REPLACE with your value *** - name: REDIS_LIST value: "keda" # *** REPLACE with your value *** - name: REDIS_KEY value: "******************************************" # *** REPLACE with your value ***
매니페스트 파일(CTRL + S)을 저장하고 편집기(CTRL + Q)를 닫습니다.
매니페스트 적용
다음 명령을 사용하여 클러스터에 매니페스트를 배포합니다.
kubectl apply
kubectl apply -f ./deployment.yaml
출력은 다음 예제 출력과 비슷하게 됩니다.
deployment.apps/contoso-microservice created
다음 명령을 사용하여 배포가 성공했는지 확인합니다.
kubectl get deployment
kubectl get deployment contoso-microservice
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME READY UP-TO-DATE AVAILABLE AGE contoso-microservice 1/1 1 0 16s
다음 명령을 사용하여 Pod가 실행되고 있는지 확인합니다
kubectl get pods
.kubectl get pods
출력은 다음 예제 출력과 비슷하게 됩니다.
NAME READY STATUS RESTARTS AGE contoso-microservice-7c58c5f699-r79mv 1/1 Running 0 63s