Exercício – Definir variáveis de ambiente

Concluído

Variáveis de ambiente permitem que você configure dinamicamente o aplicativo ou script que o contêiner executa. Use a CLI do Azure, o PowerShell ou o portal do Azure para definir variáveis ao criar o contêiner. Variáveis de ambiente seguras evitam que informações confidenciais sejam exibidas na saída das operações 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 a uma instância de contêiner do Azure. Um aplicativo no contêiner usa as variáveis para gravar e ler dados do Azure Cosmos DB. Crie uma variável de ambiente padrão e uma segura para que você possa ver a diferença entre elas.

Implantar o Azure Cosmos DB

  1. Durante a implantação do Azure Cosmos DB, você fornece um nome de banco de dados exclusivo. Para fins de aprendizado, execute este comando no Cloud Shell para criar uma variável de Bash que contenha um nome exclusivo:

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. Execute este comando az cosmosdb create 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)
    

    O comando pode demorar alguns minutos para ser concluído.

    $COSMOS_DB_NAME especifica o nome exclusivo do banco de dados. O comando imprime o endereço do ponto de extremidade do banco de dados. Aqui, o comando salva esse endereço na variável de 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 de 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)
    

Implantar um contêiner que funciona com seu banco 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 você criou na última parte, COSMOS_DB_ENDPOINT e COSMOS_DB_MASTERKEY, contêm os valores necessários para estabelecer conexão com a instância do Azure Cosmos DB.

  1. Execute o comando az container create a seguir 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.

    Observe o argumento --environment-variables. Esse argumento especifica variáveis de ambiente que são passadas para o contêiner quando este é iniciado. A imagem de contêiner é configurada para procurar essas 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 az container show para obter o endereço IP público do seu 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 contêiner.

    Importante

    Pode demorar um ou dois minutos para os contêineres serem totalmente inicializados e poderem receber conexões. Se não houver resposta ao acessar o endereço IP no navegador, aguarde alguns instantes e atualize a página.

    Quando o aplicativo estiver disponível, você verá esta página:

    Screenshot that shows the Azure voting application with two choices in a browser. Cats and Dogs.

    Tente registrar um voto para gatos ou cachorros. Cada voto é armazenado em sua instância do Azure Cosmos DB.

Usar variáveis de ambiente seguras para ocultar as informações de conexão

Na seção anterior, você usou duas variáveis de ambiente para criar o contêiner. Por padrão, essas variáveis de ambiente podem ser acessadas por meio do portal do Azure e de ferramentas de linha de comando em texto sem formatação.

Nesta seção, você verá como evitar que informações confidenciais, como chaves de conexão, sejam exibidas em texto sem formatação.

  1. Vamos começar vendo o comportamento atual em ação. Execute o comando az container show a seguir 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ê obterá a saída com ambos os valores em texto sem formatação. Aqui está um exemplo:

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

    Embora esses valores não sejam exibidos aos 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 seguras impedem a saída de texto não criptografado. Para usar variáveis de ambiente seguras, use o argumento --secure-environment-variables em vez do argumento --environment-variables.

  2. Execute o comando a seguir para criar um contêiner, chamado aci-demo-secure, que usa variáveis de ambiente seguras:

    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
    

    Observe o uso do argumento --secure-environment-variables.

  3. Execute o comando az container show a seguir 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
    

    Neste momento, 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 prática, os valores das variáveis de ambiente nem aparecem. Isso está certo porque esses valores se referem a informações confidenciais. Aqui, você só precisa saber que há variáveis de ambiente.