Cvičení – nastavení proměnných prostředí
Proměnné prostředí umožňují dynamicky konfigurovat aplikaci nebo skriptovat spuštění kontejneru. Při vytváření kontejneru můžete použít rozhraní příkazového řádku Azure, PowerShell nebo web Azure Portal k nastavení proměnných. Zabezpečené proměnné prostředí brání zobrazení citlivých informací ve výstupu kontejneru.
Vytvořte instanci služby Azure Cosmos DB a pomocí proměnných prostředí předejte informace o připojení do instance kontejneru Azure. Aplikace v kontejneru používá proměnné k zápisu dat do Azure Cosmos DB a ke čtení dat z této databáze. Vytvořte jak proměnnou prostředí, tak zabezpečenou proměnnou prostředí, abyste viděli rozdíl mezi nimi.
Nasazení služby Azure Cosmos DB
Při nasazování služby Azure Cosmos DB zadáváte jedinečný název databáze. Pro účely výuky spusťte tento příkaz v Cloud Shellu a vytvořte proměnnou Bash, která obsahuje jedinečný název:
COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
Spuštěním tohoto
az cosmosdb create
příkazu vytvořte instanci služby Azure Cosmos DB:COSMOS_DB_ENDPOINT=$(az cosmosdb create \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query documentEndpoint \ --output tsv)
Dokončení tohoto příkazu může trvat několik minut.
$COSMOS_DB_NAME
určuje jedinečný název databáze. Tento příkaz zobrazí adresu koncového bodu vaší databáze. Tady příkaz uloží tuto adresu do proměnné prostředí BashCOSMOS_DB_ENDPOINT
.Spuštěním příkazu získejte
az cosmosdb keys list
klíč připojení ke službě Azure Cosmos DB a uložte ho do proměnné Bash s názvemCOSMOS_DB_MASTERKEY
:COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query primaryMasterKey \ --output tsv)
Nasazení kontejneru pracujícího s databází
Vytvořte instanci kontejneru Azure, která může číst záznamy a zapisovat je do vaší instance Azure Cosmos DB.
Dvě proměnné prostředí, které jste vytvořili v poslední části, COSMOS_DB_ENDPOINT
a COSMOS_DB_MASTERKEY
, obsahují hodnoty potřebné pro připojení k instanci služby Azure Cosmos DB.
Spuštěním následujícího
az container create
příkazu vytvořte kontejner: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 odkazuje na image kontejneru, která spouští fiktivní hlasovací aplikaci.
Poznamenejte si argument
--environment-variables
. Tento argument určuje proměnné prostředí, které se předávají kontejneru při jeho spuštění. Image kontejneru je nakonfigurovaná tak, aby tyto proměnné prostředí vyhledávala. Předejte název koncového bodu služby Azure Cosmos DB a jeho připojovací klíč.Spuštěním
az container show
příkazu získejte veřejnou IP adresu kontejneru:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query ipAddress.ip \ --output tsv
V prohlížeči přejděte na IP adresu kontejneru.
Důležité
Někdy může trvat několik minut, než se kontejnery plně spustí a budou moct přijímat připojení. Pokud při přechodu na IP adresu v prohlížeči nedojde k žádné odpovědi, chvíli počkejte a aktualizujte stránku.
Jakmile bude aplikace dostupná, získáte tuto stránku:
Zkuste dát hlas kočkám nebo psům. Každý hlas je uložený v instanci služby Azure Cosmos DB.
Použití zabezpečených proměnných prostředí ke skrytí informací o připojení
V předchozí části jste k vytvoření kontejneru použili dvě proměnné prostředí. Ve výchozím nastavení jsou tyto proměnné prostředí přístupné prostřednictvím webu Azure Portal a v nástrojích příkazového řádku jako prostý text.
V této části se dozvíte, jak zabránit zobrazování citlivých informací, jako jsou klíče připojení, v prostém textu.
Nejdřív se podívejme, jak vypadá aktuální chování v akci. Spuštěním následujícího
az container show
příkazu zobrazte proměnné prostředí kontejneru:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query containers[0].environmentVariables
Výstup získáte s oběma hodnotami ve formátu prostého textu. Tady je příklad:
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": "https://aci-cosmos.documents.azure.com:443/" }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": "abcdefghijklmnopqrztuvwxyz0123456789==" } ]
I když se tyto hodnoty uživatelům nezobrazují prostřednictvím hlasovací aplikace, je vhodné zajistit, aby citlivé informace (například klíče připojení) nejsou uložené ve formátu prostého textu.
Zabezpečené proměnné prostředí brání jasnému textovému výstupu. Pokud chcete použít zabezpečené proměnné prostředí, použijte
--secure-environment-variables
místo argumentu--environment-variables
argument.Spuštěním následujícího příkazu vytvořte druhý kontejner s názvem aci-demo-secure , který využívá zabezpečené proměnné prostředí:
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
Poznamenejte si použití argumentu
--secure-environment-variables
.Spuštěním následujícího
az container show
příkazu zobrazte proměnné prostředí kontejneru:az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo-secure \ --query containers[0].environmentVariables
Tentokrát vidíte, že proměnné prostředí se nezobrazují ve formátu prostého textu:
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": null }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": null } ]
Ve skutečnosti se hodnoty proměnných prostředí vůbec nezobrazují. To je v pořádku, protože se tyto hodnoty vztahují k citlivým údajům. Vše, co potřebujete vědět, je, že proměnné prostředí existují.