Tutorial: Creación y uso de un servicio de Apache Kafka para el desarrollo
Artículo
Azure Container Apps permite conectarse a los servicios de desarrollo y de nivel de producción para proporcionar una amplia variedad de funcionalidades a las aplicaciones.
En este tutorial, aprenderá a crear y usar un servicio de Apache Kafka de desarrollo.
Los comandos de la CLI de Azure y los fragmentos de plantilla de Bicep se incluyen en este tutorial. Si usa Bicep, puede agregar todos los fragmentos a un único archivo de Bicep e implementar la plantilla a la vez.
Creación de un entorno de Container Apps para implementar el servicio y la aplicación de contenedor
Creación de un servicio de Apache Kafka
Configuración de una aplicación de línea de comandos para usar el servicio de desarrollo Apache Kafka
Implementación de una aplicación kafka-ui para ver datos de la aplicación
Compilación de una plantilla de Bicep final para implementar todos los recursos mediante una implementación de plantilla coherente y predecible
Utilización de una plantilla azd para la implementación de todos los recursos con un solo comando
AZURE_ENV_NAME es diferente del nombre del entorno de Aplicación de contenedor. En este contexto, AZURE_ENV_NAME en azd es para todos los recursos de una plantilla. Estos recursos incluyen recursos que no están asociados a Container Apps. Cree un nombre diferente para el entorno de Container Apps.
A continuación, cree infra/main.bicep y defina parámetros para su uso posterior.
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
az group create \
--name "$RESOURCE_GROUP" \
--location "$LOCATION"
No se necesita ninguna configuración especial para administrar grupos de recursos en azd. El comando azd obtiene el grupo de recursos del valor AZURE_ENV_NAME/--environment.
Puede probar la plantilla mínima con el comando up.
azd up
Al ejecutar este comando se crea un grupo de recursos vacío.
La CLI de Azure crea automáticamente un espacio de trabajo de Log Analytics para cada entorno. Para generar un área de trabajo mediante una plantilla de Bicep, declare explícitamente el entorno y vincule a él en la plantilla. Este paso hace que la implementación sea más estable, aunque a costa de ser un poco detallado.
Cree una carpeta denominada ./infra/core/hosty, a continuación, cree un módulo ./infra/core/host/container-apps-environment.bicep con el siguiente contenido.
az deployment group create -g $RESOURCE_GROUP \
--query 'properties.outputs.*.value' \
--template-file kafka-dev.bicep
Sugerencia
La salida kafkaLogs genera un comando de la CLI para ayudarle a ver los registros de kafka una vez completada la implementación. Puede ejecutar el comando para ver los registros de inicialización del nuevo servicio Kafka.
`azd up`
Ver la salida del registro desde la instancia de Kafka
Use el comando logs para ver los mensajes de registro.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
En el ejemplo anterior de Bicep se incluye la salida para un comando para ver los registros.
Por ejemplo:
[
"az containerapp logs show -n kafka01 -g kafka-dev --follow --tail 30"
]
Si no tiene el comando, puede usar el nombre del servicio para ver los registros mediante la CLI.
az containerapp logs show \
--name $KAFKA_SVC \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Use el comando logs para ver los mensajes de registro.
az containerapp logs show \
--name kafka01 \
--resource-group $RESOURCE_GROUP \
--follow --tail 30
Creación de una aplicación para probar el servicio
Al crear la aplicación, la configurará para usar ./kafka-topics.sh, ./kafka-console-producer.sh y kafka-console-consumer.sh para conectarse a la instancia de Kafka.
Cree una aplicación kafka-cli-app que se enlace al servicio Kafka.
Al usar --bind o serviceBinds en la aplicación de prueba, la información de conexión se inserta en el entorno de la aplicación. Una vez que se conecte al contenedor de prueba, puede inspeccionar los valores mediante el comando env.
Use kafka-console-producer.sh para escribir algunos eventos en el tema.
/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
El comando ./kafka-console-producer.sh le pide que escriba eventos con >. Escriba algunos eventos como se muestra y, a continuación, presione CTRL-C para salir.
Use kafka-console-consumer.sh para leer eventos del tema.
/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 de un servicio de desarrollo con una aplicación existente
Si ya tiene una aplicación que usa Apache Kafka, puede cambiar cómo se carga la información de conexión.
Primero, agregue las siguientes variables de entorno.
git clone https://github.com/Azure-Samples/aca-dev-service-kafka-azd
cd aca-dev-service-kafka-azd
azd up
Limpieza de recursos
Cuando haya terminado, ejecute el siguiente comando para eliminar el grupo de recursos que contiene los recursos de Container Apps.
Precaución
El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si existen recursos en el grupo de recursos especificado que están fuera del ámbito de este tutorial, también se eliminarán.
az group delete \
--resource-group $RESOURCE_GROUP