Tutorial: Erstellen und Verwenden eines Apache Kafka-Diensts für die Entwicklung
Artikel
Mit Azure Container Apps können Sie eine Verbindung mit Entwicklungs- und Produktionsdiensten herstellen, um eine Vielzahl von Funktionen für Ihre Anwendungen bereitzustellen.
In diesem Tutorial erfahren Sie, wie Sie einen Apache Kafka-Entwicklungsdienst erstellen und verwenden.
Dieses Tutorial enthält Azure CLI-Befehle und Bicep-Vorlagenfragmente. Wenn Sie Bicep verwenden, können Sie alle Fragmente einer einzelnen Bicep-Datei hinzufügen und die Vorlage auf einmal bereitstellen.
Erstellen einer Container Apps-Umgebung zur Bereitstellung Ihrer Dienste und Container-Apps
Erstellen eines Apache Kafka-Clusters
Einrichten einer Befehlszeilen-App für die Verwendung des Apache Kafka-Entwicklungsdiensts
Bereitstellen einer kafka-ui-App zum Anzeigen von Anwendungsdaten
Kompilieren einer endgültigen Bicep-Vorlage zum Bereitstellen aller Ressourcen mithilfe einer konsistenten und vorhersagbaren Vorlagenbereitstellung
Verwenden einer azd-Vorlage für eine Bereitstellung aller Ressourcen mit einem Befehl
AZURE_ENV_NAME unterscheidet sich vom Namen der Container-App-Umgebung. In diesem Zusammenhang steht AZURE_ENV_NAME in azd für alle Ressourcen in einer Vorlage. Dazu gehören auch Ressourcen, die nicht mit Container Apps verbunden sind. Sie erstellen einen anderen Namen für die Container Apps-Umgebung.
Als Nächstes erstellen Sie infra/main.bicep und definieren Sie Parameter für die spätere Verwendung.
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
Für die Verwaltung von Ressourcengruppen in azd ist kein spezielles Setup erforderlich. Der Befehl azd ruft die Ressourcengruppe aus dem Wert AZURE_ENV_NAME/--environment ab.
Sie können die minimale Vorlage jedoch mit Befehl up testen.
azd up
Durch Ausführen dieses Befehls wird eine leere Ressourcengruppe erstellt.
Die Azure CLI erstellt automatisch einen Log Analytics-Arbeitsbereich für jede Umgebung. Um einen Arbeitsbereich mithilfe einer Bicep-Vorlage zu generieren, deklarieren Sie die Umgebung explizit und verknüpfen sie in der Vorlage. Dieser Schritt macht Ihre Bereitstellung stabiler, auch wenn er ein wenig umständlich ist.
Fügen Sie Ihrer Umgebung die folgenden Werte hinzu.
Die von azd verwendeten Vorlagen verwenden Bicep-Module.
Erstellen Sie einen Ordner mit dem Namen ./infra/core/host und erstellen Sie dann ein ./infra/core/host/container-apps-environment.bicep-Modul mit dem folgenden Inhalt.
az deployment group create -g $RESOURCE_GROUP \
--query 'properties.outputs.*.value' \
--template-file kafka-dev.bicep
Tipp
Die Ausgabe kafkaLogs gibt einen CLI-Befehl aus, mit dem Sie die Protokolle von Kafka nach Abschluss der Bereitstellung anzeigen können. Sie können den Befehl ausführen, um die Initialisierungsprotokolle des neuen Kafka-Diensts anzuzeigen.
`azd up`
Anzeigen der Protokollausgabe aus der Kafka-Instanz
Verwenden Sie den Befehl logs, um Protokollnachrichten anzuzeigen.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Das vorherige Bicep-Beispiel enthält die Ausgabe eines Befehls zum Anzeigen der Protokolle.
Beispiel:
[
"az containerapp logs show -n kafka01 -g kafka-dev --follow --tail 30"
]
Wenn der Befehl nicht verfügbar ist, können Sie den Dienstnamen verwenden, um die Protokolle über die CLI abzurufen.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Verwenden Sie den Befehl logs, um Protokollnachrichten anzuzeigen.
az containerapp logs show \
--name kafka01 \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Erstellen einer App zum Testen des Diensts
Wenn Sie die App erstellen, legen Sie sie so fest, dass ./kafka-topics.sh, ./kafka-console-producer.sh und kafka-console-consumer.sh zum Herstellen der Verbindung mit der Kafka-Instanz verwendet werden.
Erstellen Sie eine kafka-cli-app-App, die an den Kafka-Dienst gebunden ist.
Wenn Sie in der Test-App --bind oder serviceBinds verwenden, werden die Verbindungsinformationen in die Anwendungsumgebung eingefügt. Nachdem Sie eine Verbindung mit dem Testcontainer hergestellt haben, können Sie die Werte mithilfe des Befehls env untersuchen.
Verwenden Sie kafka-console-producer.sh zum Schreiben von Ereignissen in das Thema.
/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
Hinweis
Der Befehl ./kafka-console-producer.sh fordert Sie auf, Ereignisse mit > zu schreiben. Schreiben Sie einige Ereignisse wie gezeigt, und drücken Sie dann zum Beenden CTRL-C.
Verwenden Sie kafka-console-consumer.sh zum Lesen von Ereignissen aus dem Thema.
/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
Verwenden eines Entwicklungsdienstes bei einer vorhandenen Anwendung
Wenn Sie bereits über eine App verfügen, die Apache Kafka verwendet, können Sie ändern, wie Verbindungsinformationen geladen werden.
Legen Sie zunächst die folgenden Umgebungsvariablen fest.
Anschließend können Sie die Anwendung mithilfe der CLI (oder Bicep) aktualisieren, um --bind $KAFKA_SVC hinzuzufügen, um den erstellten Entwicklungsdienst zu verwenden.
Herstellen einer Bindung mit dem Entwicklungsdienst
Stellen Sie kafka-ui bereit, um die Kafka-Instanz anzuzeigen und zu verwalten.
Verwenden Sie azd up zum Bereitstellen der Vorlage.
git clone https://github.com/Azure-Samples/aca-dev-service-kafka-azd
cd aca-dev-service-kafka-azd
azd up
Bereinigen von Ressourcen
Führen Sie anschließend den folgenden Befehl aus, um die Ressourcengruppe zu löschen, die Ihre Container Apps-Ressourcen enthält.
Achtung
Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Falls in der angegebenen Ressourcengruppe Ressourcen enthalten sind, die nicht zum Umfang dieses Tutorials gehören, werden sie ebenfalls gelöscht.
az group delete \
--resource-group $RESOURCE_GROUP