教學課程:在 Azure Container Apps 中 連線 Azure Cache for Redis 服務(預覽版)
Azure Container Apps 可讓您連線到支援在容器應用程式相同環境中執行之應用程式的服務。
開發時,您的應用程式可以快速建立並連線到 開發服務。 這些服務很容易建立,而且是專為非生產環境設計的開發等級服務。
當您移至生產環境時,您的應用程式可以連線生產等級的受控服務。
本教學課程說明如何將開發和生產等級的 Azure Cache for Redis 服務連線到您的容器應用程式。
在本教學課程中,您將了解:
- 建立新的 Redis 開發服務
- 將容器應用程式 連線 至 Redis 開發服務
- 中斷服務與應用程式的連線
- 檢查執行記憶體內部快取的服務
必要條件
資源 | 描述 |
---|---|
Azure 帳戶 | 需要作用中的訂用帳戶。 如果您沒有,可以免費建立一個。 |
Azure CLI | 如果您的機器上沒有 Azure CLI,請安裝它。 |
Azure 資源群組 | 在美國東部區域建立名為 my-services-resource-group 的資源群組。 |
Azure Cache for Redis | 在 my-services-resource-group 中建立 Azure Cache for Redis 的實例。 |
設定
登入 Azure CLI。
az login
升級 Container Apps CLI 擴充功能。
az extension add --name containerapp --upgrade
註冊
Microsoft.App
命名空間。az provider register --namespace Microsoft.App
註冊
Microsoft.ServiceLinker
命名空間。az provider register --namespace Microsoft.ServiceLinker
設定資源群組變數。
RESOURCE_GROUP="my-services-resource-group"
建立 Azure Cache for Redis DNS 名稱的變數。
若要顯示 Azure Cache for Redis 實例的清單,請執行下列命令。
az redis list --resource-group "$RESOURCE_GROUP" --query "[].name" -o table
建立變數來保存您的環境名稱。
將取代
<MY_ENVIRONMENT_NAME>
為容器應用程式環境的名稱。ENVIRONMENT=<MY_ENVIRONMENT_NAME>
設定位置變數。
LOCATION="eastus"
建立 [新增環境]。
az containerapp env create \ --location "$LOCATION" \ --resource-group "$RESOURCE_GROUP" \ --name "$ENVIRONMENT"
設定 CLI 並建立環境後,您現在可以建立應用程式和開發服務。
建立開發服務
範例應用程式會管理一組字串,無論是記憶體內部或 Redis 快取。
建立 Redis 開發服務,並將它命名為 myredis
。
az containerapp add-on redis create \
--name myredis \
--resource-group "$RESOURCE_GROUP" \
--environment "$ENVIRONMENT"
建立容器應用程式
接下來,建立可存取因特網的容器應用程式。
建立新的容器應用程式,並將它系結至 Redis 服務。
az containerapp create \ --name myapp \ --image mcr.microsoft.com/k8se/samples/sample-service-redis:latest \ --ingress external \ --target-port 8080 \ --bind myredis \ --environment "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --query properties.configuration.ingress.fqdn
此命令會傳回完整功能變數名稱 (FQDN)。 將此位置貼到網頁瀏覽器中,讓您可以在本教學課程中檢查應用程式的行為。
containerapp create
命令會使用--bind
選項來建立容器應用程式與 Redis 開發服務之間的連結。系結要求會收集連接資訊,包括認證和 連接字串,並將它插入應用程式作為環境變數。 這些值現在可供應用程式程式代碼使用,以便建立服務的連線。
在此情況下,應用程式可以使用下列環境變數:
REDIS_ENDPOINT=myredis:6379 REDIS_HOST=myredis REDIS_PASSWORD=... REDIS_PORT=6379
如果您透過瀏覽器存取應用程式,您可以從 Redis 資料庫新增和移除字串。 Redis 快取負責儲存應用程式數據,因此即使應用程式在調整為零之後重新啟動,數據仍可供使用。
您也可以從應用程式移除系結。
解除系結 Redis 開發服務。
若要從容器應用程式移除系結,請使用
--unbind
選項。az containerapp update \ --name myapp \ --unbind myredis \ --resource-group "$RESOURCE_GROUP"
應用程式會寫入,如此一來,如果未定義環境變數,則文字字串會儲存在記憶體中。
在此狀態下,如果應用程式調整為零,則會遺失數據。
您可以返回網頁瀏覽器並重新整理 Web 應用程式,以確認這項變更。 您現在可以看到顯示的組態資訊,指出數據儲存在記憶體中。
現在您可以將應用程式重新系結至 Redis 服務,以查看您先前儲存的數據。
重新系結 Redis 開發服務。
az containerapp update \ --name myapp \ --bind myredis \ --resource-group "$RESOURCE_GROUP"
重新連線服務後,您可以重新整理 Web 應用程式,以查看儲存在 Redis 中的數據。
連線 至受控服務
當您的應用程式準備好移至生產環境時,您可以將應用程式系結至受控服務,而不是開發服務。
下列步驟會將您的應用程式系結至 Azure Cache for Redis 的現有實例。
為您的 DNS 名稱建立變數。
請務必以 Azure Cache for Redis 實體的 DNS 名稱取代
<YOUR_DNS_NAME>
。AZURE_REDIS_DNS_NAME=<YOUR_DNS_NAME>
系結至 Azure Cache for Redis。
az containerapp update \ --name myapp \ --unbind myredis \ --bind "$AZURE_REDIS_DNS_NAME" \ --resource-group "$RESOURCE_GROUP"
此命令會同時移除開發系結,並建立與生產等級受控服務的系結。
回到您的瀏覽器並重新整理頁面。
主控台會列印類似下列範例的值。
AZURE_REDIS_DATABASE=0 AZURE_REDIS_HOST=azureRedis.redis.cache.windows.net AZURE_REDIS_PASSWORD=il6HI... AZURE_REDIS_PORT=6380 AZURE_REDIS_SSL=true
注意
用於 附加 元件和受控服務的環境變數名稱稍有不同。
如果您要檢視本教學課程所使用的範例程式代碼,請參閱 https://github.com/Azure-Samples/sample-service-redis。
現在當您新增字串時,這些值會儲存在 Azure Cache for Redis 實例中,而不是開發服務。
清除資源
如果您不打算繼續使用本教學課程中建立的資源,您可以刪除應用程式和 Redis 服務。
應用程式和服務是獨立的。 此獨立性表示服務可以連線到環境中任意數目的應用程式,並存在,直到明確刪除為止,即使所有應用程式都中斷連線。
執行下列命令來刪除容器應用程式和開發服務。
az containerapp delete --name myapp
az containerapp add-on redis delete --name myredis
或者,您可以刪除資源群組,以移除容器應用程式和所有服務。
az group delete \
--resource-group "$RESOURCE_GROUP"