Exercício – definir variáveis de ambiente

Concluído

As variáveis de ambiente permitem configurar dinamicamente o aplicativo ou o script que o contêiner executa. Pode utilizar a CLI do Azure, o PowerShell ou o portal do Azure para definir as variáveis ao criar o contentor. As variáveis de ambiente seguro impedem que informações confidenciais sejam exibidas na saída do contêiner.

Crie uma instância do Azure Cosmos DB e use variáveis de ambiente para passar as informações de conexão para uma instância de contêiner do Azure. Uma aplicação no contentor utiliza as variáveis para escrever e ler dados do Azure Cosmos DB. Crie uma variável de ambiente e uma variável de ambiente seguro para que você possa ver a diferença entre elas.

Implementar o Azure Cosmos DB

  1. Quando implementa o Azure Cosmos DB, fornece um nome de base de dados exclusivo. Para fins de aprendizagem, execute este comando no Cloud Shell para criar uma variável Bash que contenha um nome exclusivo:

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. Execute este az cosmosdb create comando para criar sua instância do Azure Cosmos DB:

    COSMOS_DB_ENDPOINT=$(az cosmosdb create \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query documentEndpoint \
      --output tsv)
    

    Este comando pode demorar alguns minutos a ser executado.

    $COSMOS_DB_NAME especifica o seu nome de base de dados exclusivo. O comando imprime o endereço de ponto final da sua base de dados. Aqui, o comando guarda este endereço na variável Bash COSMOS_DB_ENDPOINT.

  3. Execute az cosmosdb keys list para obter a chave de conexão do Azure Cosmos DB e armazená-la em uma variável Bash chamada COSMOS_DB_MASTERKEY:

    COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query primaryMasterKey \
      --output tsv)
    

Implementar um contentor que funcione com a sua base de dados

Crie uma instância de contêiner do Azure que possa ler e gravar registros em sua instância do Azure Cosmos DB.

As duas variáveis de ambiente que criou na última parte, COSMOS_DB_ENDPOINT e COSMOS_DB_MASTERKEY, contêm os valores necessários para ligar à instância do Azure Cosmos DB.

  1. Execute o seguinte az container create comando para criar o contêiner:

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \
      --ip-address Public \
      --location eastus \
      --environment-variables \
        COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
        COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
    

    azuredocs/azure-vote-front:cosmosdb refere-se a uma imagem de contêiner que executa um aplicativo de votação fictício.

    Repare no argumento --environment-variables. Este argumento especifica variáveis de ambiente que são passadas para o contentor quando este é iniciado. A imagem de contentor é configurada para procurar estas variáveis de ambiente. Passe o nome do ponto de extremidade do Azure Cosmos DB e sua chave de conexão.

  2. Execute o comando para obter o az container show endereço IP público do contêiner:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. Em um navegador, vá para o endereço IP do seu contêiner.

    Importante

    Às vezes, os contêineres levam um ou dois minutos para serem totalmente iniciados e serem capazes de receber conexões. Se não houver resposta quando você acessar o endereço IP do seu navegador, aguarde alguns momentos e atualize a página.

    Assim que o aplicativo estiver disponível, você receberá esta página:

    Captura de tela que mostra o aplicativo de votação do Azure com duas opções em um navegador. Cães e Gatos.

    Experimente votar em cats (gatos) ou dogs (cães). Cada voto é armazenado na sua instância do Azure Cosmos DB.

Utilizar variáveis de ambiente protegidas para ocultar as informações de ligação

Na seção anterior, você usou duas variáveis de ambiente para criar seu contêiner. Por predefinição, estas variáveis de ambiente são acessíveis através do portal do Azure e as ferramentas da linha de comandos estão em texto simples.

Nesta seção, saiba como impedir que informações confidenciais, como chaves de conexão, sejam exibidas em texto sem formatação.

  1. Vamos começar por ver o comportamento atual em ação. Execute o seguinte az container show comando para exibir as variáveis de ambiente do contêiner:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query containers[0].environmentVariables
    

    Você obtém a saída com ambos os valores em texto sem formatação. Eis um exemplo:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": "https://aci-cosmos.documents.azure.com:443/"
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": "abcdefghijklmnopqrztuvwxyz0123456789=="
      }
    ]
    

    Embora esses valores não apareçam para seus usuários por meio do aplicativo de votação, é uma boa prática de segurança garantir que informações confidenciais (como chaves de conexão) não sejam armazenadas em texto sem formatação.

    As variáveis de ambiente protegido impedem a saída de texto não encriptado. Para usar variáveis de ambiente seguro, use o --secure-environment-variables argumento em vez do --environment-variables argumento.

  2. Execute o seguinte comando para criar um segundo contêiner chamado aci-demo-secure que faz uso de variáveis de ambiente seguro:

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \
      --ip-address Public \
      --location eastus \
      --secure-environment-variables \
        COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \
        COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
    

    Repare na utilização do argumento --secure-environment-variables.

  3. Execute o seguinte az container show comando para exibir as variáveis de ambiente do contêiner:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --query containers[0].environmentVariables
    

    Desta vez, você pode ver que suas variáveis de ambiente não aparecem em texto sem formatação:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": null
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": null
      }
    ]
    

    Na verdade, os valores das variáveis de ambiente não aparecem de todo. Este é o resultado pretendido, uma vez que estes valores se referem a informações confidenciais. Aqui, tudo o que precisa de saber é que as variáveis de ambiente existem.