Cvičení – nastavení proměnných prostředí

Dokončeno

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

  1. 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
    
  2. 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í Bash COSMOS_DB_ENDPOINT.

  3. 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ázvem COSMOS_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.

  1. 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íč.

  2. 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
    
  3. 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:

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

    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.

  1. 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": "Xm5BwdLlCllBvrR26V00000000S2uOusuglhzwkE7dOPMBQ3oA30n3rKd8PKA13700000000095ynys863Ghgw=="
      }
    ]
    

    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.

  2. 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.

  3. 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í.