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

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

이 자습서에서는 애플리케이션을 테스트하기 위해 Azure Service Bus 네임스페이스 및 큐를 만듭니다. 다음 방법을 알아봅니다:

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

시작하기 전에

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

이 자습서에서는 청구 가능한 Azure Service Bus 리소스를 만듭니다. 이러한 단계를 완료하려면 Service Bus 리소스를 만들고 관리하고 리소스 그룹(예: 참가자 또는 소유자)에서 AKS 워크로드를 업데이트할 수 있는 ID 사용합니다.

이 자습서에서는 AKS 데스크톱을 설치해야 합니다.

환경 변수 만들기

  • Azure CLI 사용하여 이 자습서의 명령에 사용할 다음 환경 변수를 만듭니다.

    LOC_NAME=westus2
    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 네임스페이스 및 큐 만들기를 참조하세요.

이 흐름에서는 order-service 이 섹션에서 만든 sender 권한 부여 규칙 및 키를 사용하여 orders 큐에 메시지를 보냅니다.

Azure CLI 사용하여 이 자습서의 명령에 사용할 다음 환경 변수를 만듭니다.

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

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    

    명령이 성공적으로 완료되고 네임스페이스 세부 정보를 반환하는 경우 계속합니다.

  2. az servicebus queue create 명령을 사용하여 Azure Service Bus 큐를 만듭니다.

    az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
    

    계속하기 전에 큐가 있는지 확인합니다.

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  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
    

    매니페스트 업데이트 단계에 대해 다음 값을 저장합니다.

    • <REPLACE_WITH_YOUR_ACR_NAME>: 이전 자습서의 Azure Container Registry 이름입니다.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD> primaryKey: 명령 출력의 값입니다.

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

  1. AKS 데스크톱의 프로젝트 로 이동하여 이전 자습서 my-dev-frontend에서 만든 프로젝트를 선택합니다.

  2. 리소스 탭 선택한 다음 워크로드>를 선택합니다. 배포, 리소스, 워크로드, 배포, 주문 서비스 편집을 보여 주는 스크린샷

  3. 편집기를 선택합니다.

  4. 기존 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
            startupProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 20
              periodSeconds: 10
            readinessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 3
              initialDelaySeconds: 3
              periodSeconds: 5
            livenessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 3
              periodSeconds: 3
    

    편집기를 사용하여 YAML 배포를 업데이트하는 방법을 보여 주는 스크린샷

    참고

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

  5. 저장 및 적용을 선택하여 업데이트를 유지합니다.

  6. 계속하기 전에 업데이트 order-service 된 배포가 워크로드 보기에서 정상 상태에 도달했는지 확인합니다.

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

  1. 명령을 사용하여 업데이트된 애플리케이션을 배포합니다 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
    
  2. 업데이트된 배포가 실행 중인지 확인합니다.

    kubectl get pods
    

애플리케이션 Pod가 Running 상태일 때 계속 진행합니다.

애플리케이션 테스트

샘플 순서 지정

AKS 데스크톱

Resource>Network>Service: 스토어 프런트>외부 IP로 이동하여 공용 IP 주소를 가져옵니다.

외부 IP 주소 가져오기를 보여 주는 스크린샷

명령줄

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

    kubectl get service store-front
    

    EXTERNAL-IP이(가) <pending>인 경우, 1분 정도 기다린 후 공용 IP 주소가 나타날 때까지 명령을 다시 실행하세요.

  2. store-front를 사용하여 브라우저에서 http://<external-ip> 서비스의 외부 IP 주소로 이동합니다.

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

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

Azure Service Bus 큐의 순서 보기

  1. Azure Portal로 이동하여 이전에 만든 Azure Service Bus 네임스페이스를 엽니다.
  2. Entities에서 Queues를 선택한 다음 orders 큐를 선택합니다.
  3. 주문 큐에서 Service Bus Explorer를 선택합니다.
  4. 제출한 주문을 보려면 처음부터 미리 보기를 선택하세요.

다음 단계

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

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

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