本教學課程會引導您完成將受控服務管理員整合至 Azure 容器應用程式中的 Spring Eureka Server 的過程。
本文有某些內容與《連線至 Azure 容器應用程式中的適用於 Spring 的受控管理員》教學課程類似,但使用適用於 Spring 的 Eureka 伺服器時,您可以將適用於 Spring 的管理員繫結至適用於 Spring 的 Eureka 伺服器,讓其可以透過 Eureka 取得應用程式資訊,而不必將個別應用程式繫結至適用於 Spring 的管理員。
遵循本指南,您會設定 Eureka 伺服器進行服務探索,然後建立 Spring 管理員來管理及監視向 Eureka 伺服器註冊的 Spring 應用程式。 此設定可確保其他應用程式只需要繫結至 Eureka 伺服器,從而簡化微服務的管理。
在本教學課程中,您將了解:
- 建立適用於 Spring 的 Eureka 伺服器。
- 創建 Spring 管理員並將其連接到 Eureka 伺服器。
- 將其他應用程式繫結至 Eureka 伺服器,以簡化服務的探索和管理。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 如果您還沒有帳戶,您可以 免費建立一個。
- Azure CLI。
- 適用於 Spring Java 元件的現有 Eureka 伺服器。 如果您還沒有,請參閱 建立 Spring 的 Eureka 伺服器。
考量
在 Azure 容器應用程式中執行受控 Java 元件時,請注意下列詳細資料:
| 項目 | 說明 |
|---|---|
| Scope | 元件會在與連線的容器應用程式相同的環境中執行。 |
| 擴展 | 元件無法擴展。 縮放屬性 minReplicas 與 maxReplicas 都會設定為 1。 |
| 資源 | 元件的容器資源配置是固定的。 CPU 核心數為 0.5,記憶體容量為 1 GB。 |
| 定價 | 元件計費屬於使用量型定價。 受管理元件所消耗的資源會依據資源使用量,依據主動或閒置費率計費。 您可以刪除不再使用的元件來停止計費。 |
| 綁定 | 容器應用程式會透過繫結連線到元件。 繫結會將設定插入到容器應用程式的環境變數中。 建立系結之後,容器應用程式可以從環境變數中讀取配置值,並連接到元件。 |
設定
在開始之前,請先執行下列命令來建立必要資源。
建立變數以支援您的應用程式設定。 這些值是針對本課程的目的而向您提供的。
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export ADMIN_COMPONENT_NAME=admin export CLIENT_APP_NAME=sample-service-eureka-client export CLIENT_IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"變數 描述 LOCATION您在其中建立容器應用程式和 Java 元件的 Azure 區域位置。 RESOURCE_GROUP示範應用程式的 Azure 資源群組名稱。 ENVIRONMENT適用於您示範應用程式的 Azure 容器應用程式環境名稱。 EUREKA_COMPONENT_NAMEEureka 伺服器 Java 元件的名稱。 ADMIN_COMPONENT_NAMESpring Java 元件的管理員名稱。 CLIENT_APP_NAME系結至 Eureka 伺服器的容器應用程式名稱。 CLIENT_IMAGEEureka 伺服器容器應用程式中所使用的容器映像。 使用 Azure CLI 登入 Azure。
az login建立資源群組。
az group create --name $RESOURCE_GROUP --location $LOCATION建立您的容器應用程式環境。
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"使用
--query參數會將回應向下篩選為簡單的成功或失敗訊息。
選用:建立適用於 Spring 的 Eureka 伺服器
如果您沒有現有的適用於 Spring 的 Eureka 伺服器,請遵循下列命令來建立 Eureka 伺服器 Java 元件。 如需詳細資訊,請參閱 建立 Spring 的 Eureka 伺服器。
az containerapp env java-component eureka-server-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $EUREKA_COMPONENT_NAME
將元件繫結在一起
建立 Spring Java 元件的管理組件。
az containerapp env java-component admin-for-spring create \
--environment $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--name $ADMIN_COMPONENT_NAME \
--min-replicas 1 \
--max-replicas 1 \
--bind $EUREKA_COMPONENT_NAME
將其他應用程式繫結至 Eureka 伺服器
設定好 Eureka 伺服器之後,您現在可以將其他應用程式繫結至 Eureka 伺服器,以探索服務。 您也可以在適用於 Spring 的管理員儀表板中監視和管理這些應用程式。 使用下列步驟來建立容器應用程式,並將其系結至 Eureka 伺服器:
建立容器應用程式,並將其繫結至 Eureka 伺服器。
az containerapp create \
--name $CLIENT_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $CLIENT_IMAGE \
--min-replicas 1 \
--max-replicas 1 \
--ingress external \
--target-port 8080 \
--bind $EUREKA_COMPONENT_NAME
提示
由於先前的步驟已將適用於 Spring 的管理員元件繫結至適用於 Spring 的 Eureka 伺服器元件,所以管理員元件會啟用服務探索,並可讓您同時透過適用於 Spring 的管理員儀表板來進行管理。
檢視儀表板
重要
若要檢視儀表板,您的帳戶在受控環境資源上需要至少被指派Microsoft.App/managedEnvironments/write角色。 您可以在資源上明確指派 Owner 或 Contributor 角色,或遵循步驟來建立自訂角色定義,並將其指派給您的帳戶。
建立自訂角色定義。
az role definition create --role-definition '{ "Name": "Java Component Dashboard Access", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'請務必將
<SUBSCRIPTION_ID>值中的AssignableScopes佔位元取代為您的訂用帳戶標識碼。將自訂角色指派給您在管理環境資源上的帳戶。
取得受控環境的資源識別碼。
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)將角色指派給您的帳戶。
執行此命令之前,請將
<USER_OR_SERVICE_PRINCIPAL_ID>佔位元取代為您的使用者或服務主體標識碼。az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID取得 Spring 儀表板管理介面的 URL。
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $ADMIN_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv取得 Spring 控制面板的 Eureka 伺服器 URL。
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv此命令會傳回可用來存取適用於 Spring 的 Eureka 伺服器儀表板的 URL。 透過儀表板,您的容器應用程式會如以下螢幕擷取畫面所示地呈現給您。
清除資源
本教學課程中建立的資源會影響您的 Azure 帳單。 如果您不會長期使用這些服務,請執行下列命令來刪除本教學課程中建立的所有內容。
az group delete --resource-group $RESOURCE_GROUP