練習 - 設定環境變數

已完成

環境變數可讓您以動態方式設定容器執行的應用程式或指令碼。 在建立容器時,可以使用 Azure CLI、PowerShell 或 Azure 入口網站來設定變數。 安全的環境變數可讓您防止在容器輸出中顯示敏感性資訊。

建立 Azure Cosmos DB 執行個體,並使用環境變數將連線資訊傳遞至 Azure 容器執行個體。 容器中的應用程式使用這些變數寫入及讀取 Azure Cosmos DB 資料。 建立環境變數與安全的環境變數,以便查看兩者的差異。

部署 Azure Cosmos DB

  1. 當您部署 Azure Cosmos DB 時,您要提供唯一的資料庫名稱。 為了方便學習,請在 Cloud Shell 中執行此命令,建立保留唯一名稱的 Bash 變數:

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. 執行此 az cosmosdb create 命令來建立 Azure Cosmos DB 執行個體:

    COSMOS_DB_ENDPOINT=$(az cosmosdb create \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query documentEndpoint \
      --output tsv)
    

    此命令需要幾分鐘的時間才能完成。

    $COSMOS_DB_NAME 指定唯一資料庫名稱。 此命令會列印出資料庫的端點位址。 在這裡,此命令會將這個位址儲存至 Bash 變數 COSMOS_DB_ENDPOINT

  3. 執行 az cosmosdb keys list 以取得 Azure Cosmos DB 連接金鑰,並儲存在名為 COSMOS_DB_MASTERKEY 的 Bash 變數中:

    COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query primaryMasterKey \
      --output tsv)
    

部署搭配資料庫使用的容器

建立可從 Azure Cosmos DB 執行個體讀取並寫入記錄的 Azure 容器執行個體。

您在上個部分中建立的兩個環境變數 (COSMOS_DB_ENDPOINTCOSMOS_DB_MASTERKEY),保留了連線至 Azure Cosmos DB 執行個體所需的值。

  1. 執行下列 az container create 命令以建立容器:

    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 是指執行虛構投票應用程式的容器映像。

    請注意 --environment-variables 引數。 這個引數指定容器啟動時傳遞給容器的環境變數。 容器映像已設定為尋找這些環境變數。 傳遞 Azure Cosmos DB 端點名稱和其連線金鑰。

  2. 執行 az container show 命令以取得容器的公用 IP 位址:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. 使用瀏覽器前往容器的 IP 位址。

    重要

    有時候容器需要一或兩分鐘的時間才能完全啟動並可接收連線。 如果在瀏覽器中前往 IP 位址時沒有回應,請稍候片刻,並重新整理頁面。

    一旦應用程式可供使用,您就會看到此頁面:

    螢幕擷取畫面顯示瀏覽器中的 Azure 投票應用程式,帶有兩個選項。貓和狗。

    請嘗試投票,選貓或狗。 每個投票都會儲存在您的 Azure Cosmos DB 執行個體中。

使用安全的環境變數來隱藏連線資訊

在上一節中,您已使用兩個環境變數來建立容器。 根據預設,這些環境變數是可透過 Azure 入口網站和命令列工具存取的純文字。

在此節中,了解如何防止敏感性資訊 (例如連線金鑰) 以純文字顯示。

  1. 讓我們從實際查看目前的行為開始。 執行下列 az container show 命令以顯示容器的環境變數:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query containers[0].environmentVariables
    

    您會以純文字取得這兩個值的輸出。 以下是範例:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": "https://aci-cosmos.documents.azure.com:443/"
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": "abcdefghijklmnopqrztuvwxyz0123456789=="
      }
    ]
    

    雖然這些值不會透過投票應用程式向使用者顯示,但這是良好的安全性練習,確保敏感性資訊 (例如連線金鑰) 不會以純文字儲存。

    安全的環境變數可防止以純文字輸出。 若要使用安全的環境變數,您要使用 --secure-environment-variables 引數而非 --environment-variables 引數。

  2. 執行下列命令以建立使用安全環境變數、名為 aci-demo-secure 的第二個容器:

    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
    

    請注意使用的 --secure-environment-variables 引數。

  3. 執行下列 az container show 命令以顯示容器的環境變數:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --query containers[0].environmentVariables
    

    這時,您可以看到環境變數並非以純文字顯示:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": null
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": null
      }
    ]
    

    事實上,環境變數的值完全不會出現。 這沒有關係,因為這些值是指敏感性資訊。 在這裡,您只要知道環境變數存在即可。