Esercitazione: Usare i servizi PaaS con un cluster del servizio Azure Kubernetes

Con Kubernetes è possibile usare i servizi PaaS, ad esempio bus di servizio di Azure, per sviluppare ed eseguire le applicazioni.

In questa esercitazione si crea uno spazio dei nomi e una coda del bus di servizio di Azure per testare l'applicazione. Si apprenderà come:

  • Creare uno spazio dei nomi e una coda del bus di servizio di Azure.
  • Aggiornare il file manifesto Kubernetes per usare la coda del bus di servizio di Azure.
  • Testare l'applicazione aggiornata inserendo un ordine.

Prima di iniziare

Nelle esercitazioni precedenti è stata inserita un'applicazione in un'immagine del contenitore, è stata caricata l'immagine in Registro Azure Container, è stato creato un cluster Kubernetes ed è stata distribuita un'applicazione. Per completare questa esercitazione, è necessario il file manifesto Kubernetes aks-store-quickstart.yaml creato in precedenza. Questo download di file è stato incluso nel codice sorgente dell'applicazione in un'esercitazione precedente. Assicurarsi di clonare il repository e di modificare le directory nel repository clonato. Se questi passaggi non sono stati completati e si vuole seguire questa procedura, iniziare con Esercitazione 1 - Preparare l'applicazione per il servizio Azure Kubernetes.

Questa esercitazione crea risorse di bus di servizio di Azure fatturabili. Per completare questi passaggi, usa un'identità in grado di creare e gestire le risorse di bus di servizio e aggiornare i carichi di lavoro di AKS nel tuo gruppo di risorse, ad esempio Contributor o Owner.

Questo tutorial richiede l'installazione di AKS desktop.

Creare variabili di ambiente

  • Usare il interfaccia della riga di comando di Azure per creare le variabili di ambiente seguenti da usare per i comandi in questa esercitazione:

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

Creare uno spazio dei nomi e una coda del bus di servizio di Azure

Nelle esercitazioni precedenti è stato usato un contenitore RabbitMQ per archiviare gli ordini inviati da order-service. In questa esercitazione si usa uno spazio dei nomi del bus di servizio di Azure per fornire un contenitore di ambito per le risorse del bus di servizio all'interno dell'applicazione. Si usa anche una coda del bus di servizio di Azure per inviare e ricevere messaggi tra i componenti dell'applicazione. Per altre informazioni sul bus di servizio di Azure, vedere Creare uno spazio dei nomi e una coda del bus di servizio di Azure.

In questo flusso, order-service invia messaggi alla queue orders tramite la regola di autorizzazione e la chiave sender che crei in questa sezione.

Usare il interfaccia della riga di comando di Azure per creare le variabili di ambiente seguenti da usare per i comandi di questa esercitazione.

  1. Creare uno spazio dei nomi di bus di servizio di Azure usando il comando az servicebus namespace create.

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

    Continuare quando il comando viene completato correttamente e restituisce i dettagli dello spazio dei nomi.

  2. Creare una coda del bus di servizio di Azure usando il comando az servicebus queue create.

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

    Verificare che la coda esista prima di continuare:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  3. Creare una regola di autorizzazione del bus di servizio di Azure usando il comando 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. Ottenere le credenziali del bus di servizio di Azure per usarle in un secondo momento usando i az servicebus namespace show comandi e 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
    

    Salvare questi valori per il passaggio di aggiornamento del manifesto:

    • <REPLACE_WITH_YOUR_ACR_NAME>: il nome del tuo Registro Azure Container dei tutorial precedenti.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: il valore primaryKey dall'output del comando.

Aggiornare il file manifesto kubernetes

  1. Vai a Progetti in AKS Desktop e seleziona quello che hai creato nell'esercitazione precedente, my-dev-frontend.

  2. Seleziona la scheda Risorse, quindi seleziona Carichi di lavoro>Distribuzione: order-service. Schermata che mostra la modifica di Deployment, Risorse, Carichi di lavoro, Deployment, Order-service.

  3. Seleziona l'Editor.

  4. Rimuovere le sezioni StatefulSet, ConfigMap e Service esistenti rabbitmq . Sostituire la sezione Distribuzione esistente order-service con il contenuto seguente. Copiare e incollare il contenuto:

    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 che mostra l'uso dell'editor per aggiornare la distribuzione YAML.

    Note

    L'aggiunta diretta di informazioni sensibili, come le chiavi API, ai file manifest di Kubernetes non è sicura e potrebbe causarne il commit accidentale nei repository di codice. Questo esempio lo aggiunge per semplicità. Per i carichi di lavoro di produzione, usare l'identità gestita per eseguire l'autenticazione con il bus di servizio di Azure o archiviare i segreti in Azure Key Vault.

  5. Per salvare e applicare l'aggiornamento, seleziona Salva & Applica.

  6. Verificare che la distribuzione aggiornata raggiunga uno stato integro order-service nella visualizzazione del carico di lavoro prima di continuare.

Distribuire l'applicazione aggiornata

  1. Distribuire l'applicazione aggiornata usando il kubectl apply comando .

    kubectl apply -f aks-store-quickstart.yaml
    

    L'output di esempio seguente mostra le risorse aggiornate correttamente:

    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. Verificare che la distribuzione aggiornata sia in esecuzione.

    kubectl get pods
    

Continuare quando i pod dell'applicazione sono nello stato Running.

Test dell'applicazione

Inserire un ordine di esempio

AKS Desktop

Ottieni l'indirizzo IP pubblico andando a Risorsa>Rete>Servizio: store-front>IP esterno.

Screenshot che mostra come ottenere l'indirizzo IP esterno.

Riga di comando

  1. Ottenere l'indirizzo IP esterno del servizio store-front usando il comando kubectl get service.

    kubectl get service store-front
    

    Se EXTERNAL-IP è <pending>, attendere un minuto ed eseguire di nuovo il comando fino a quando non viene visualizzato un indirizzo IP pubblico.

  2. Passare all'indirizzo IP esterno del servizio store-front nel browser usando http://<external-ip>.

  3. Effettuare un ordine scegliendo un prodotto e selezionando Aggiungi al carrello.

  4. Selezionare Carrello per visualizzare l'ordine e quindi selezionare Cassa.

Visualizzare l'ordine nella coda del bus di servizio di Azure

  1. Passare al portale di Azure e aprire lo spazio dei nomi del bus di servizio di Azure creato in precedenza.
  2. In Entitàselezionare Code e quindi selezionare la coda degli ordini.
  3. Nella coda ordini selezionare bus di servizio Explorer.
  4. Selezionare Visualizza in anteprima dall'inizio per visualizzare l'ordine inviato.

Passaggi successivi

In questa esercitazione è stato usato il bus di servizio di Azure per aggiornare e testare l'applicazione di esempio. Si è appreso come:

  • Creare uno spazio dei nomi e una coda del bus di servizio di Azure.
  • Aggiornare il file manifesto Kubernetes per usare la coda del bus di servizio di Azure.
  • Testare l'applicazione aggiornata inserendo un ordine.

Nell'esercitazione successiva si apprenderà come ridimensionare un'applicazione nel servizio Azure Kubernetes.