Övning – Ange miljövariabler
Med miljövariabler kan du konfigurera programmet eller skriptet som containern körs dynamiskt. Du kan använda Azure CLI, PowerShell eller Azure-portalen för att ställa in variabler när du skapar containern. Skyddade miljövariabler förhindrar att känslig information visas i containerns utdata.
Skapa en Azure Cosmos DB-instans och använd miljövariabler för att skicka anslutningsinformationen till en Azure-containerinstans. En app i containern använder variablerna till att skriva och läsa data från Cosmos DB. Skapa både en miljövariabel och en skyddad miljövariabel så att du kan se skillnaden mellan dem.
Distribuera Azure Cosmos DB
När du distribuerar Azure Cosmos DB anger du ett unikt databasnamn. I utbildningssyfte kör du det här kommandot i Cloud Shell för att skapa en Bash-variabel som innehåller ett unikt namn:
COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
Kör det här
az cosmosdb create
kommandot för att skapa din Azure Cosmos DB-instans:COSMOS_DB_ENDPOINT=$(az cosmosdb create \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query documentEndpoint \ --output tsv)
Det kan ta några minuter att köra kommandot.
$COSMOS_DB_NAME
anger ditt unika databasnamn. Kommandot skriver ut slutpunktsadressen för din databas. Här sparar kommandot den här adressen till Bash-variabelnCOSMOS_DB_ENDPOINT
.Kör
az cosmosdb keys list
för att hämta Azure Cosmos DB-anslutningsnyckeln och lagra den i en Bash-variabel med namnetCOSMOS_DB_MASTERKEY
:COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query primaryMasterKey \ --output tsv)
Distribuera en container som fungerar med din databas
Skapa en Azure-containerinstans som kan läsa från och skriva poster till din Azure Cosmos DB-instans.
De två miljövariabler som du skapade i den sista delen, COSMOS_DB_ENDPOINT
och COSMOS_DB_MASTERKEY
, lagrar värdena som du behöver för att ansluta till Azure Cosmos DB-instansen.
Kör följande
az container create
kommando för att skapa containern: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 refererar till en containeravbildning som kör en fiktiv röstningsapp.
Observera
--environment-variables
-argumentet. Det här argumentet anger miljövariabler som skickas till containern när containern startas. Containeravbildningen har konfigurerats för att leta efter dessa miljövariabler. Skicka namnet på Azure Cosmos DB-slutpunkten och dess anslutningsnyckel.az container show
Kör kommandot för att hämta containerns offentliga IP-adress:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query ipAddress.ip \ --output tsv
Gå till containerns IP-adress i en webbläsare.
Viktigt!
Ibland tar det en minut eller två containrar att starta helt och kunna ta emot anslutningar. Om det inte finns något svar när du går till IP-adressen i webbläsaren väntar du en stund och uppdaterar sidan.
När appen är tillgänglig får du den här sidan:
Prova att rösta på katter eller hundar. Varje röst lagras i din Azure Cosmos DB-instans.
Dölja anslutningsinformation genom att använda säkra miljövariabler
I föregående avsnitt använde du två miljövariabler för att skapa din container. Som standard är dessa miljövariabler tillgängliga via Azure-portalen och kommandoradsverktygen som oformaterad text.
I det här avsnittet får du lära dig hur du förhindrar att känslig information, till exempel anslutningsnycklar, visas i oformaterad text.
Vi ska börja med att titta på det aktuella beteendet. Kör följande
az container show
kommando för att visa containerns miljövariabler:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query containers[0].environmentVariables
Du får utdata med båda värdena i oformaterad text. Här är ett exempel:
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": "https://aci-cosmos.documents.azure.com:443/" }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": "abcdefghijklmnopqrztuvwxyz0123456789==" } ]
Även om dessa värden inte visas för användarna via röstningsprogrammet är det en bra säkerhetspraxis att se till att känslig information (till exempel anslutningsnycklar) inte lagras i oformaterad text.
Med säkra miljövariabler förhindrar du att utdata visas i klartext. Använd argumentet i stället för argumentet om
--environment-variables
du vill använda säkra miljövariabler--secure-environment-variables
.Kör följande kommando för att skapa en andra container med namnet aci-demo-secure som använder skyddade miljövariabler:
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
Observera användningen av argumentet
--secure-environment-variables
.Kör följande
az container show
kommando för att visa containerns miljövariabler:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo-secure \ --query containers[0].environmentVariables
Den här gången kan du se att miljövariablerna inte visas i oformaterad text:
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": null }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": null } ]
I själva verket visas inte värdena för dina miljövariabler alls. Det är helt i sin ordning eftersom dessa värden refererar till känslig information. Allt du behöver veta här är att miljövariablerna finns.