Exercício – definir variáveis de ambiente
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
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
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 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 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)
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.
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.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
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:
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.
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.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
.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.