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
- Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
- Interfaccia della riga di comando di Azure o Azure PowerShell installati.
- Un cluster del servizio Azure Kubernetes con:
- Identità del carico di lavoro abilitata
- Identità gestita creata nella stessa sottoscrizione
- Un account del servizio Kubernetes
- Credenziali di identità federate
- Estensione del cluster Dapr installata nel cluster del servizio Azure Kubernetes
- kubectl installato in locale.
Clonare il repository
Clonare il repository di avvii rapidi Dapr usando il comando
git clone
.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
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.
- Compilare le informazioni consigliate in base alle istruzioni di avvio rapido "Creare una cache Redis open source".
- Selezionare Crea per avviare la distribuzione dell'istanza di Redis.
Verificare le informazioni sulle risorse
- Dopo aver distribuito la risorsa Redis, passare alla relativa pagina di panoramica.
- 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
.
- Nome host, disponibile nella sezione Informazioni di base della pagina di panoramica della cache. Il formato hostname è simile al seguente:
- Passare al pannello Autenticazione e verificare che l'autenticazione di Microsoft Entra sia abilitata nella risorsa.
Aggiungere identità gestita
Nel pannello Autenticazione digitare il nome dell'identità gestita creata come prerequisito nel campo sotto La casella di controllo Abilita autenticazione Di Microsoft Entra.
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.
- Passare al pannello Endpoint privato.
- Fare clic su Abilita accesso alla rete pubblica dal menu in alto.
Configurare i componenti Dapr
In redis.yaml
il 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
Nell'editor di codice preferito passare alla
deploy
directory nell'esempio e aprireredis.yaml
.Per
redisHost
sostituire 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
Applicare il file
redis.yaml
usando il comandokubectl apply
.kubectl apply -f ./deploy/redis.yaml
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.yaml
la specifica del pod ha l'etichetta aggiunta per l'uso dell'identità del carico di lavoro:
labels:
app: node
azure.workload.identity/use: "true"
Passare alla
deploy
directory e aprirenode.yaml
.Sostituire il valore segnaposto
<SERVICE_ACCOUNT_NAME>
perserviceAccountName
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
Applicare la distribuzione dell'app Node.js al cluster usando il comando
kubectl apply
.kubectl apply -f ./deploy/node.yaml
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
Accedere al servizio usando il comando
kubectl get svc
.kubectl get svc nodeapp
Prendere nota del valore di
EXTERNAL-IP
nell'output.
Verificare il servizio Node.js
Usando
curl
, chiamare il servizio conEXTERNAL-IP
.curl $EXTERNAL_IP/ports
Output di esempio
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Inviare un ordine all'applicazione.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
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.yaml
la specifica del pod ha l'etichetta aggiunta per l'uso dell'identità del carico di lavoro:
labels:
app: node
azure.workload.identity/use: "true"
Passare alla
deploy
directory e aprirepython.yaml
.Sostituire il valore segnaposto
<SERVICE_ACCOUNT_NAME>
perserviceAccountName
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
Distribuire l'app Python sul cluster Kubernetes usando il comando
kubectl apply
.kubectl apply -f ./deploy/python.yaml
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.
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
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
Azure Kubernetes Service