Tutorial: conectar-se a um serviço Cache do Azure para Redis nos Aplicativos de Contêiner do Azure (versão prévia)

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

Durante o desenvolvimento, seu aplicativo pode criar e conectar-se rapidamente a serviços de desenvolvimento. Esses serviços são fáceis de serem criados e são serviços de nível de desenvolvimento projetados para ambientes de não 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 você pode se conectar ao serviço Cache do Azure para Redis de nível de desenvolvimento e produção no seu aplicativo de contêiner.

Neste tutorial, você aprenderá a:

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

Pré-requisitos

Recurso Descrição
Conta do Azure É necessária ter uma assinatura ativa. Se não tiver uma, poderá criar uma gratuitamente.
CLI do Azure Instale a CLI do Azure se ainda não instalou em seu computador.
Grupo de recursos do Azure Crie um grupo de recursos chamado my-services-resource-group na região Leste dos EUA.
Cache Redis do Azure Crie uma instância de Cache do Azure para Redis em my-services-resource-group.

Configuração

  1. Entrar na CLI do Azure.

    az login
    
  2. Atualize a extensão da CLI dos Aplicativos de Contêiner.

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

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

    az provider register --namespace Microsoft.ServiceLinker
    
  5. Configure a variável do 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 das instâncias Cache do Azure para Redis, execute o comando a seguir.

    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. Configurar a variável de localização.

    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, 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 cadeia de caracteres, seja na memória ou no cache Redis.

Crie o serviço de desenvolvimento do Redis e nomeie-o como 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 associe-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 este local em um navegador da Web para acompanhar e inspecionar o comportamento do aplicativo ao longo deste tutorial.

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

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

    A solicitação de ligação reúne informações de conexão, incluindo credenciais e cadeia de conexão, e as injeta no aplicativo como variáveis ​​de ambiente. Após esse procedimento, os valores estarã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 por meio de um navegador, poderá adicionar e remover cadeias de caracteres do banco de dados Redis. O cache Redis é responsável por armazenar os dados do aplicativo, portanto, os dados ficam disponíveis mesmo depois que o aplicativo é reiniciado após o escalonamento para zero.

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

  2. Desassociar o serviço de desenvolvimento Redis.

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

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

    O aplicativo foi desenvolvido de forma que, caso as variáveis de ambiente não estejam definidas, as cadeias de caracteres sejam armazenadas na memória.

    Nesse caso, se o aplicativo for escalonado para zero, os dados serão perdidos.

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

    Agora você pode refazer a associação do aplicativo ao serviço Redis para visualizar os dados previamente armazenados.

  3. Reassociar 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 o aplicativo estiver pronto para migrar para a produção, você poderá associar seu aplicativo a um serviço gerenciado em vez de um serviço de desenvolvimento.

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

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

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

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

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

    Esse comando remove simultaneamente a associação de desenvolvimento e estabelece a associação com o serviço gerenciado de nível de produção.

  3. Retorne 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
    

    Observação

    Os nomes das variáveis de ambiente utilizadas 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.

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

Limpar os recursos

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

O aplicativo e os serviços 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 implicitamente excluído, mesmo que todos os aplicativos estejam desconectados dele.

Execute os comandos a seguir para excluir o 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 aplicativo de contêiner e todos os serviços.

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

Próximas etapas