Zelfstudie: PaaS-services gebruiken met een AKS-cluster (Azure Kubernetes Service)

Met Kubernetes kunt u PaaS-services, zoals Azure Service Bus, gebruiken om uw toepassingen te ontwikkelen en uit te voeren.

In deze zelfstudie maakt u een Azure Service Bus-naamruimte en -wachtrij om uw toepassing te testen. U leert het volgende:

  • Maak een Azure Service Bus-naamruimte en -wachtrij.
  • Werk het Kubernetes-manifestbestand bij om de Azure Service Bus-wachtrij te gebruiken.
  • Test de bijgewerkte toepassing door een bestelling te plaatsen.

Voordat u begint

In eerdere zelfstudies hebt u een toepassing verpakt in een containerinstallatiekopie, de installatiekopie geüpload naar Azure Container Registry, een Kubernetes-cluster gemaakt en een toepassing geïmplementeerd. Om deze zelfstudie te voltooien hebt u het vooraf gemaakte Kubernetes-manifestbestand aks-store-quickstart.yaml nodig. Dit downloadbestand was inbegrepen bij de broncode van de applicatie in een eerdere tutorial. Zorg ervoor dat u de opslagplaats hebt gekloond en mappen hebt gewijzigd in de gekloonde opslagplaats. Als u deze stappen nog niet hebt voltooid en u deze wilt volgen, begint u met zelfstudie 1: De toepassing voorbereiden voor AKS.

In deze zelfstudie maakt u Azure Service Bus-resources waarvoor kosten in rekening worden gebracht. Als u deze stappen wilt uitvoeren, gebruikt u een identiteit waarmee u Service Bus resources kunt maken en beheren en AKS-workloads kunt bijwerken in uw resourcegroep, zoals Inzender of Eigenaar.

Deze tutorial vereist de installatie van AKS desktop.

Omgevingsvariabelen maken

  • Gebruik de Azure CLI om de volgende omgevingsvariabelen te maken voor de opdrachten in deze zelfstudie:

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

Azure Service Bus-naamruimte en -wachtrij maken

In eerdere tutorials heeft u een RabbitMQ-container gebruikt om bestellingen op te slaan die zijn verzonden door de order-service. In deze zelfstudie gebruikt u een Azure Service Bus-naamruimte als container voor het afbakenen van de Service Bus-resources binnen de toepassing. U gebruikt ook een Azure Service Bus-wachtrij om berichten tussen de toepassingsonderdelen te verzenden en te ontvangen. Zie Een Azure Service Bus-naamruimte en -wachtrij maken voor meer informatie over Azure Service Bus.

In deze stroom stuurt order-service berichten naar de orders wachtrij met behulp van de sender autorisatieregel en sleutel die u in deze sectie aanmaakt.

Gebruik de Azure CLI om de volgende omgevingsvariabelen te maken voor de opdrachten in deze zelfstudie.

  1. Maak een Azure Service Bus naamruimte met behulp van de az servicebus namespace create opdracht.

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

    Ga door wanneer de opdracht is voltooid en retourneert de naamruimtedetails.

  2. Maak een Azure Service Bus-wachtrij met behulp van de az servicebus queue create opdracht.

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

    Controleer of de wachtrij bestaat voordat u doorgaat:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  3. Maak een Azure Service Bus-autorisatieregel met behulp van de az servicebus queue authorization-rule create opdracht.

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. Haal de Azure Service Bus-referenties op voor later gebruik met behulp van de az servicebus namespace show en az servicebus queue authorization-rule keys list opdrachten.

    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
    

    Sla deze waarden op voor de updatestap van het manifest:

    • <REPLACE_WITH_YOUR_ACR_NAME>: de naam van uw Azure Container Registry uit de eerdere zelfstudies.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: . $SB_NS.servicebus.windows.net
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: de primaryKey waarde uit de uitvoer van de opdracht.

Kubernetes-manifestbestand bijwerken

  1. Ga naar Projecten in het AKS-bureaublad en selecteer het project dat u in de vorige zelfstudie my-dev-frontendhebt gemaakt.

  2. Selecteer het tabblad Resources en selecteer vervolgens Implementatie van workloads>: orderservice. Schermafbeelding waarop het bewerken van de implementatie, Resources, Workloads, Deployment, Order-service te zien is.

  3. Selecteer de editor.

  4. Verwijder de bestaande rabbitmq secties StatefulSet, ConfigMap en Service. Vervang de bestaande order-service sectie Implementatie door de volgende inhoud. Kopieer en plak de inhoud:

    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
    

    Schermopname van het gebruik van de editor om de YAML-implementatie bij te werken.

    Notitie

    Het rechtstreeks toevoegen van gevoelige informatie, zoals API-sleutels, aan uw Kubernetes-manifestbestanden is niet veilig en kan per ongeluk worden doorgevoerd in codeopslagplaatsen. In dit voorbeeld wordt het voor het gemak toegevoegd. Gebruik voor productieworkloads Managed Identity om u te verifiëren bij Azure Service Bus of sla uw geheimen op in Azure Key Vault.

  5. Behoud de update door Opslaan en toepassen te selecteren.

  6. Controleer of de bijgewerkte order-service deployment een gezonde status bereikt in de workloadweergave voordat u doorgaat.

De bijgewerkte toepassing implementeren

  1. Implementeer de bijgewerkte toepassing met behulp van de kubectl apply opdracht.

    kubectl apply -f aks-store-quickstart.yaml
    

    In de volgende voorbeelduitvoer ziet u de resources die succesvol zijn bijgewerkt:

    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. Controleer of de bijgewerkte implementatie wordt uitgevoerd.

    kubectl get pods
    

Ga verder wanneer de applicatiepods de status Running hebben.

De toepassing testen

Een voorbeeldvolgorde plaatsen

AKS-bureaublad

Ga naar Resource>Network>Service: store-front>Extern IP-adres om het openbare IP-adres op te halen.

Schermopname van het verkrijgen van het externe IP-adres.

Opdrachtregel

  1. Haal het externe IP-adres van de store-front service op met behulp van de kubectl get service opdracht.

    kubectl get service store-front
    

    Als EXTERNAL-IP<pending> is, wacht u een minuut en voer de opdracht opnieuw uit totdat er een openbaar IP-adres wordt weergegeven.

  2. Navigeer met behulp store-frontvan uw browser naar het externe IP-adres van de http://<external-ip> service.

  3. Plaats een bestelling door een product te kiezen en Toevoegen aan winkelwagen te selecteren.

  4. Selecteer Winkelwagen om uw bestelling weer te geven en selecteer vervolgens Uitchecken.

De volgorde in de Azure Service Bus-wachtrij weergeven

  1. Navigeer naar Azure Portal en open de Azure Service Bus-naamruimte die u eerder hebt gemaakt.
  2. Onder Entiteiten selecteert u Wachtrijen en vervolgens de wachtrij orders.
  3. Selecteer Service Bus Explorer in de wachtrij met orders.
  4. Selecteer Bekijken vanaf het begin om de bestelling weer te geven die u hebt verzonden.

Volgende stappen

In deze zelfstudie hebt u Azure Service Bus gebruikt om de voorbeeldtoepassing bij te werken en te testen. U hebt geleerd hoe u:

  • Maak een Azure Service Bus-naamruimte en -wachtrij.
  • Werk het Kubernetes-manifestbestand bij om de Azure Service Bus-wachtrij te gebruiken.
  • Test de bijgewerkte toepassing door een bestelling te plaatsen.

In de volgende zelfstudie leert u hoe u een toepassing in AKS kunt schalen.