在 App Hub 應用程式中,將現有 Google Cloud 資源註冊為服務和工作負載,即可根據資源的業務用途整理資源,簡化管理作業。這種做法可提供統一的瀏覽權限、監控、控管和營運控制。
本指南說明如何將尚未正式定義為應用程式的現有 Google Cloud 資源分組。
事前準備
您必須先完成應用程式管理的初始設定,才能將資源整理到應用程式中。這項程序通常需要下列角色和步驟:
管理員:
- 選擇應用程式設定模式。 您必須設定管理專案,並定義包含要整理的 Google Cloud 資源的應用程式管理邊界。
- 為所有要使用的 Google Cloud 資源啟用必要的 API。
- 將存取權授予使用者。 根據使用者在應用程式生命週期中的職責,指派適當的 IAM 角色。
開發人員和作業人員:
- 請與管理員確認初始設定是否已完成。
- 確認您具備執行工作所需的 IAM 角色。
- 在 Google Cloud 控制台中開啟管理專案,或找出管理專案的專案 ID,以利 Terraform 或 Google Cloud CLI 互動。
建立應用程式
在 App Hub 中建立應用程式,做為現有 Google Cloud 資源的邏輯容器:
控制台
- 在 Google Cloud 控制台,使用專案選擇工具選取管理專案。
從 App Hub 前往「Applications」(應用程式) 頁面:
按一下「建立應用程式」。
在「選擇應用程式區域和名稱」窗格中,根據地理分布需求,為應用程式選取最佳位置:
- 選取「區域」,建立區域應用程式。然後根據應用程式中心支援的區域,為應用程式選取特定區域。
- 選取「全球」即可建立全球應用程式。
如要進一步瞭解應用程式的最佳位置,請參閱「全球和區域應用程式」。
輸入應用程式名稱,然後按一下「繼續」。這個名稱是專屬 ID,只能包含小寫字母、數字或連字號。應用程式建立完成後,就無法再變更這個名稱。
選用:定義應用程式的頂層屬性,以支援探索和管理:
- 在「新增屬性」部分,輸入「顯示名稱」。 顯示名稱並非專屬 ID,建立應用程式後仍可變更。
- 在「Criticality」(重要性) 清單中,選取值來指出應用程式的重要性。
- 在「環境」清單中選取值,指出軟體生命週期的階段。
- 新增擁有者的聯絡資訊詳細資料,包括顯示名稱和電子郵件地址。請注意,電子郵件地址的格式必須為
username@yourdomain,例如jane-doe@gmail.com。
點選「建立」。
gcloud
使用 Google Cloud CLI 從終端機或 Cloud Shell 建立應用程式:
gcloud apphub applications create APPLICATION_NAME \ --project=PROJECT_ID \ --scope-type=LOCATION \ --location=REGION \ --display-name=DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL將
APPLICATION_NAME換成應用程式名稱。這個名稱是專屬 ID,只能包含小寫英文字母、數字或連字號。使用
--criticality-type等選用標記定義應用程式的頂層屬性,並支援探索和管理。如要使用必要和選用旗標,請替換下列項目:
- 必要:
PROJECT_ID:管理專案的 ID。 必要:
LOCATION:根據地理分布需求,應用程式的適用地區。請使用下列其中一個值:REGIONAL,適用於區域應用程式。GLOBAL:適用於全球應用程式。
如要進一步瞭解應用程式的最佳位置,請參閱「全球和區域應用程式」。
必要:
REGION:應用程式的特定區域。請使用下列其中一個值:- 如果應用程式的
--scope-type位置設為REGIONAL,請指定 App Hub 支援的區域名稱。 - 如果應用程式的
--scope-type位置設為GLOBAL,請使用global。
- 如果應用程式的
選用:
DISPLAY_NAME:應用程式的顯示名稱。顯示名稱並非專屬 ID,建立應用程式後仍可變更。選用:
CRITICALITY:應用程式對營運的重要性程度。請使用下列其中一個值:MISSION_CRITICALHIGHMEDIUMLOW
選用:
ENVIRONMENT:軟體生命週期的階段。請使用下列其中一個值:PRODUCTIONSTAGINGDEVELOPMENTTEST
選用:
DEV_NAME和DEV_EMAIL分別是開發人員擁有者的顯示名稱和電子郵件地址。選用:
OPERATOR_NAME和OPERATOR_EMAIL分別是營運商擁有者的顯示名稱和電子郵件地址。選用:
BUSINESS_NAME和BUSINESS_EMAIL:分別是企業主的顯示名稱和電子郵件地址。
- 必要:
列出專案中的應用程式:
gcloud apphub applications list \ --project=PROJECT_ID \ --location=REGION您必須取得類似下列內容的輸出結果:
ID DISPLAY_NAME CREATE_TIME APPLICATION_NAME DISPLAY_NAME 2023-10-31T18:33:48
Terraform
如要使用 Terraform 建立應用程式,請使用google_apphub_application 資源。這個資源可讓您定義應用程式的屬性,包括名稱、位置和屬性。
以下範例會在 us-central1 中建立區域應用程式,並定義重要性、環境和擁有者屬性:
resource "google_apphub_application" "example" {
project = "my-project-id"
location = "us-central1"
application_id = "my-application"
display_name = "My Application"
description = "This application represents our platform."
scope {
type = "REGIONAL"
}
attributes {
criticality {
type = "MISSION_CRITICAL"
}
environment {
type = "PRODUCTION"
}
business_owners {
display_name = "Alice"
email = "alice@example.com"
}
developer_owners {
display_name = "Bob"
email = "bob@example.com"
}
operator_owners {
display_name = "Charlie"
email = "charlie@example.com"
}
}
}
註冊服務和工作負載
您可以在 App Hub 中選取應用程式管理邊界內的支援資源,並註冊為服務和工作負載。建立應用程式後,請將現有Google Cloud 資源註冊為其中的服務和工作負載。
您只能將專屬服務註冊至一個應用程式。不過,共用服務可以註冊至多個應用程式。即使共用服務已註冊至其他應用程式,當您將這些服務註冊至應用程式時,App Hub 仍會探索到這些服務,但您可能無法修改其屬性。
控制台
- 在 Google Cloud 控制台,使用專案選擇工具選取管理專案。
從 App Hub 前往「Applications」(應用程式) 頁面:
按一下要將現有 Google Cloud 資源註冊為服務和工作負載的應用程式名稱。
在應用程式的詳細資料頁面中,選取「服務和工作負載」分頁標籤。這個分頁會顯示現有資源清單,您可以向應用程式註冊這些資源。您可以在 App Hub 中,選取應用程式管理邊界內的支援資源做為服務或工作負載。
針對要註冊的每個服務或工作負載,請執行下列操作:
- 在「服務和工作負載」分頁中,按一下「註冊服務/工作負載」。
- 前往「選取資源」窗格,然後按一下「瀏覽」,找出要註冊的服務或工作負載。
- 選擇服務或工作負載,然後按一下「選取」。
- 在「選取資源」窗格中,輸入服務或工作負載的名稱,然後按一下「繼續」。
選用:在「新增屬性」窗格中,定義資源的頂層屬性,以利探索及管理。
按一下「繼續」。
選用:在「新增擁有者」部分,新增服務或工作負載擁有者的詳細資料。
按一下「註冊」。
「服務和工作負載」分頁會顯示已註冊的服務或工作負載。
gcloud
App Hub 可讓您選取應用程式管理邊界內的支援資源做為服務或工作負載。使用 Google Cloud CLI 列出可從終端機或 Cloud Shell 註冊至應用程式的服務或工作負載。服務和工作負載的指令略有不同:
註冊服務
列出可向應用程式註冊的可用服務:
gcloud apphub discovered-services list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION如要使用必要和選用旗標,請替換下列項目:
- 必要:
PROJECT_ID:管理專案的 ID。 必要條件:
REGION:服務的特定區域,取決於您的地理位置分布。請使用下列其中一個值:- 如果服務屬於區域性服務,請指定App Hub 支援的區域名稱。
- 如果服務是全球性的,請使用
global。
選用:
FILTER_EXPRESSION:--filter旗標的篩選運算式,只顯示應用程式管理邊界內特定專案的服務,或具有特定屬性的服務,例如:service_properties.gcp_project=projects/PROJECT_IDservice_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules"
輸出結果會與下列範例相似:
ID SERVICE_REFERENCE SERVICE_PROPERTIES SERVICE_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}- 必要:
從輸出內容中複製服務 ID
SERVICE_ID。將服務註冊到應用程式:
gcloud apphub applications services create SERVICE_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-service=projects/PROJECT_ID/locations/REGION/discoveredServices/SERVICE_ID \ --display-name=SERVICE_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL將
SERVICE_NAME替換為您要用於向應用程式註冊服務的名稱。使用
--criticality-type等選用標記定義服務的頂層屬性,並支援探索和管理功能。如要使用必要和選用旗標,請替換下列項目:
- 必要:
PROJECT_ID:管理專案的 ID。 必要:
REGION:根據地理分布情況,服務的特定區域。請使用下列其中一個值:- 如果服務屬於區域性服務,請指定App Hub 支援的區域名稱。
- 如果服務是全球性的,請使用
global。
必要:
APPLICATION_NAME:要註冊服務的應用程式名稱。必要:
SERVICE_ID:您從上一個輸出內容複製的服務 ID。選用:
SERVICE_DISPLAY_NAME:服務的顯示名稱。選用:
CRITICALITY:服務對您營運的重要性程度。請使用下列其中一個值:MISSION_CRITICALHIGHMEDIUMLOW
選用:
ENVIRONMENT:軟體生命週期的階段。請使用下列其中一個值:PRODUCTIONSTAGINGDEVELOPMENTTEST
選用:
DEV_NAME和DEV_EMAIL:分別是開發人員擁有者的顯示名稱和電子郵件地址。選用:
OPERATOR_NAME和OPERATOR_EMAIL:分別是營運商擁有者的顯示名稱和電子郵件地址。選用:
BUSINESS_NAME和BUSINESS_EMAIL分別為商家業主的顯示名稱和電子郵件地址。
- 必要:
列出應用程式中已註冊的服務:
gcloud apphub applications services list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION您必須為每個已註冊的服務取得類似下列內容的輸出:
ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME SERVICE_NAME SERVICE_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} 2023-11-01T21:38:08
註冊工作負載
列出可註冊至應用程式的可用工作負載:
gcloud apphub discovered-workloads list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION如要使用必要和選用旗標,請替換下列項目:
- 必要:
PROJECT_ID:管理專案的 ID。 必要條件:
REGION:根據地理分布情況,工作負載的特定區域。請使用下列其中一個值:- 如果工作負載屬於區域型,請指定App Hub 支援的區域名稱。
- 如果工作負載是全域,請使用
global。
選用:
FILTER_EXPRESSION:--filter旗標的篩選運算式,只顯示應用程式管理邊界內特定專案的工作負載,或具有特定屬性 (例如workload_properties.gcp_project=projects/PROJECT_ID) 的工作負載。
輸出結果會與下列範例相似:
ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES WORKLOAD_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}- 必要:
從輸出內容中複製工作負載 ID
WORKLOAD_ID。將工作負載註冊至應用程式:
gcloud apphub applications workloads create WORKLOAD_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-workload=projects/PROJECT_ID/locations/REGION/discoveredWorkloads/WORKLOAD_ID \ --display-name=WORKLOAD_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL將
WORKLOAD_NAME替換為要用於向應用程式註冊工作負載的名稱。使用
--criticality-type等選用標記定義工作負載的頂層屬性,並支援探索和管理。如要使用必要和選用旗標,請替換下列項目:
- 必要:
PROJECT_ID:管理專案的 ID。 必要條件:
REGION:根據地理分布情況,工作負載的特定區域。請使用下列其中一個值:- 如果工作負載屬於區域型,請指定App Hub 支援的區域名稱。
- 如果工作負載是全域,請使用
global。
必要:
APPLICATION_NAME:要註冊工作負載的應用程式名稱。必要:
WORKLOAD_ID:您從上一個輸出內容複製的工作負載 ID。選用:
WORKLOAD_DISPLAY_NAME:工作負載的顯示名稱。選用:
CRITICALITY:工作負載對您作業的重要性等級。請使用下列其中一個值:MISSION_CRITICALHIGHMEDIUMLOW
選用:
ENVIRONMENT:軟體生命週期的階段。請使用下列其中一個值:PRODUCTIONSTAGINGDEVELOPMENTTEST
選用:
DEV_NAME和DEV_EMAIL:分別是開發人員擁有者的顯示名稱和電子郵件地址。選用:
OPERATOR_NAME和OPERATOR_EMAIL:分別是營運商擁有者的顯示名稱和電子郵件地址。選用:
BUSINESS_NAME和BUSINESS_EMAIL分別為商家業主的顯示名稱和電子郵件地址。
- 必要:
列出應用程式中已註冊的工作負載:
gcloud apphub applications workloads list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION您必須為每個已註冊的工作負載取得類似下列的輸出內容:
ID DISPLAY_NAME WORKLOAD_REFERENCE CREATE_TIME WORKLOAD_NAME WORKLOAD_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} 2023-11-01T21:38:08
Terraform
如要使用 Terraform 在應用程式管理邊界內註冊資源,做為應用程式中的服務或工作負載,請使用 google_apphub_discovered_service 和 google_apphub_discovered_workload 資料來源,動態擷取要註冊的資源相關資訊。 Google Cloud
接著,請使用 google_apphub_service 或 google_apphub_workload 資源,分別註冊服務或工作負載。
註冊服務
使用服務的 URI 取得相關資訊:
data "google_apphub_discovered_service" "my-service" { location = "REGION" service_uri = "SERVICE_URI" }將探索到的服務註冊到應用程式,例如:
resource "google_apphub_service" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id service_id = "frontend-load-balancer" discovered_service = data.google_apphub_discovered_service.my-forwarding-rule.name display_name = "Frontend Load Balancer" description = "The primary load balancer for the frontend." }
註冊工作負載
使用 URI 取得工作負載的相關資訊:
data "google_apphub_discovered_workload" "my-workload" { location = "REGION" workload_uri = "WORKLOAD_URI" }將找到的工作負載註冊到應用程式,例如:
resource "google_apphub_workload" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id workload_id = "frontend-instance-group" discovered_workload = data.google_apphub_discovered_workload.my-mig.name display_name = "Frontend Instance Group" description = "The managed instance group for the frontend." }
如果將專案或資料夾移出應用程式管理邊界,或刪除基礎資源,註冊至應用程式的服務和工作負載註冊狀態可能會變更為「已分離」。服務和工作負載取消連結後,仍會保留在應用程式中,直到您取消註冊為止,但 App Hub 無法再管理或監控這些項目。詳情請參閱「服務和工作負載的註冊狀態」。
如要將服務或工作負載重新附加至應用程式,必須再次註冊。
授予權限並開始作業
在 App Hub 中建立應用程式並註冊服務和工作負載後,您必須根據生命週期責任授予使用者存取權,才能以單一單元管理這個邏輯群組:
- 您可以視存取需求,授予個別應用程式或所有應用程式權限。如需建議角色清單,請參閱授予使用者以應用程式為中心的角色。
- 您也可以前往 Cloud Hub,查看所定義應用程式的統一營運資訊主頁,包括健康狀態、效能和費用資料。