Tutorial: Verwenden von PaaS-Diensten mit einem Azure Kubernetes Service-Cluster (AKS)

Mit Kubernetes können Sie PaaS-Dienste wie Azure Service Busverwenden, um Ihre Anwendungen zu entwickeln und auszuführen.

In diesem Lernprogramm, Teil fünf von sieben, erstellen Sie einen Azure Service Bus-Namespace und eine Warteschlange, um Ihre Anwendung zu testen. Folgendes wird vermittelt:

  • Erstellen eines Azure Service Bus-Namespace und einer -Warteschlange.
  • Aktualisieren Sie die Kubernetes-Manifestdatei so, dass sie die Azure Service Bus-Warteschlange verwendet.
  • Testen Sie die aktualisierte Anwendung, indem Sie eine Bestellung übermitteln.

Voraussetzungen

In vorherigen Tutorials haben Sie eine Anwendung in ein Containerimage gepackt, das Image in Azure Container Registry hochgeladen, einen Kubernetes-Cluster erstellt und eine Anwendung bereitgestellt. Für dieses Tutorial benötigen Sie die vorab erstellte Kubernetes-Manifestdatei aks-store-quickstart.yaml. Dieser Dateidownload war in einem vorherigen Tutorial im Anwendungsquellcode enthalten. Stellen Sie sicher, dass Sie das Repository geklont und Verzeichnisse in das geklonte Repository geändert haben. Wenn Sie diese Schritte noch nicht ausgeführt haben und dieses Tutorial durcharbeiten möchten, beginnen Sie mit Tutorial 1:Vorbereiten einer Anwendung für AKS.

Für dieses Tutorial wird mindestens Version 2.34.1 der Azure-Befehlszeilenschnittstelle vorausgesetzt. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.

Erstellen von Umgebungsvariablen

  • Erstellen Sie die folgenden Umgebungsvariablen, die für die Befehle in diesem Lernprogramm verwendet werden sollen:

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

Erstellen eines Azure Service Bus-Namespace und einer -Warteschlange

In früheren Lernprogrammen haben Sie einen RabbitMQ-Container zum Speichern von Bestellungen verwendet, die vom order-service übermittelt wurden. In diesem Lernprogramm verwenden Sie einen Azure Service Bus-Namespace, um einen Bereichscontainer für die Service Bus-Ressourcen innerhalb der Anwendung bereitzustellen. Sie verwenden auch eine Azure Service Bus-Warteschlange zum Senden und Empfangen von Nachrichten zwischen den Anwendungskomponenten. Weitere Informationen zu Azure Service Bus finden Sie unter Erstellen eines Azure Service Bus-Namespaces und einer -Warteschlange.

  1. Erstellen eines Azure Service Bus-Namespace mithilfe des Befehls az servicebus namespace create.

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. Erstellen einer Azure Service Bus-Warteschlange mithilfe des Befehls az servicebus queue create.

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  3. Erstellen einer Azure Service Bus-Autorisierungsregel mithilfe des Befehls az servicebus queue authorization-rule create.

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. Abrufen der Azure Service Bus-Anmeldeinformationen für die spätere Verwendung mithilfe der Befehle az servicebus namespace show und 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
    

Aktualisieren der Kubernetes-Manifestdatei

  1. Konfigurieren Sie kubectl, um mithilfe des Befehls „az aks get-credentials“ eine Verbindung mit Ihrem Cluster herzustellen.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Öffnen Sie die Datei aks-store-quickstart.yaml in einem Text-Editor.

  3. Entfernen Sie die vorhandenen Abschnitte rabbitmq-StatefulSet, -ConfigMap und -Dienst und ersetzen Sie den vorhandenen Abschnitt order-service-Bereitstellung durch den folgenden Inhalt:

    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
    

    Hinweis

    Das direkte Hinzufügen vertraulicher Informationen (z. B. API-Schlüssel) in Ihren Kubernetes-Manifestdateien ist nicht sicher, da sie versehentlich in Coderepositorys committet werden könnten. Sie wurden in diesem Fall lediglich der Einfachheit halber hinzugefügt. Verwenden Sie für Produktionsworkloads stattdessen eine verwaltete Identität, um sich bei Azure Service Bus zu authentifizieren, oder speichern Sie Ihre Geheimnisse in Azure Key Vault.

  4. Speichern und schließen Sie die aktualisierte Datei aks-store-quickstart.yaml.

Bereitstellen der aktualisierten Anwendung

  • Stellen Sie die Anwendung mit dem Befehl kubectl apply bereit.

    kubectl apply -f aks-store-quickstart.yaml
    

    Die folgende Beispielausgabe zeigt die erfolgreich aktualisierten Ressourcen:

    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
    

Testen der App

Aufgeben einer Beispielbestellung

  1. Abrufen der externe IP-Adresse des Diensts store-front mithilfe des Befehls kubectl get service.

    kubectl get service store-front
    
  2. Öffnen der externen IP-Adresse des store-front-Diensts in einem Webbrowser.

  3. Aufgeben einer Bestellung, indem Sie ein Produkt auswählen und Zum Warenkorb hinzufügen auswählen.

  4. Wählen Sie Warenkorb aus, um Ihre Bestellung anzuzeigen, und wählen Sie dann Zur Kasseaus.

Anzeigen der Bestellung in der Azure Service Bus-Warteschlange

  1. Navigieren Sie zum Azure-Portal und öffnen Sie den zuvor erstellten Azure Service Bus-Namespace.
  2. Wählen Sie unter Entitäten das Element Warteschlangen aus und wählen Sie dann die Warteschlange Bestellungen aus.
  3. Wählen Sie in der Warteschlange Bestellungen das Element Service Bus Explorer.
  4. Wählen Sie Ab Anfang einsehen aus, um die von Ihnen übermittelte Bestellung anzuzeigen.

Nächste Schritte

In diesem Tutorial haben Sie Azure Service Bus zum Aktualisieren und Testen der Beispielanwendung verwendet. Sie haben Folgendes gelernt:

  • Erstellen eines Azure Service Bus-Namespace und einer -Warteschlange.
  • Aktualisieren Sie die Kubernetes-Manifestdatei so, dass sie die Azure Service Bus-Warteschlange verwendet.
  • Testen Sie die aktualisierte Anwendung, indem Sie eine Bestellung übermitteln.

Im nächsten Tutorial erfahren Sie, wie Sie eine Anwendung in AKS skalieren können.