Exercício – Definir variáveis de ambiente
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
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
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 BashCOSMOS_DB_ENDPOINT
.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 chamadaCOSMOS_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.
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.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
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:
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.
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
.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
.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.