Share via


Tutorial: Conexión a un servicio Azure Cache for Redis en Azure Container Apps (versión preliminar)

Con Azure Container Apps es posible conectarse a servicios compatibles con la aplicación que se ejecuta en el mismo entorno que la aplicación de contenedor.

Cuando está en fase de desarrollo, la aplicación puede crear servicios de desarrollo y conectarse a ellos rápidamente. Además de ser de fácil creación, son servicios de nivel de desarrollo diseñados para entornos que no son de producción.

Cuando se pasan a producción, la aplicación puede conectar servicios administrados del nivel de producción.

En este tutorial se muestra cómo conectar el servicio Azure Cache for Redis de nivel de desarrollo y producción a la aplicación contenedora.

En este tutorial, aprenderá a:

  • Crear un nuevo servicio de desarrollo de Redis
  • Conectar una aplicación de contenedor al servicio de desarrollo de Redis
  • Desconectar el servicio de la aplicación
  • Inspeccionar el servicio que ejecuta una caché en la memoria

Requisitos previos

Resource Descripción
Cuenta de Azure Se necesita una suscripción vigente de Azure. Si no tiene ninguna, puede crear una gratis.
Azure CLI Instale la CLI de Azure si no se encuentra en el equipo.
Grupo de recursos de Azure Cree un grupo de recursos denominado my-services-resource-group en la región Este de EE. UU.
Azure Cache for Redis Cree una instancia de Azure Cache for Redis en my-services-resource-group.

Configurar

  1. Inicie sesión en la CLI de Azure.

    az login
    
  2. Actualice la extensión de la CLI de Container Apps.

    az extension add --name containerapp --upgrade
    
  3. Registre el Microsoft.App espacio de nombres.

    az provider register --namespace Microsoft.App
    
  4. Registre el Microsoft.ServiceLinker espacio de nombres.

    az provider register --namespace Microsoft.ServiceLinker
    
  5. Configure la variable de grupo de recursos.

    RESOURCE_GROUP="my-services-resource-group"
    
  6. Cree una variable del nombre DNS de Azure Cache for Redis.

    Para poder ver una lista de las instancias de Azure Cache for Redis, ejecute el siguiente comando.

    az redis list --resource-group "$RESOURCE_GROUP" --query "[].name" -o table
    
  7. Cree una variable que contenga el nombre del entorno.

    Reemplace <MY_ENVIRONMENT_NAME> por el nombre del entorno de aplicaciones de contenedor.

    ENVIRONMENT=<MY_ENVIRONMENT_NAME>
    
  8. Configure la variable de ubicación.

    LOCATION="eastus"
    
  9. Crear un nuevo entorno.

    az containerapp env create \
      --location "$LOCATION" \
      --resource-group "$RESOURCE_GROUP" \
      --name "$ENVIRONMENT"
    

Una vez configurada la CLI y creado el entorno, puede crear una aplicación y un servicio de desarrollo.

Crear un servicio de desarrollo

La aplicación de muestra administra un conjunto de cadenas, ya sea en la memoria o en la caché de Redis.

Cree el servicio de desarrollo de Redis y asígnele el nombre myredis.

az containerapp add-on redis create \
  --name myredis \
  --resource-group "$RESOURCE_GROUP" \
  --environment "$ENVIRONMENT"

Crear una aplicación de contenedor

A continuación, cree una aplicación de contenedor accesible por Internet.

  1. Cree una nueva aplicación de contenedor y enlácela al servicio Redis.

    az containerapp create \
      --name myapp \
      --image mcr.microsoft.com/k8se/samples/sample-service-redis:latest \
      --ingress external \
      --target-port 8080 \
      --bind myredis \
      --environment "$ENVIRONMENT" \
      --resource-group "$RESOURCE_GROUP" \
      --query properties.configuration.ingress.fqdn
    

    Este comando devuelve el nombre de dominio completo (FQDN). Pegue esta ubicación en un explorador web para poder inspeccionar el comportamiento de la aplicación en este tutorial.

    Captura de pantalla de una aplicación de contenedor que ejecuta un servicio de caché de Redis.

    El comando containerapp create usa la opción --bind para crear un vínculo entre la aplicación de contenedor y el servicio de desarrollo de Redis.

    La solicitud de enlace recopila información de conexión, que incluye las credenciales y las cadenas de conexión, y la inserta en la aplicación como variables de entorno. Estos valores están disponibles ahora en el código de aplicación que se va a usar para crear una conexión al servicio.

    En este caso, las siguientes variables de entorno están disponibles en la aplicación:

    REDIS_ENDPOINT=myredis:6379
    REDIS_HOST=myredis
    REDIS_PASSWORD=...
    REDIS_PORT=6379
    

    Si accede a la aplicación a través de un explorador, puede agregar y quitar cadenas de la base de datos de Redis. La caché de Redis se encarga de almacenar los datos de la aplicación, por lo que los datos están disponibles incluso después de reiniciar la aplicación tras escalar a cero.

    También puede quitar un enlace de la aplicación.

  2. Desenlace el servicio de desarrollo de Redis.

    Para quitar un enlace de una aplicación de contenedor, recurra a la opción --unbind.

    az containerapp update \
      --name myapp \
      --unbind myredis \
      --resource-group "$RESOURCE_GROUP"
    

    La aplicación se escribe para que, si las variables de entorno no están definidas, las cadenas de texto se almacenen en memoria.

    En este estado, si la aplicación se escala a cero, se pierden los datos.

    Para comprobar este cambio, vuelva al explorador web y actualice la aplicación web. Ahora puede comprobar que la información de configuración que se muestra indica que los datos se almacenan en la memoria.

    Ahora puede enlazar de nuevo la aplicación al servicio Redis para ver los datos almacenados anteriormente.

  3. Vuelva a enlazar el servicio de desarrollo de Redis.

    az containerapp update \
      --name myapp \
      --bind myredis \
      --resource-group "$RESOURCE_GROUP"
    

    Una vez reconectado el servicio, puede actualizar la aplicación web para ver los datos almacenados en Redis.

Conectarse a un servicio administrado

Cuando la aplicación esté lista para pasar a producción, puede enlazar la aplicación a un servicio administrado en lugar de a uno de desarrollo.

En los pasos siguientes se enlaza la aplicación a una instancia existente de Azure Cache for Redis.

  1. Cree una variable para el nombre DNS.

    Asegúrese de reemplazar <YOUR_DNS_NAME> por el nombre DNS de la instancia de Azure Cache for Redis.

    AZURE_REDIS_DNS_NAME=<YOUR_DNS_NAME>
    
  2. Enlace a Azure Cache for Redis.

    az containerapp update \
      --name myapp \
      --unbind myredis \
      --bind "$AZURE_REDIS_DNS_NAME" \
      --resource-group "$RESOURCE_GROUP"
    

    Este comando quita simultáneamente el enlace de desarrollo y establece el enlace para el servicio administrado de nivel de producción.

  3. Vuelva al explorador y actualice la página.

    La consola imprime valores como en el ejemplo siguiente.

    AZURE_REDIS_DATABASE=0
    AZURE_REDIS_HOST=azureRedis.redis.cache.windows.net
    AZURE_REDIS_PASSWORD=il6HI...
    AZURE_REDIS_PORT=6380
    AZURE_REDIS_SSL=true
    

    Nota:

    Los nombres de variables de entorno que se usan para los complementos y los servicios administrados varían ligeramente.

    Si quiere ver el código de ejemplo que se usa en este tutorial vea https://github.com/Azure-Samples/sample-service-redis.

    Ahora, cuando agregue nuevas cadenas, los valores se almacenan en una instancia Azure Cache for Redis en lugar del servicio de desarrollo.

Limpieza de recursos

Si no tiene previsto continuar usando los recursos creados en este tutorial, puede eliminar la aplicación y el servicio de Redis.

La aplicación y el servicio son independientes. Esta independencia conlleva que el servicio se pueda conectar a cualquier número de aplicaciones en el entorno y existe hasta que se elimina de forma explícita, incluso si se desconectan todas las aplicaciones.

Ejecute los siguientes comandos para eliminar la aplicación de contenedor y el servicio de desarrollo.

az containerapp delete --name myapp
az containerapp add-on redis delete --name myredis

También puede eliminar el grupo de recursos para quitar la aplicación de contenedor y todos los servicios.

az group delete \
  --resource-group "$RESOURCE_GROUP"

Pasos siguientes