Samouczek — używanie usług PaaS z klastrem usługi Azure Kubernetes Service (AKS)

Za pomocą platformy Kubernetes można używać usług PaaS, takich jak Azure Service Bus, do tworzenia i uruchamiania aplikacji.

W tym samouczku utworzysz przestrzeń nazw i kolejkę usługi Azure Service Bus, aby przetestować aplikację. Dowiesz się, jak:

  • Utwórz przestrzeń nazw i kolejkę usługi Azure Service Bus.
  • Zaktualizuj plik manifestu Kubernetes tak, aby korzystał z kolejki usługi Azure Service Bus.
  • Przetestuj zaktualizowaną aplikację, składając zamówienie.

Zanim rozpoczniesz

W poprzednich samouczkach spakujesz aplikację do obrazu kontenera, przekazano obraz do usługi Azure Container Registry, utworzono klaster Kubernetes i wdrożono aplikację. Do ukończenia tego samouczka potrzebujesz wstępnie utworzonego pliku manifestu usługi Kubernetes aks-store-quickstart.yaml. Ten plik do pobrania był dołączony do kodu źródłowego aplikacji w poprzednim samouczku. Upewnij się, że sklonowano repozytorium i przejdź do katalogu sklonowanego repozytorium. Jeśli te kroki nie zostały wykonane i chcesz wykonać te czynności, zacznij od samouczka 1 — Przygotowywanie aplikacji dla usługi AKS.

Ten samouczek tworzy zasoby platformy Azure Service Bus objęte opłatami. Aby wykonać te kroki, użyj tożsamości, która umożliwia tworzenie zasobów Service Bus i zarządzanie nimi oraz aktualizowanie obciążeń usługi AKS w grupie zasobów, takich jak Współautor lub Właściciel.

Ten samouczek wymaga zainstalowania programu AKS desktop.

Tworzenie zmiennych środowiskowych

  • Użyj Azure CLI, aby utworzyć następujące zmienne środowiskowe do użycia dla poleceń w tym samouczku:

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

Utwórz przestrzeń nazw i kolejkę usługi Azure Service Bus

W poprzednich samouczkach użyto kontenera RabbitMQ do przechowywania zamówień przesłanych przez program order-service. W tym samouczku użyjesz przestrzeni nazw usługi Azure Service Bus, aby zapewnić kontener wyznaczający zakres dla zasobów usługi Service Bus w aplikacji. Korzystasz również z kolejki usługi Azure Service Bus do wysyłania i odbierania komunikatów między składnikami aplikacji. Aby uzyskać więcej informacji na temat usługi Azure Service Bus, zobacz Tworzenie przestrzeni nazw i kolejki usługi Azure Service Bus.

W tym przepływie order-service wysyła komunikaty do kolejki orders za pomocą reguły autoryzacji sender i klucza, które tworzysz w tej sekcji.

Użyj Azure CLI, aby utworzyć następujące zmienne środowiskowe do użycia dla poleceń w tym samouczku.

  1. Utwórz przestrzeń nazw Azure Service Bus za pomocą polecenia az servicebus namespace create.

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

    Kontynuuj po pomyślnym zakończeniu polecenia i zwróceniu szczegółów przestrzeni nazw.

  2. Utwórz kolejkę usługi Azure Service Bus przy użyciu az servicebus queue create polecenia .

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

    Przed kontynuowaniem sprawdź, czy kolejka istnieje:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  3. Utwórz regułę autoryzacji usługi Azure Service Bus przy użyciu az servicebus queue authorization-rule create polecenia .

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. Pobierz poświadczenia usługi Azure Service Bus do późniejszego użycia za pomocą poleceń az servicebus namespace show i az servicebus queue authorization-rule keys list.

    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
    

    Zapisz następujące wartości dla kroku aktualizacji manifestu:

    • <REPLACE_WITH_YOUR_ACR_NAME>: nazwa Twojego Azure Container Registry z poprzednich samouczków.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: wartość primaryKey z danych wyjściowych polecenia.

Aktualizowanie pliku manifestu platformy Kubernetes

  1. Przejdź do Projekty w aplikacji komputerowej AKS i wybierz ten utworzony w poprzednim samouczku, my-dev-frontend.

  2. Wybierz kartę Zasoby, a następnie wybierz Obciążenia>Wdrożenie: order-service. Zrzut ekranu przedstawiający edytowanie wdrożenia, zasobów, obciążeń, wdrożenia, zamówienia.

  3. Wybierz Edytor.

  4. Usuń istniejące rabbitmq sekcje StatefulSet, ConfigMap i Service. Zastąp istniejącą order-service sekcję Wdrażanie następującą zawartością. Skopiuj i wklej zawartość:

    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
    

    Zrzut ekranu przedstawiający aktualizowanie wdrożenia YAML przy użyciu edytora.

    Uwaga

    Bezpośrednie umieszczanie poufnych informacji, takich jak klucze API, w plikach manifestów Kubernetes nie jest bezpieczne i może skutkować ich przypadkowym zatwierdzeniem w repozytoriach kodu. Ten przykład dodaje go dla uproszczenia. W przypadku obciążeń produkcyjnych użyj tożsamości zarządzanej do uwierzytelniania w usłudze Azure Service Bus lub przechowywania wpisów tajnych w usłudze Azure Key Vault.

  5. Utrwalij aktualizację, wybierając pozycję Zapisz i zastosuj.

  6. Przed kontynuowaniem sprawdź, czy zaktualizowane order-service wdrożenie osiągnie stan dobrej kondycji w widoku obciążenia.

Wdrażanie zaktualizowanej aplikacji

  1. Wdróż zaktualizowaną aplikację kubectl apply przy użyciu polecenia .

    kubectl apply -f aks-store-quickstart.yaml
    

    W poniższych przykładowych danych wyjściowych przedstawiono pomyślnie zaktualizowane zasoby:

    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. Sprawdź, czy zaktualizowane wdrożenie jest uruchomione.

    kubectl get pods
    

Kontynuuj, gdy zasobniki aplikacji są w Running stanie.

Testowanie aplikacji

Złóż przykładowe zamówienie

AKS Desktop

Uzyskaj publiczny adres IP, przechodząc do Zasób>Sieć>Usługa: store-front>Zewnętrzny adres IP.

Zrzut ekranu przedstawiający pobieranie zewnętrznego adresu IP.

Wiersz polecenia

  1. Pobierz zewnętrzny adres IP usługi store-front za pomocą polecenia kubectl get service.

    kubectl get service store-front
    

    Jeśli EXTERNAL-IP to <pending>, odczekaj minutę i ponownie uruchom polecenie, aż pojawi się publiczny adres IP.

  2. Przejdź w przeglądarce do zewnętrznego adresu IP usługi store-front, używając http://<external-ip>.

  3. Umieść zamówienie, wybierając produkt i wybierając pozycję Dodaj do koszyka.

  4. Wybierz pozycję Koszyk, aby wyświetlić swoje zamówienie, a następnie wybierz pozycję Realizuj zakup.

Wyświetlanie kolejności w kolejce usługi Azure Service Bus

  1. Przejdź do witryny Azure Portal i otwórz utworzoną wcześniej przestrzeń nazw usługi Azure Service Bus.
  2. W obszarze Encje wybierz opcję Kolejki, a następnie wybierz kolejkę zamówienia.
  3. W kolejce orders wybierz pozycję Service Bus Explorer.
  4. Wybierz pozycję Zobacz od początku , aby wyświetlić przesłane zamówienie.

Następne kroki

W tym samouczku użyłeś usługi Azure Service Bus do zaktualizowania i przetestowania przykładowej aplikacji. Wiesz już, jak:

  • Utwórz przestrzeń nazw i kolejkę usługi Azure Service Bus.
  • Zaktualizuj plik manifestu Kubernetes tak, aby korzystał z kolejki usługi Azure Service Bus.
  • Przetestuj zaktualizowaną aplikację, składając zamówienie.

W następnym samouczku dowiesz się, jak skalować aplikację w usłudze AKS.