管理 Azure 容器應用程式中的修訂和祕密
Azure 容器應用程式會透過建立修訂來實作容器應用程式版本設定。 修訂是容器應用程式版本的不可變快照集。 您可以使用修訂來發行新版本的應用程式,或快速還原為舊版的應用程式。 當您使用修訂範圍變更來更新應用程式時,會建立新的修訂。 您也可以根據特定修訂來更新容器應用程式。
您可以控制哪些修訂為使用中,以及路由傳送至每個使用中修訂的外部流量。 修訂名稱可用來識別修訂,以及用在修訂的 URL 中。 您可以藉由設定修訂尾碼來自訂修訂名稱。
根據預設,Azure 容器應用程式會建立唯一的修訂名稱,其尾碼包含英數字元的半隨機字串。 例如,針對名為 album-api 的容器應用程式,將修訂尾碼名稱設定為 1st-revision 會建立名為 album-api--1st-revision 的修訂。 您可以在 ARM 範本中設定修訂尾碼、透過 Azure CLI az containerapp create
和 az 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
如需容器應用程式命令的詳細資訊,請造訪 az containerapp
參考。
管理 Azure 容器應用程式中的祕密
Azure 容器應用程式可讓您的應用程式安全地儲存敏感性組態值。 一旦祕密在應用程式層級定義,安全值即可供容器應用程式使用。 具體來說,您可以在級別規則內參考受保護的值。
- 秘密的適用範圍是應用程式,不包含應用程式的任何特定修訂版本。
- 新增、移除或變更秘密不會產生新的修訂。
- 每個應用程式修訂版本都可以參考一或多個秘密。
- 多個修訂可以參考相同的祕密。
更新或刪除的秘密不會自動影響您應用程式中現有的修訂。 當秘密更新或刪除時,您可以使用下列兩種方式之一回應變更:
- 新增修訂版本。
- 重新啟動現有的修訂版本。
在刪除秘密之前,請先部署不再參考舊密碼的新修訂版本。 然後停用參考秘密的所有修訂。
注意
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"