Samouczek: tworzenie i używanie usługi Apache Kafka do programowania
Artykuł
Usługa Azure Container Apps umożliwia łączenie się z usługami deweloperskimi i produkcyjnymi w celu zapewnienia szerokiej gamy funkcji aplikacji.
Z tego samouczka dowiesz się, jak tworzyć i używać programowania usługi Apache Kafka.
Polecenia interfejsu wiersza polecenia platformy Azure i fragmenty szablonów Bicep są opisywane w tym samouczku. Jeśli używasz Bicep, możesz dodać wszystkie fragmenty do pojedynczego pliku Bicep i wdrożyć cały szablon jednocześnie.
Tworzenie środowiska usługi Container Apps w celu wdrożenia usługi i aplikacji kontenera
Tworzenie usługi Apache Kafka
Konfigurowanie aplikacji wiersza polecenia do korzystania z usługi dev Apache Kafka
Wdrażanie aplikacji kafka-ui w celu wyświetlania danych aplikacji
Kompilowanie końcowego szablonu bicep w celu wdrożenia wszystkich zasobów przy użyciu spójnego i przewidywalnego wdrożenia szablonu
azd Używanie szablonu dla jednego polecenia wdrożenia wszystkich zasobów
AZURE_ENV_NAME różni się od nazwy środowiska aplikacji kontenera. W tym kontekście AZURE_ENV_NAME element in azd dotyczy wszystkich zasobów w szablonie. Te zasoby obejmują zasoby, które nie są skojarzone z usługą Container Apps. Możesz utworzyć inną nazwę dla środowiska Container Apps.
Następnie utwórz infra/main.bicep i zdefiniuj parametry do późniejszego użycia.
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
Do zarządzania grupami zasobów w programie azdnie jest wymagana żadna specjalna konfiguracja. Polecenie azd pobiera grupę AZURE_ENV_NAME/--environment zasobów z wartości .
Możesz przetestować minimalny szablon za up pomocą polecenia .
azd up
Uruchomienie tego polecenia powoduje utworzenie pustej grupy zasobów.
Interfejs wiersza polecenia platformy Azure automatycznie tworzy obszar roboczy usługi Log Analytics dla każdego środowiska. Aby wygenerować obszar roboczy przy użyciu szablonu Bicep, jawnie zadeklarujesz środowisko i połączysz je z nim w szablonie. Ten krok sprawia, że wdrożenie jest bardziej stabilne, nawet jeśli koszt jest nieco pełny.
az deployment group create -g $RESOURCE_GROUP \
--query 'properties.outputs.*.value' \
--template-file kafka-dev.bicep
Napiwek
Dane wyjściowe kafkaLogs wyświetlają polecenie interfejsu wiersza polecenia, aby ułatwić wyświetlenie dzienników platformy kafka po zakończeniu wdrażania. Możesz uruchomić polecenie , aby wyświetlić dzienniki inicjowania nowej usługi Kafka.
`azd up`
Wyświetlanie danych wyjściowych dziennika z wystąpienia platformy Kafka
Użyj polecenia , logs aby wyświetlić komunikaty dziennika.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Poprzedni przykład Bicep zawiera dane wyjściowe polecenia w celu wyświetlenia dzienników.
Na przykład:
[
"az containerapp logs show -n kafka01 -g kafka-dev --follow --tail 30"
]
Jeśli nie masz polecenia, możesz użyć nazwy usługi, aby wyświetlić dzienniki przy użyciu interfejsu wiersza polecenia.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Użyj polecenia , logs aby wyświetlić komunikaty dziennika.
az containerapp logs show \
--name kafka01 \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Tworzenie aplikacji do testowania usługi
Podczas tworzenia aplikacji skonfigurujesz ją tak, aby korzystała z ./kafka-topics.shprogramu , ./kafka-console-producer.shi kafka-console-consumer.sh w celu nawiązania połączenia z wystąpieniem platformy Kafka.
Utwórz aplikację powiązaną kafka-cli-app z usługą Kafka.
Dane wyjściowe kafkaCliExec wyświetlają polecenie interfejsu wiersza polecenia, które można uruchomić, aby sprawdzić, czy aplikacja została wdrożona poprawnie.
Utwórz moduł w obszarze ./infra/core/host/container-app.bicep i dodaj następujące wartości.
W przypadku korzystania z --bind aplikacji testowej lub serviceBinds w aplikacji testowej informacje o połączeniu są wstrzykiwane do środowiska aplikacji. Po nawiązaniu połączenia z kontenerem testowym możesz sprawdzić wartości przy użyciu env polecenia .
Służy kafka-console-producer.sh do zapisywania zdarzeń w temacie.
/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
Uwaga
Polecenie ./kafka-console-producer.sh wyświetla monit o zapisanie zdarzeń za pomocą polecenia >. Napisz kilka zdarzeń, jak pokazano, a następnie naciśnij polecenie CTRL-C , aby zakończyć.
Służy kafka-console-consumer.sh do odczytywania zdarzeń z tematu.
/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
Używanie usługi dewelopera z istniejącą aplikacją
Jeśli masz już aplikację korzystającą z platformy Apache Kafka, możesz zmienić sposób ładowania informacji o połączeniu.
Za pomocą interfejsu wiersza polecenia (lub Bicep) możesz zaktualizować aplikację, aby dodać --bind $KAFKA_SVC aplikację do korzystania z usługi dewelopera.
Wiązanie z usługą dewelopera
Wdróż kafka-ui , aby wyświetlić wystąpienie platformy Kafka i zarządzać nim.
Użyj interfejsu wiersza polecenia platformy Azure, aby wdrożyć go w szablonie.
RESOURCE_GROUP="kafka-dev"
LOCATION="northcentralus"
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
az deployment group create -g $RESOURCE_GROUP \
--query 'properties.outputs.*.value' \
--template-file kafka-dev.bicep
Azure Developer CLI
Ostateczny szablon jest dostępny w witrynie GitHub.
Użyj polecenia azd up , aby wdrożyć szablon.
git clone https://github.com/Azure-Samples/aca-dev-service-kafka-azd
cd aca-dev-service-kafka-azd
azd up
Czyszczenie zasobów
Po zakończeniu uruchom następujące polecenie, aby usunąć grupę zasobów zawierającą zasoby usługi Container Apps.
Uwaga
Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego samouczka istnieją w określonej grupie zasobów, zostaną również usunięte.
az group delete \
--resource-group $RESOURCE_GROUP