Esercitazione: Creare e usare un servizio Apache Kafka per lo sviluppo
Articolo
App Azure Container consente di connettersi a servizi di sviluppo e di livello di produzione per offrire un'ampia gamma di funzionalità alle applicazioni.
In questa esercitazione si apprenderà come creare e usare un servizio Apache Kafka di sviluppo.
I comandi dell'interfaccia della riga di comando di Azure e i frammenti di modello Bicep sono disponibili in questa esercitazione. Se si usa Bicep, è possibile aggiungere tutti i frammenti a un singolo file Bicep e distribuire il modello contemporaneamente.
Creare un ambiente app contenitore per distribuire il servizio e l'app contenitore
Creare un servizio Apache Kafka
Configurare un'app da riga di comando per l'uso del servizio Apache Kafka di sviluppo
Distribuire un'app kafka-ui per visualizzare i dati dell'applicazione
Compilare un modello bicep finale per distribuire tutte le risorse usando una distribuzione di modelli coerente e prevedibile
Usare un azd modello per una distribuzione di un comando di tutte le risorse
AZURE_ENV_NAME è diverso dal nome dell'ambiente dell'app contenitore. In questo contesto, AZURE_ENV_NAME in azd è per tutte le risorse in un modello. Queste risorse includono risorse non associate ad App contenitore. Si crea un nome diverso per l'ambiente App contenitore.
Successivamente, creare infra/main.bicep e definire i parametri per un uso successivo.
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
Non è necessaria alcuna configurazione speciale per la gestione dei gruppi di risorse in azd. Il azd comando ottiene il gruppo di risorse dal AZURE_ENV_NAME/--environment valore .
È possibile testare il modello minimo con il up comando .
azd up
L'esecuzione di questo comando crea un gruppo di risorse vuoto.
L'interfaccia della riga di comando di Azure crea automaticamente un'area di lavoro Log Analytics per ogni ambiente. Per generare un'area di lavoro usando un modello Bicep, dichiarare in modo esplicito l'ambiente e collegarlo al modello. Questo passaggio rende la distribuzione più stabile, anche se a costo di essere leggermente dettagliata.
Creare una cartella denominata ./infra/core/host, quindi creare un ./infra/core/host/container-apps-environment.bicep modulo con il contenuto seguente.
az deployment group create -g $RESOURCE_GROUP \
--query 'properties.outputs.*.value' \
--template-file kafka-dev.bicep
Suggerimento
L'output kafkaLogs restituisce un comando dell'interfaccia della riga di comando per visualizzare i log di kafka al termine della distribuzione. È possibile eseguire il comando per visualizzare i log di inizializzazione del nuovo servizio Kafka.
Usare il logs comando per visualizzare i messaggi di log.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
L'esempio bicep precedente include l'output di un comando per visualizzare i log.
Ad esempio:
[
"az containerapp logs show -n kafka01 -g kafka-dev --follow --tail 30"
]
Se il comando non è disponibile, è possibile usare il nome del servizio per visualizzare i log usando l'interfaccia della riga di comando.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Usare il logs comando per visualizzare i messaggi di log.
az containerapp logs show \
--name kafka01 \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Creare un'app per testare il servizio
Quando si crea l'app, verrà configurata per usare ./kafka-topics.sh, ./kafka-console-producer.she kafka-console-consumer.sh per connettersi all'istanza di Kafka.
Creare un'app kafka-cli-app che si associa al servizio Kafka.
L'output kafkaCliExec restituisce un comando dell'interfaccia della riga di comando che è possibile eseguire per verificare che l'applicazione sia distribuita correttamente.
Creare un modulo in ./infra/core/host/container-app.bicep e aggiungere i valori seguenti.
Quando si usa --bind o serviceBinds nell'app di test, le informazioni di connessione vengono inserite nell'ambiente dell'applicazione. Dopo aver eseguito la connessione al contenitore di test, è possibile esaminare i valori usando il env comando .
Usare kafka-console-producer.sh per scrivere eventi nell'argomento.
/opt/kafka/bin/kafka-console-producer.sh \
--topic quickstart-events \
--bootstrap-server $KAFKA_BOOTSTRAP_SERVERS \
--producer.config kafka.props
> this is my first event
> this is my second event
> this is my third event
> CTRL-C
Nota
Il ./kafka-console-producer.sh comando richiede di scrivere eventi con >. Scrivere alcuni eventi come illustrato, quindi premere CTRL-C per uscire.
Usare kafka-console-consumer.sh per leggere gli eventi dall'argomento.
/opt/kafka/bin/kafka-console-consumer.sh \
--topic quickstart-events \
--bootstrap-server $KAFKA_BOOTSTRAP_SERVERS \
--from-beginning \
--consumer.config kafka.props
# this is my first event
# this is my second event
# this is my third event
Uso di un servizio di sviluppo con un'app esistente
Se si dispone già di un'app che usa Apache Kafka, è possibile modificare la modalità di caricamento delle informazioni di connessione.
Creare prima di tutto le variabili di ambiente seguenti.
git clone https://github.com/Azure-Samples/aca-dev-service-kafka-azd
cd aca-dev-service-kafka-azd
azd up
Pulire le risorse
Al termine, eseguire il comando seguente per eliminare il gruppo di risorse che contiene le risorse di App contenitore.
Attenzione
Il comando seguente elimina il gruppo di risorse specificato e tutte le risorse contenute al suo interno. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa esercitazione, verranno eliminate.
az group delete \
--resource-group $RESOURCE_GROUP