Condividi tramite


Avvio rapido: Distribuire un'applicazione usando l'estensione del cluster Dapr per il servizio Azure Kubernetes (AKS) o Kubernetes abilitato per Arc

In questo avvio rapido viene usata l'estensione del cluster Dapr in un cluster per il servizio Azure Kubernetes o Kubernetes abilitato per Arc. Si distribuisce un hello world esempio, costituito da un'applicazione Python che genera messaggi e un'applicazione Node.js che utilizza e rende persistenti i messaggi.

Prerequisiti

Clonare il repository

  1. Clonare il repository di avvii rapidi Dapr usando il comando git clone.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Passare alla dapr-aks-extension-quickstart directory.

Creare e configurare un archivio Redis

Aprire il portale di Azure per avviare il flusso di creazione della cache di Azure per Redis.

  1. Compilare le informazioni consigliate in base alle istruzioni di avvio rapido "Creare una cache Redis open source".
  2. Selezionare Crea per avviare la distribuzione dell'istanza di Redis.

Verificare le informazioni sulle risorse

  1. Dopo aver distribuito la risorsa Redis, passare alla relativa pagina di panoramica.
  2. Prendere nota di:
    • Nome host, disponibile nella sezione Informazioni di base della pagina di panoramica della cache. Il formato hostname è simile al seguente: xxxxxx.redis.cache.windows.net.
    • La porta SSL, disponibile nel pannello Impostazioni avanzate della cache. Il valore predefinito è 6380.
  3. Passare al pannello Autenticazione e verificare che l'autenticazione di Microsoft Entra sia abilitata nella risorsa.

Aggiungere identità gestita

  1. Nel pannello Autenticazione digitare il nome dell'identità gestita creata come prerequisito nel campo sotto La casella di controllo Abilita autenticazione Di Microsoft Entra.

    Screenshot che mostra il campo in cui è possibile selezionare un'identità gestita da aggiungere come utente Redis.

  2. Verificare che l'identità gestita venga aggiunta come autorizzazioni dei criteri di accesso al proprietario dei dati assegnati dall'utente Redis.

Abilitare l'accesso alla rete pubblica

Per questo scenario, la cache Redis usa l'accesso alla rete pubblica. Assicurarsi di pulire le risorse al termine di questa guida introduttiva.

  1. Passare al pannello Endpoint privato.
  2. Fare clic su Abilita accesso alla rete pubblica dal menu in alto.

Configurare i componenti Dapr

In redis.yamlil componente è configurato per l'uso dell'autenticazione entra ID usando l'identità del carico di lavoro abilitata per il cluster del servizio Azure Kubernetes. Non sono necessarie chiavi di accesso.

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. Nell'editor di codice preferito passare alla deploy directory nell'esempio e aprire redis.yaml.

  2. Per redisHostsostituire il valore segnaposto <REDIS_HOST>:<REDIS_PORT> con il nome host della cache Redis e la porta SSL salvati in precedenza da portale di Azure.

    - name: redisHost
    value: <your-cache-name>.redis.cache.windows.net:6380
    

Applicare la configurazione

  1. Applicare il file redis.yaml usando il comando kubectl apply.

    kubectl apply -f ./deploy/redis.yaml
    
  2. Verificare che l'archivio di stati sia stato configurato correttamente usando il comando kubectl get components.redis.

    kubectl get components.redis -o yaml
    

    Output previsto

    component.dapr.io/statestore created
    

Distribuire l'app Node.js con il sidecar Dapr

Configurare l'app Node.js

In node.yamlla specifica del pod ha l'etichetta aggiunta per l'uso dell'identità del carico di lavoro:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Passare alla deploy directory e aprire node.yaml.

  2. Sostituire il valore segnaposto <SERVICE_ACCOUNT_NAME> per serviceAccountName con il nome dell'account del servizio creato.

    • Questo valore deve essere lo stesso account del servizio usato per creare le credenziali dell'identità federata.

Applicare la configurazione

  1. Applicare la distribuzione dell'app Node.js al cluster usando il comando kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Le distribuzioni di Kubernetes sono asincrone, quindi prima di passare ai passaggi successivi, verificare che la distribuzione sia completa con il comando seguente:

    kubectl rollout status deploy/nodeapp
    
  3. Accedere al servizio usando il comando kubectl get svc.

    kubectl get svc nodeapp
    
  4. Prendere nota del valore di EXTERNAL-IP nell'output.

Verificare il servizio Node.js

  1. Usando curl, chiamare il servizio con EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Output di esempio

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Inviare un ordine all'applicazione.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Confermare l'ordine.

    curl $EXTERNAL_IP/order
    

    Output previsto

    { "orderId": "42" }
    

Distribuire l'app Python con il sidecar Dapr

Configurare l'app Python

In python.yamlla specifica del pod ha l'etichetta aggiunta per l'uso dell'identità del carico di lavoro:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Passare alla deploy directory e aprire python.yaml.

  2. Sostituire il valore segnaposto <SERVICE_ACCOUNT_NAME> per serviceAccountName con il nome dell'account del servizio creato.

    • Questo valore deve essere lo stesso account del servizio usato per creare le credenziali dell'identità federata.

Applicare la configurazione

  1. Distribuire l'app Python sul cluster Kubernetes usando il comando kubectl apply.

    kubectl apply -f ./deploy/python.yaml
    
  2. Le distribuzioni di Kubernetes sono asincrone, quindi prima di passare ai passaggi successivi, verificare che la distribuzione sia completa con il comando seguente:

    kubectl rollout status deploy/pythonapp
    

Osservare i messaggi e confermare la persistenza

Ora che vengono distribuite sia le applicazioni Node.js che Python, è possibile guardare i messaggi.

  1. Ottenere i log dell'app Node.js usando il comando kubectl logs.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Output previsto

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Usando curl, chiamare l'endpoint dell'ordine dell'app Node.js per ottenere l'ordine più recente.

    curl $EXTERNAL_IP/order
    

    Nella risposta dovrebbe essere visualizzato l'output JSON più recente.

Pulire le risorse

Se non si prevede più di usare le risorse di questa guida introduttiva, è possibile eliminare tutte le risorse associate rimuovendo il gruppo di risorse.

Rimuovere il gruppo di risorse, il cluster, lo spazio dei nomi e tutte le risorse correlate usando il comando az group delete.

az group delete --name MyResourceGroup

Passaggi successivi