Share via


Tutorial: Conectar-se a um serviço de Cache Redis do Azure em Aplicativos de Contêiner do Azure (visualização)

Os Aplicativos de Contêiner do Azure permitem que você se conecte a serviços que dão suporte ao seu aplicativo que são executados no mesmo ambiente que seu aplicativo de contêiner.

Quando em desenvolvimento, seu aplicativo pode criar e se conectar rapidamente a serviços de desenvolvimento. Esses serviços são fáceis de criar e são serviços de nível de desenvolvimento projetados para ambientes que não são de produção.

À medida que você passa para a produção, seu aplicativo pode conectar serviços gerenciados de nível de produção.

Este tutorial mostra como conectar o serviço Cache do Azure para Redis de nível de desenvolvimento e produção ao seu aplicativo de contêiner.

Neste tutorial, irá aprender a:

  • Criar um novo serviço de desenvolvimento Redis
  • Conectar um aplicativo de contêiner ao serviço de desenvolvimento Redis
  • Desconectar o serviço do aplicativo
  • Inspecionar o serviço que executa um cache na memória

Pré-requisitos

Recurso Description
Conta do Azure É necessária uma subscrição ativa. Se não tiver uma, pode criar uma gratuitamente.
CLI do Azure Instale a CLI do Azure se você não a tiver em sua máquina.
Grupo de recursos do Azure Crie um grupo de recursos chamado my-services-resource-group na região Leste dos EUA .
Cache do Azure para Redis Crie uma instância do Cache do Azure para Redis no my-services-resource-group.

Configurar

  1. Entre na CLI do Azure.

    az login
    
  2. Atualize a extensão da CLI de aplicativos de contêiner.

    az extension add --name containerapp --upgrade
    
  3. Registre o Microsoft.App namespace.

    az provider register --namespace Microsoft.App
    
  4. Registre o Microsoft.ServiceLinker namespace.

    az provider register --namespace Microsoft.ServiceLinker
    
  5. Configure a variável de grupo de recursos.

    RESOURCE_GROUP="my-services-resource-group"
    
  6. Crie uma variável para o nome DNS do Cache do Azure para Redis.

    Para exibir uma lista do Cache do Azure para instâncias Redis, execute o seguinte comando.

    az redis list --resource-group "$RESOURCE_GROUP" --query "[].name" -o table
    
  7. Crie uma variável para manter o nome do seu ambiente.

    Substitua <MY_ENVIRONMENT_NAME> pelo nome do ambiente de aplicativos de contêiner.

    ENVIRONMENT=<MY_ENVIRONMENT_NAME>
    
  8. Configure a variável location.

    LOCATION="eastus"
    
  9. Crie um novo ambiente.

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

Com a CLI configurada e um ambiente criado, agora você pode criar um aplicativo e um serviço de desenvolvimento.

Criar um serviço de desenvolvimento

O aplicativo de exemplo gerencia um conjunto de cadeias de caracteres, na memória ou no cache Redis.

Crie o serviço de desenvolvimento Redis e nomeie-o myredis.

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

Criar um aplicativo de contêiner

Em seguida, crie seu aplicativo de contêiner acessível pela Internet.

  1. Crie um novo aplicativo de contêiner e vincule-o ao serviço 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 retorna o nome de domínio totalmente qualificado (FQDN). Cole esse local em um navegador da Web para que você possa inspecionar o comportamento do aplicativo ao longo deste tutorial.

    Captura de tela do aplicativo contêiner que executa um serviço de cache Redis.

    O containerapp create comando usa a --bind opção para criar um link entre o aplicativo de contêiner e o serviço de desenvolvimento Redis.

    A solicitação bind reúne informações de conexão, incluindo credenciais e cadeias de conexão, e as injeta no aplicativo como variáveis de ambiente. Esses valores agora estão disponíveis para o código do aplicativo usar para criar uma conexão com o serviço.

    Nesse caso, as seguintes variáveis de ambiente estão disponíveis para o aplicativo:

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

    Se você acessar o aplicativo através de um navegador, poderá adicionar e remover strings do banco de dados Redis. O cache Redis é responsável por armazenar dados do aplicativo, portanto, os dados ficam disponíveis mesmo depois que o aplicativo é reiniciado após o dimensionamento para zero.

    Você também pode remover uma associação do seu aplicativo.

  2. Desvincule o serviço de desenvolvimento Redis.

    Para remover uma associação de um aplicativo contêiner, use a --unbind opção.

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

    O aplicativo é escrito para que, se as variáveis de ambiente não forem definidas, as cadeias de texto sejam armazenadas na memória.

    Nesse estado, se o aplicativo for dimensionado para zero, os dados serão perdidos.

    Você pode verificar essa alteração retornando ao navegador da Web e atualizando o aplicativo da Web. Agora você pode ver as informações de configuração exibidas indicando que os dados estão armazenados na memória.

    Agora você pode vincular novamente o aplicativo ao serviço Redis, para ver seus dados armazenados anteriormente.

  3. Revincule o serviço de desenvolvimento Redis.

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

    Com o serviço reconectado, você pode atualizar o aplicativo Web para ver os dados armazenados no Redis.

Conectando-se a um serviço gerenciado

Quando seu aplicativo estiver pronto para passar para a produção, você poderá vincular seu aplicativo a um serviço gerenciado em vez de um serviço de desenvolvimento.

As etapas a seguir vinculam seu aplicativo a uma instância existente do Cache do Azure para Redis.

  1. Crie uma variável para o seu nome DNS.

    Certifique-se de substituir <YOUR_DNS_NAME> pelo nome DNS da sua instância do Cache do Azure para Redis.

    AZURE_REDIS_DNS_NAME=<YOUR_DNS_NAME>
    
  2. Vincular ao Cache do Azure para Redis.

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

    Este comando remove simultaneamente a ligação de desenvolvimento e estabelece a ligação ao serviço gerenciado de nível de produção.

  3. Volte ao seu navegador e atualize a página.

    O console imprime valores como o exemplo a seguir.

    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

    Os nomes das variáveis de ambiente usadas para complementos e serviços gerenciados variam ligeiramente.

    Se você quiser ver o código de exemplo usado para este tutorial, consulte https://github.com/Azure-Samples/sample-service-redis.

    Agora, quando você adiciona novas cadeias de caracteres, os valores são armazenados em uma instância do Cache do Azure para Redis em vez do serviço de desenvolvimento.

Clean up resources (Limpar recursos)

Se você não planeja continuar a usar os recursos criados neste tutorial, poderá excluir o aplicativo e o serviço Redis.

A aplicação e o serviço são independentes. Essa independência significa que o serviço pode ser conectado a qualquer número de aplicativos no ambiente e existe até ser explicitamente excluído, mesmo que todos os aplicativos sejam desconectados dele.

Execute os comandos a seguir para excluir seu aplicativo de contêiner e o serviço de desenvolvimento.

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

Como alternativa, você pode excluir o grupo de recursos para remover o contêiner, o aplicativo e todos os serviços.

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

Próximos passos