Condividi tramite


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, parte cinque di sette, si crea uno spazio dei nomi e una coda del bus di servizio di Azure per testare l'applicazione. Scopri 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.

Operazioni preliminari

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 richiede l'interfaccia della riga di comando di Azure 2.34.1 o versioni successive. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Creare variabili di ambiente

  • Creare le variabili di ambiente seguenti da usare per i comandi di questa esercitazione:

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

  1. Creare uno spazio dei nomi del 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
    
  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
    
  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 comandi az servicebus namespace show 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
    

Aggiornare il file manifesto kubernetes

  1. Configurare kubectl per connettersi al cluster usando il comando az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Aprire il file aks-store-quickstart.yaml in un editor di testo.

  3. Rimuovere le sezioni rabbitmq StatefulSet, ConfigMap e Servizio esistenti e sostituire la sezione Distribuzione order-service esistente con il contenuto seguente:

    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
    

    Nota

    L'aggiunta diretta di informazioni riservate, ad esempio le chiavi API, ai file manifesto Kubernetes non è sicura e può essere eseguito accidentalmente il commit nei repository di codice. È stato aggiunto qui 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.

  4. Salvare e chiudere il file aks-store-quickstart.yaml aggiornato.

Distribuire l'applicazione aggiornata

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

    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
    

Testare l'applicazione

Inserire un ordine di esempio

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

    kubectl get service store-front
    
  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 Service Bus 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. Contenuto del modulo:

  • 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.