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, część piąta z siedmiu, utworzysz przestrzeń nazw i kolejkę usługi Azure Service Bus, aby przetestować aplikację. Dowiedz się, jak odbywa się:

  • Utwórz przestrzeń nazw i kolejkę usługi Azure Service Bus.
  • Zaktualizuj plik manifestu kubernetes, aby użyć 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 został dołączony do kodu źródłowego aplikacji w poprzednim samouczku. Upewnij się, że sklonujesz repozytorium i zmieniono katalogi do 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 wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.34.1 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Tworzenie zmiennych środowiskowych

  • Utwórz następujące zmienne środowiskowe do użycia dla poleceń w tym samouczku:

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

Tworzenie przestrzeni nazw i kolejki 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 udostępnić kontener określania zakresu dla zasobów usługi Service Bus w aplikacji. Kolejka usługi Azure Service Bus służy również 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.

  1. Utwórz przestrzeń nazw usługi Azure Service Bus przy użyciu az servicebus namespace create polecenia .

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. Utwórz kolejkę usługi Azure Service Bus przy użyciu az servicebus queue create polecenia .

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  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. Uzyskaj poświadczenia usługi Azure Service Bus do późniejszego az servicebus namespace show użycia przy użyciu poleceń 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
    

Aktualizowanie pliku manifestu platformy Kubernetes

  1. Skonfiguruj kubectl , aby nawiązać połączenie z klastrem az aks get-credentials przy użyciu polecenia .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. aks-store-quickstart.yaml Otwórz plik w edytorze tekstów.

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

    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
    

    Uwaga

    Bezpośrednie dodawanie poufnych informacji, takich jak klucze interfejsu API, do plików manifestu kubernetes nie jest bezpieczne i może zostać przypadkowo zatwierdzone w repozytoriach kodu. Dodaliśmy to tutaj 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.

  4. Zapisz i zamknij zaktualizowany aks-store-quickstart.yaml plik.

Wdrażanie zaktualizowanej aplikacji

  • 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
    

Testowanie aplikacji

Umieszczanie przykładowej kolejności

  1. Pobierz zewnętrzny adres store-front IP usługi przy użyciu kubectl get service polecenia .

    kubectl get service store-front
    
  2. Przejdź do zewnętrznego store-front adresu IP usługi w przeglądarce.

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

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

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 Jednostki wybierz pozycję Kolejki, a następnie wybierz kolejkę zamówień.
  3. W kolejce zamówień wybierz pozycję Eksplorator usługi Service Bus.
  4. Wybierz pozycję Zobacz od początku , aby wyświetlić przesłane zamówienie.

Następne kroki

W tym samouczku użyto usługi Azure Service Bus do zaktualizowania i przetestowania przykładowej aplikacji. W tym samouczku omówiono:

  • Utwórz przestrzeń nazw i kolejkę usługi Azure Service Bus.
  • Zaktualizuj plik manifestu kubernetes, aby użyć 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.