管理 Azure 容器應用程式中的修訂和祕密

已完成

Azure 容器應用程式會透過建立修訂來實作容器應用程式版本設定。 修訂是容器應用程式版本的不可變快照集。 您可以使用修訂來發行新版本的應用程式,或快速還原為舊版的應用程式。 當您使用修訂範圍變更來更新應用程式時,會建立新的修訂。 您也可以根據特定修訂來更新容器應用程式。

您可以控制哪些修訂為使用中,以及路由傳送至每個使用中修訂的外部流量。 修訂名稱可用來識別修訂,以及用在修訂的 URL 中。 您可以藉由設定修訂尾碼來自訂修訂名稱。

根據預設,Azure 容器應用程式會建立唯一的修訂名稱,其尾碼包含英數字元的半隨機字串。 例如,針對名為 album-api 的容器應用程式,將修訂尾碼名稱設定為 1st-revision 會建立名為 album-api--1st-revision 的修訂。 您可以在 ARM 範本中設定修訂尾碼、透過 Azure CLI az containerapp createaz containerapp update 命令,或透過 Azure 入口網站建立修訂時。

更新您的容器應用程式

使用 az containerapp update 命令,您可以修改環境變數、計算資源、調整參數,以及部署不同的映像。 如果您的容器應用程式更新包含 修訂範圍變更,將會產生新的修訂。

az containerapp update \
  --name <APPLICATION_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  --image <IMAGE_NAME>

您可以使用 az containerapp revision list 命令列出與容器應用程式相關聯的所有修訂。

az containerapp revision list \
  --name <APPLICATION_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  -o table

如需 Azure 容器應用程式命令的詳細資訊,請瀏覽 az containerapp 參考。

管理 Azure 容器應用程式中的祕密

Azure 容器應用程式可讓您的應用程式安全地儲存敏感性組態值。 一旦祕密在應用程式層級定義,安全值即可供容器應用程式使用。 具體來說,您可以在級別規則內參考受保護的值。

  • 秘密的適用範圍是應用程式,不包含應用程式的任何特定修訂版本。
  • 新增、移除或變更秘密不會產生新的修訂。
  • 每個應用程式修訂版本都可以參考一或多個秘密。
  • 多個修訂版本可以參考相同的秘密。

更新或刪除的秘密不會自動影響您應用程式中現有的修訂。 當秘密更新或刪除時,您可以使用下列兩種方式之一回應變更:

  1. 新增修訂版本。
  2. 重新啟動現有的修訂版本。

在刪除秘密之前,請先部署不再參考舊密碼的新修訂版本。 然後停用參考秘密的所有修訂。

注意

Azure 容器應用程式不支援 Azure Key Vault 整合。 相反地,請在容器應用程式中啟用受控識別,並在您的應用程式中使用 Azure Key Vault SDK 來存取秘密。

定義秘密

當您建立容器應用程式時,會使用 --secrets 參數來定義祕密。

  • 此參數接受以空格分隔的名稱/值組集合。
  • 每一對都是以等號分隔 (=)。

下列範例中,--secrets 參數中會宣告佇列儲存體帳戶的連接字串。 queue-connection-string 的值來自名為 $CONNECTION_STRING 的環境變數。

az containerapp create \
  --resource-group "my-resource-group" \
  --name queuereader \
  --environment "my-environment-name" \
  --image demos/queuereader:v1 \
  --secrets "queue-connection-string=$CONNECTION_STRING"

在應用層級宣告秘密之後,當您在容器應用程式中建立新的修訂時,可以在環境變數中參考它們。 當環境變數參考秘密時,其值會以秘密中定義的值填入。 若要參考 Azure CLI 中環境變數中的秘密,請將其值設定為 secretref:,後面接續秘密的名稱。

下列範例展示在應用層級宣告連接字串的應用程式。 此關係會在容器環境變數中進行參考。

az containerapp create \
  --resource-group "my-resource-group" \
  --name myQueueApp \
  --environment "my-environment-name" \
  --image demos/myQueueApp:v1 \
  --secrets "queue-connection-string=$CONNECTIONSTRING" \
  --env-vars "QueueName=myqueue" "ConnectionString=secretref:queue-connection-string"