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 erstellen Sie einen Azure Service Bus-Namespace und eine Warteschlange, um Ihre Anwendung zu testen. Folgendes wird vermittelt:

  • Erstellen Sie einen Azure Service Bus-Namespace und eine 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.

Bevor Sie beginnen

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.

In diesem Lernprogramm werden abrechenbare Azure Service Bus-Ressourcen erstellt. Verwenden Sie zum Ausführen dieser Schritte eine Identität, die Service Bus Ressourcen erstellen und verwalten kann, und aktualisieren Sie AKS-Workloads in Ihrer Ressourcengruppe, z. B. Mitwirkender oder Besitzer.

Für dieses Lernprogramm ist die Installation von AKS-Desktop erforderlich.

Erstellen von Umgebungsvariablen

  • Verwenden Sie die Azure CLI, um die folgenden Umgebungsvariablen für die Befehle in diesem Lernprogramm zu erstellen:

    LOC_NAME=westus2
    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.

In diesem Ablauf sendet order-service mithilfe der sender-Autorisierungsregel und des Schlüssels, die bzw. den Sie in diesem Abschnitt erstellen, Nachrichten an die Warteschlange orders.

Verwenden Sie die Azure CLI, um die folgenden Umgebungsvariablen zu erstellen, die für die Befehle in diesem Lernprogramm verwendet werden sollen.

  1. Erstellen Sie mithilfe des az servicebus namespace create Befehls einen Azure Service Bus Namespace.

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

    Fahren Sie fort, wenn der Befehl erfolgreich abgeschlossen ist, und geben Sie die Namespacedetails zurück.

  2. Erstellen einer Azure Service Bus-Warteschlange mithilfe des Befehls az servicebus queue create.

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

    Stellen Sie sicher, dass die Warteschlange vorhanden ist, bevor Sie fortfahren:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  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. Rufen Sie die Azure Service Bus-Anmeldeinformationen für die spätere Verwendung mithilfe der az servicebus namespace show Und az servicebus queue authorization-rule keys list Befehle ab.

    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
    

    Speichern Sie diese Werte für den Manifestaktualisierungsschritt:

    • <REPLACE_WITH_YOUR_ACR_NAME>: der Name Ihrer Azure Container Registry aus den vorherigen Tutorials.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: der primaryKey Wert aus der Befehlsausgabe.

Aktualisieren der Kubernetes-Manifestdatei

  1. Wechseln Sie zu "Projekte" auf dem AKS-Desktop, und wählen Sie das Projekt aus, das Sie im vorherigen Lernprogramm erstellt haben. my-dev-frontend

  2. Wählen Sie die Registerkarte "Ressourcen " und dann "Workloads>Deployment: order-service" aus. Screenshot, der die Bearbeitung von Deployment, Resources, Workloads, Deployment, Order-service zeigt.

  3. Wählen Sie den Editor aus.

  4. Entfernen Sie die vorhandenen rabbitmq Abschnitte "StatefulSet", "ConfigMap" und "Service". Ersetzen Sie den vorhandenen order-service Bereitstellungsabschnitt durch den folgenden Inhalt. Kopieren sie den Inhalt, und fügen Sie ihn ein:

    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
    

    Screenshot der Verwendung des Editors zum Aktualisieren der YAML-Bereitstellung.

    Hinweis

    Das direkte Hinzufügen vertraulicher Informationen, z. B. API-Schlüsseln, zu Ihren Kubernetes-Manifestdateien ist unsicher und kann dazu führen, dass sie versehentlich in Code-Repositorys eingecheckt werden. In diesem Beispiel wird sie zur Einfachheit 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.

  5. Speichern Sie das Update, indem Sie Speichern und Übernehmen auswählen.

  6. Stellen Sie sicher, dass das aktualisierte order-service Deployment in der Workload-Ansicht einen fehlerfreien Zustand erreicht, bevor Sie fortfahren.

Bereitstellen der aktualisierten Anwendung

  1. Stellen Sie die aktualisierte Anwendung mithilfe des kubectl apply Befehls 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
    
  2. Überprüfen Sie, ob die aktualisierte Bereitstellung läuft.

    kubectl get pods
    

Fahren Sie fort, wenn sich die Anwendungs-Pods im Running Zustand befinden.

Testen der App

Aufgeben einer Beispielbestellung

AKS-Desktop

Rufen Sie die öffentliche IP-Adresse ab, indem Sie zu Resource>Network>Service: store-front>external IP wechseln.

Screenshot, der zeigt, wie die externe IP-Adresse abgerufen wird.

Befehlszeile

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

    kubectl get service store-front
    

    Wenn EXTERNAL-IP<pending> ist, warten Sie eine Minute und führen Sie den Befehl erneut aus, bis eine öffentliche IP-Adresse angezeigt wird.

  2. Navigieren Sie mithilfe von store-front zur externen IP-Adresse des http://<external-ip>-Diensts in Ihrem Browser.

  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.

Auftrag in der Azure Service Bus-Warteschlange anzeigen

  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 Von Anfang an anzeigen aus, um die von Ihnen aufgegebene 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 Sie einen Azure Service Bus-Namespace und eine 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.