연습 - Azure Kubernetes Service 클러스터에 애플리케이션 배포

완료됨

이 연습에서는 AKS(Azure Kubernetes Service)에 회사의 백 엔드 메시징 서비스를 테스트 앱으로 배포합니다. 서비스는 이전 연습에서 만든 Redis PaaS 서비스에 연결됩니다.

참고 항목

서비스에 대한 코드는 GitHub 리포지토리에서 사용할 수 있습니다.

Redis에서 목록 만들기

Redis에서 목록을 만들고 임의의 요소로 채워 데이터를 수신하는 큐를 시뮬레이션해야 합니다. 큐의 각 항목은 마이크로 서비스에서 처리할 항목을 나타냅니다. 이 연습에서는 정적 수의 항목을 추가합니다. 연습의 뒷부분에서 마이크로 서비스의 크기를 큐의 항목 수로 조정합니다.

  1. Docker가 컴퓨터에서 실행되고 있는지 확인합니다.

  2. 명령을 사용하여 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>
    
  3. 다음 명령을 사용하여 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
    
  4. 다음 명령을 사용하여 목록의 길이를 확인합니다.llen keda

    llen keda
    
  5. exit을(를) 입력하여 Redis 셸을 종료합니다.

배포 매니페스트 만들기

애플리케이션을 배포하는 배포 매니페스트 파일을 만듭니다. 매니페스트 파일을 사용하면 배포하려는 리소스 유형 및 워크로드와 관련된 세부 정보를 정의할 수 있습니다.

Kubernetes는 인텔리전스가 없는 Pod라는 논리 구조로 컨테이너를 그룹화합니다. 배포는 누락된 인텔리전스를 추가하여 애플리케이션을 만듭니다.

  1. Cloud Shell에서 다음 명령을 사용하여 touch 호출 deployment.yaml 되는 Kubernetes 배포에 대한 매니페스트 파일을 만듭니다.

    touch deployment.yaml
    
  2. code .을 입력하여 Cloud Shell에서 통합 편집기를 엽니다.

  3. 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 ***
    
  4. 매니페스트 파일(CTRL + S)을 저장하고 편집기(CTRL + Q)를 닫습니다.

매니페스트 적용

  1. 다음 명령을 사용하여 클러스터에 매니페스트를 배포합니다.kubectl apply

    kubectl apply -f ./deployment.yaml
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    deployment.apps/contoso-microservice created
    
  2. 다음 명령을 사용하여 배포가 성공했는지 확인합니다.kubectl get deployment

    kubectl get deployment contoso-microservice
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-microservice   1/1     1            0           16s
    
  3. 다음 명령을 사용하여 Pod가 실행되고 있는지 확인합니다 kubectl get pods .

    kubectl get pods
    

    출력은 다음 예제 출력과 비슷하게 됩니다.

    NAME                                    READY   STATUS    RESTARTS   AGE
    contoso-microservice-7c58c5f699-r79mv   1/1     Running   0          63s