Självstudie – Använda PaaS-tjänster med ett AKS-kluster (Azure Kubernetes Service)

Med Kubernetes kan du använda PaaS-tjänster, till exempel Azure Service Bus, för att utveckla och köra dina program.

I den här handledningen skapar du ett Azure Service Bus-namnområde och en kö för att testa din applikation. Du lär dig att:

  • Skapa ett Azure Service Bus-namnområde och en kö.
  • Uppdatera Kubernetes-manifestfilen så att den använder Azure Service Bus-kön.
  • Testa det uppdaterade programmet genom att göra en beställning.

Innan du börjar

I tidigare självstudier paketerade du ett program i en containeravbildning, laddade upp avbildningen till Azure Container Registry, skapade ett Kubernetes-kluster och distribuerade ett program. I den här självstudien behöver du Kubernetes-manifestfilen aks-store-quickstart.yaml som skapats i förväg. Denna nedladdning av filen ingick i applikationens källkod i en tidigare handledning. Kontrollera att du klonade lagringsplatsen och ändrade kataloger till den klonade lagringsplatsen. Om du inte har slutfört de här stegen och vill följa med börjar du med Självstudie 1 – Förbereda programmet för AKS.

I den här självstudien skapar du fakturerbara Azure Service Bus-resurser. För att slutföra de här stegen använder du en identitet som kan skapa och hantera Service Bus resurser och uppdatera AKS-arbetsbelastningar i resursgruppen, till exempel Deltagare eller Ägare.

Den här självstudien kräver installation av AKS Desktop.

Skapa miljövariabler

  • Använd Azure CLI för att skapa följande miljövariabler som ska användas för kommandona i den här självstudien:

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

Skapa Azure Service Bus-namnområde och kö

I tidigare självstudier använde du en RabbitMQ-container för att lagra beställningar som skickats av order-service. I den här självstudien använder du ett Azure Service Bus-namnområde för att tillhandahålla en omfångscontainer för Service Bus-resurserna inom applikationen. Du använder också en Azure Service Bus-kö för att skicka och ta emot meddelanden mellan programkomponenterna. Mer information om Azure Service Bus finns i Skapa ett Azure Service Bus-namnområde och en kö.

I det här flödet order-service skickar du meddelanden till orders kön med hjälp av auktoriseringsregeln sender och nyckeln som du skapar i det här avsnittet.

Använd Azure CLI för att skapa följande miljövariabler som ska användas för kommandona i den här självstudien.

  1. Skapa ett Azure Service Bus-namnområde med kommandot az servicebus namespace create.

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

    Fortsätt när kommandot har slutförts och returnerar namnområdesinformationen.

  2. Skapa en Azure Service Bus-kö med kommandot az servicebus queue create .

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

    Kontrollera att kön finns innan du fortsätter:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  3. Skapa en Azure Service Bus-auktoriseringsregel med kommandot 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. Hämta autentiseringsuppgifterna för Azure Service Bus för senare användning med hjälp av kommandona az servicebus namespace show och 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
    

    Spara dessa värden för manifestuppdateringssteget:

    • <REPLACE_WITH_YOUR_ACR_NAME>: namnet på ditt Azure Container Registry från de tidigare självstudierna.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: värdet primaryKey från kommandots utdata.

Uppdatera Kubernetes-manifestfilen

  1. Gå till Projekt i AKS Desktop och välj den som du skapade i föregående självstudie, my-dev-frontend.

  2. Välj fliken Resurser och välj sedan Distribution av arbetsbelastningar>: order-service. Skärmbild som visar redigering av distribution, resurser, arbetsbelastningar, distribution, ordertjänst.

  3. Välj Redigeraren.

  4. Ta bort de befintliga rabbitmq avsnitten StatefulSet, ConfigMap och Service. Ersätt det befintliga order-service avsnittet Distribution med följande innehåll. Kopiera och klistra in innehållet:

    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
    

    Skärmbild som visar hur du använder redigeraren för att uppdatera YAML-distributionen.

    Anteckning

    Att direkt lägga till känslig information, till exempel API-nycklar, till dina Kubernetes-manifestfiler är inte säkert och kan av misstag checkas in på kodlagringsplatser. Det här exemplet lägger till det för enkelhetens skull. För produktionsarbetsbelastningar använder du Hanterad identitet för att autentisera med Azure Service Bus eller lagra dina hemligheter i Azure Key Vault.

  5. Spara uppdateringen genom att välja Spara och tillämpa.

  6. Kontrollera att den uppdaterade order-service driftsättningen når ett stabilt tillstånd i arbetsbelastningsvyn innan du fortsätter.

Distribuera det uppdaterade programmet

  1. Distribuera den uppdaterade applikationen med kommandot kubectl apply.

    kubectl apply -f aks-store-quickstart.yaml
    

    Följande exempelutdata visar de resurser som har uppdaterats:

    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. Kontrollera att den uppdaterade distributionen körs.

    kubectl get pods
    

Fortsätt när applikationspoddarna är i tillståndet Running.

Testa programmet

Lägg en provbeställning

AKS Desktop

Hämta den offentliga IP-adressen genom att gå till Resurs>Nätverk>Tjänst: store-front>Extern IP.

Skärmbild som visar hur du hämtar den externa IP-adressen.

Kommandorad

  1. Hämta tjänstens externa IP-adress med hjälp av store-frontkubectl get service kommandot .

    kubectl get service store-front
    

    Om EXTERNAL-IP är <pending>väntar du en minut och kör kommandot igen tills en offentlig IP-adress visas.

  2. Navigera till den externa IP-adressen för store-front tjänsten i webbläsaren med hjälp av http://<external-ip>.

  3. Gör en beställning genom att välja en produkt och välja Lägg till i kundvagn.

  4. Välj Kundvagn för att visa din beställning och välj sedan Checka ut.

Visa ordningen i Azure Service Bus-kön

  1. Gå till Azure Portal och öppna Azure Service Bus-namnområdet som du skapade tidigare.
  2. Under Entiteter väljer du Köer och sedan order.
  3. I beställningskön väljer du Service Bus Explorer.
  4. Välj Titta från start för att visa den beställning som du skickade.

Nästa steg

I den här självstudien använde du Azure Service Bus för att uppdatera och testa exempelprogrammet. Du har lärt dig att:

  • Skapa ett Azure Service Bus-namnområde och en kö.
  • Uppdatera Kubernetes-manifestfilen så att den använder Azure Service Bus-kön.
  • Testa det uppdaterade programmet genom att göra en beställning.

I nästa handledning får du lära dig hur du skalar ett program i AKS.