자습서 - AKS(Azure Kubernetes Service) 클러스터에서 PaaS 서비스 사용

Kubernetes를 사용하면 Azure Service Bus 같은 PaaS 서비스를 사용하여 애플리케이션을 개발하고 실행할 수 있습니다.

이 자습서(7부 중 5부)에서는 애플리케이션을 테스트하는 Azure Service Bus 네임스페이스와 큐를 만듭니다. 다음 방법에 대해 설명합니다.

  • Azure Service Bus 네임스페이스 및 큐 만들기
  • Azure Service Bus 큐를 사용하도록 Kubernetes 매니페스트 파일 업데이트하기
  • 주문하여 업데이트된 애플리케이션 테스트하기

시작하기 전에

이전 자습서에서는 애플리케이션을 컨테이너 이미지로 패키징하고, Azure Container Registry에 이미지를 업로드하며, Kubernetes 클러스터를 만들고, 애플리케이션을 배포했습니다. 이 자습서를 완료하려면 미리 작성된 aks-store-quickstart.yaml Kubernetes 매니페스트 파일이 필요합니다. 이 파일 다운로드는 이전 자습서의 애플리케이션 원본에 포함되었습니다. 리포지토리를 복제하고 디렉터리를 복제된 리포지토리로 변경했는지 확인합니다. 아직 이 단계를 완료하지 않았고 계속 진행하려면 자습서 1 - AKS용 애플리케이션 준비부터 시작합니다.

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

환경 변수 만들기

  • 이 자습서의 명령에 사용할 환경 변수를 다음과 같이 만듭니다.

    LOC_NAME=eastus
    RAND=$RANDOM
    RG_NAME=myResourceGroup
    AKS_NAME=myAKSCluster
    SB_NS=sb-store-demo-$RAND
    

Azure Service Bus 네임스페이스 및 큐 만들기

이전 자습서에서는 RabbitMQ 컨테이너를 사용하여 order-service에서 제출한 주문서를 저장했습니다. 이 자습서에서는 Azure Service Bus 네임스페이스를 사용하여 애플리케이션 내 Service Bus 리소스의 범위 지정 컨테이너를 제공합니다. 또한 Azure Service Bus 큐를 사용하여 애플리케이션 구성 요소 간에 메시지를 주고받습니다. Azure Service Bus에 대한 자세한 내용은 Azure Service Bus 네임스페이스 및 큐 만들기를 참조하세요.

  1. az servicebus namespace create 명령을 사용하여 Azure Service Bus 네임스페이스를 만듭니다.

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. az servicebus queue create 명령을 사용하여 Azure Service Bus 큐를 만듭니다.

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  3. az servicebus queue authorization-rule create 명령을 사용하여 Azure Service Bus 권한 부여 규칙을 만듭니다.

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. 나중에 사용할 수 있도록 az servicebus namespace showaz servicebus queue authorization-rule keys list 명령을 사용하여 Azure Service Bus 자격 증명을 가져옵니다.

    az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv
    az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
    

Kubernetes 매니페스트 파일 업데이트

  1. az aks get-credentials 명령을 사용하여 클러스터에 연결하도록 kubectl을 구성합니다.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. 텍스트 편집기에서 aks-store-quickstart.yaml 파일을 엽니다.

  3. 기존 rabbitmq StatefulSet, ConfigMap, 서비스 섹션을 제거하고 기존 order-service 배포 섹션을 다음 콘텐츠로 바꿉니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.io/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.windows.net
            - name: ORDER_QUEUE_PORT
              value: "5671"
            - name: ORDER_QUEUE_TRANSPORT
              value: "tls"
            - name: ORDER_QUEUE_USERNAME
              value: "sender"
            - name: ORDER_QUEUE_PASSWORD
              value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    

    참고 항목

    API 키와 같은 중요한 정보를 Kubernetes 매니페스트 파일에 직접 추가하는 것은 안전하지 않으며 실수로 코드 리포지토리에 커밋될 수 있습니다. 여기서는 간소화하기 위해 추가했습니다. 프로덕션 워크로드의 경우 관리 ID를 사용하여 Azure Service Bus를 인증하거나 Azure Key Vault에 비밀을 저장합니다.

  4. 업데이트된 aks-store-quickstart.yaml 파일을 저장한 후 닫습니다.

업데이트된 애플리케이션 배포

  • kubectl apply 명령을 사용하여 업데이트된 애플리케이션을 배포합니다.

    kubectl apply -f aks-store-quickstart.yaml
    

    다음 예제 출력에서는 성공적으로 업데이트된 리소스를 보여 줍니다.

    deployment.apps/order-service configured
    service/order-service unchanged
    deployment.apps/product-service unchanged
    service/product-service unchanged
    deployment.apps/store-front configured
    service/store-front unchanged
    

애플리케이션 테스트

샘플 순서 지정

  1. kubectl get service 명령을 사용하여 store-front 서비스의 외부 IP 주소를 가져옵니다.

    kubectl get service store-front
    
  2. 브라우저에서 store-front 서비스의 외부 IP 주소로 이동합니다.

  3. 제품을 선택하고 카트에 추가를 선택하여 주문합니다.

  4. 카트를 선택하여 주문을 확인한 다음 구매하기를 선택합니다.

Azure Service Bus 큐에서 주문 보기

  1. Azure Portal로 이동하여 이전에 만든 Azure Service Bus 네임스페이스를 엽니다.
  2. 엔터티에서 를 선택한 다음 주문 창을 선택합니다.
  3. 주문 큐에서 Service Bus Explorer를 선택합니다.
  4. 처음부터 피킹을 선택하여 제출한 주문을 확인합니다.

다음 단계

이 자습서에서는 Azure Service Bus를 사용하여 샘플 애플리케이션을 업데이트하고 테스트했습니다. 다음 방법에 대해 알아보았습니다.

  • Azure Service Bus 네임스페이스 및 큐 만들기
  • Azure Service Bus 큐를 사용하도록 Kubernetes 매니페스트 파일 업데이트하기
  • 주문하여 업데이트된 애플리케이션 테스트하기

다음 자습서에서는 AKS에서 애플리케이션의 크기를 조정하는 방법을 알아봅니다.