本教學課程說明如何為多個專案設定全域 App Hub 應用程式,然後查看應用程式的資源。您可以使用多個服務專案,在共用虛擬私有雲環境中設定內部應用程式負載平衡器。接著,在 App Hub 主專案的全球應用程式中,將服務專案的所有基礎架構資源註冊為 App Hub 服務和工作負載,並加以監控。
本教學課程的適用對象為設定及管理 App Hub 的人員。您應具備 Cloud Load Balancing 相關經驗。
目標
- 設定包含多個專案資源的全域 App Hub 應用程式。
- 透過應用程式的系統指標監控資源。
費用
如要估算負載平衡代管 VM 解決方案使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中的預先計算估價。
您可以根據估算結果,計算部署作業的費用。您可以修改預估值,反映您打算對解決方案中使用的資源進行的任何設定變更。
預先計算的預估值是根據特定因素的假設而得,包括:
- 資源的部署位置。 Google Cloud
- 資源的使用時間長度。
如要進一步瞭解 App Hub 費用,請參閱定價頁面。
事前準備
設定本教學課程前,請先決定專案的角色和權限,然後建立四個 Google Cloud 專案。其中一個專案是 App Hub 主專案,另外三個則是 App Hub 服務專案。必要角色和權限
如果您是專案建立者,系統會授予基本擁有者角色 (roles/owner
)。根據預設,這個身分與存取權管理 (IAM) 角色包含的權限,可讓您完整存取大部分的 Google Cloud資源。
如果您不是專案建立者,必須在專案中將必要權限授予適當的主體。舉例來說,主體可以是 Google 帳戶 (用於使用者) 或服務帳戶 (用於應用程式和工作負載)。
如要取得管理專案、資料夾或機構存取權所需的權限,請要求管理員在您要管理存取權的資源 (專案、資料夾或機構) 上,授予下列 IAM 角色:
-
如要管理專案存取權,請按照下列步驟操作:
-
應用程式中心管理員 (
roles/apphub.admin
) -
Cloud Infrastructure Manager (
roles/config.admin
) -
Compute 共用虛擬私有雲管理員角色 (
roles/compute.xpnAdmin
) -
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
) -
服務使用情形管理員 (
roles/serviceusage.services.enable
) -
服務帳戶管理員 (
roles/iam.serviceAccounts.create
)
-
應用程式中心管理員 (
-
如要管理資料夾的存取權:
Compute 共用虛擬私有雲管理員角色 (
roles/compute.xpnAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立 App Hub 主專案和服務專案
控制台
前往 Google Cloud 控制台的專案選取器頁面。
選取或建立 Google Cloud 專案,做為 App Hub 主專案。
-
Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.
在 App Hub 主專案所在的資料夾中,建立三個新的 Google Cloud 專案。這些是 App Hub 主專案的 App Hub 服務專案。
請確認所有 Google Cloud 專案都已啟用計費功能。
-
Enable the App Hub, Compute Engine, Service Management, and Service Usage APIs.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
確認已安裝最新版的 Google Cloud CLI。在 Cloud Shell 中執行下列指令:
gcloud components update
建立或選取新專案 (
HOST_PROJECT_ID
),做為 App Hub 的主機專案。建立 Google Cloud 專案:
gcloud projects create HOST_PROJECT_ID
選取您建立的 Google Cloud 專案:
gcloud config set project HOST_PROJECT_ID
確認所有 Google Cloud 專案都已啟用計費功能。
啟用 App Hub、Compute Engine、Service Management 和 Service Usage API:
gcloud services enable apphub.googleapis.com \ compute.googleapis.com \ servicemanagement.googleapis.com \ serviceusage.googleapis.com
建立三個新專案 Google Cloud ,做為 App Hub 主專案的 App Hub 服務專案。
建立服務專案:
gcloud projects create SERVICE_PROJECT_1_ID
將
SERVICE_PROJECT_1_ID
替換為服務專案 1 的 ID。選取您建立的服務專案:
gcloud config set project SERVICE_PROJECT_1_ID
啟用 Compute Engine、Service Management 和 Service Usage API:
gcloud services enable compute.googleapis.com \ servicemanagement.googleapis.com \ serviceusage.googleapis.com
設定本教學課程中使用的設定變數:
export SERVICE_PROJECT_1_NUMBER= $(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')
重複上述步驟,建立 SERVICE_PROJECT_2_ID 和 SERVICE_PROJECT_3_ID、啟用 API,並設定設定變數。
準備環境
如果您已在多個專案中設定共用虛擬私有雲環境的內部應用程式負載平衡器,請繼續參閱本文的「授予 IAM 權限」一節。
如果沒有,請按照下列步驟,在共用虛擬私有雲環境中設定內部應用程式負載平衡器:
- 在服務專案 1 中,設定共用虛擬私有雲網路和兩個子網路。
- 在服務專案 2 中,建立負載平衡器的後端服務,並以兩個受管理執行個體群組做為後端。
- 在服務專案 3 中,建立另一個負載平衡器的後端服務,並以兩個受管理執行個體群組做為後端。
- 在服務專案 1 中,建立負載平衡器的前端元件和網址對應。
以下是負載平衡代管 VM 解決方案部署的拓撲要求處理流程。
用戶端 VM 會透過共用虛擬私有雲網路,向服務專案 1 中的內部應用程式負載平衡器發出 HTTP 要求。
負載平衡器會使用網址對應和後端服務中的資訊,將要求轉送至代管執行個體群組後端。
在共用 VPC 託管專案中設定網路和子網路
您需要具有兩個子網路的共用虛擬私有雲網路:一個用於負載平衡器的前端和後端,另一個用於負載平衡器的 Proxy。
這個範例會使用以下網路、地區和子網路:
電視網:網路名稱為「
lb-network
」。負載平衡器前端和後端的子網路。
us-west1
地區中名為lb-frontend-and-backend-subnet
的子網路使用10.1.2.0/24
做為其主要 IP 範圍。Proxy 的子網路。
us-west1
地區中名為proxy-only-subnet
的子網路使用10.129.0.0/23
做為其主要 IP 範圍。
在本教學課程中,請將服務專案 1 指派為共用虛擬私有雲主專案。本節中的所有步驟都必須在服務專案 1 中執行。
設定負載平衡器前端和後端的子網路
您不必每次建立新的負載平衡器時都執行這個步驟。您只需要確保服務專案有權存取共用虛擬私有雲網路中的子網路 (除了僅限 Proxy 的子網路之外)。
主控台
- 在 Google Cloud 控制台中,前往「VPC networks」(VPC 網路) 頁面。
- 按一下「建立虛擬私有雲網路」。
- 在「Name」(名稱) 欄位中輸入
lb-network
。 - 將「Subnet creation mode」(子網路建立模式) 設為 [Custom] (自訂)。
在「New subnet」(新的子網路) 區段中,輸入以下資訊:
Name (名稱):
lb-frontend-and-backend-subnet
Region (區域):
us-west1
IP address range (IP 位址範圍):
10.1.2.0/24
按一下 [完成]。
點選「建立」。
gcloud
將專案設為服務專案 1:
gcloud config set project SERVICE_PROJECT_1_ID
使用
gcloud compute networks create
指令建立虛擬私有雲網路:gcloud compute networks create lb-network --subnet-mode=custom
在
us-west1
地區的lb-network
網路中建立子網路:gcloud compute networks subnets create lb-frontend-and-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
設定僅限 Proxy 的子網路
lb-network
虛擬私有雲網路中,us-west1
區域的所有區域 Envoy 型負載平衡器都會使用僅限 Proxy 的子網路。每個地區和每個網路只能有一個活動的僅限 Proxy 子網路。
如果這個網路的「us-west1
」區域中已保留僅限 Proxy 的子網路,請勿執行這個步驟。
主控台
- 在 Google Cloud 控制台中,前往「VPC networks」(VPC 網路) 頁面。
- 按一下共用虛擬私有雲網路的名稱:
lb-network
。 - 按一下「子網路」分頁標籤,然後按一下「新增子網路」。
- 在「Add a subnet」(新增子網路) 窗格的「Name」(名稱) 欄位中輸入
proxy-only-subnet
。 - 在「Region」(區域) 清單中選取「
us-west1
」。 - 將「用途」設為「區域受管理 Proxy」。
- 在「IP address range」(IP 位址範圍) 欄位中,輸入
10.129.0.0/23
。 - 按一下「新增」。
gcloud
使用 gcloud compute networks subnets
create
指令建立僅限 Proxy 的子網路:
gcloud compute networks subnets create proxy-only-subnet \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-west1 \ --network=lb-network \ --range=10.129.0.0/23
授予服務專案管理員後端子網路的存取權
服務專案管理員必須有權存取 lb-frontend-and-backend-subnet
子網路,才能佈建負載平衡器的後端。
共用虛擬私有雲管理員必須授予服務專案管理員 (或部署使用子網路的資源和後端的開發人員) 後端子網路的存取權。如需操作說明,請參閱「部分子網路的服務專案管理員」。
在服務專案 1 中設定防火牆規則
這個範例使用以下防火牆規則:
fw-allow-health-check
. 輸入規則,適用於要進行負載平衡的執行個體,可允許來自 Google Cloud健康狀態檢查系統 (位於130.211.0.0/22
和35.191.0.0/16
) 的所有 TCP 流量。這個範例會使用目標標記load-balanced-backend
來辨識應套用這項規則的執行個體。fw-allow-proxies
. 輸入規則,適用於要進行負載平衡的執行個體,可在80
、443
和8080
通訊埠上允許來自負載平衡器代管 Proxy 的 TCP 流量。這個範例會使用目標標記load-balanced-backend
來辨識應套用此規則的執行個體。fw-allow-ssh
. 輸入規則,適用於要進行負載平衡的執行個體,可在 TCP 通訊埠22
上允許來自任何位址的連入 SSH 連線。您可以為這項規則選擇較嚴格的來源 IP 範圍。舉例來說,您可以僅指定要從其中啟動 SSH 工作階段之系統的 IP 範圍。這個範例會使用目標標記allow-ssh
來識別套用防火牆規則的虛擬機器 (VM)。
如果沒有這些防火牆規則,預設拒絕輸入規則將會封鎖傳入至後端執行個體的流量。
主控台
在 Google Cloud 控制台中,前往「Firewall policies」(防火牆政策) 頁面。
- 按一下「Create firewall rule」(建立防火牆規則),以建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-health-check
- Network (網路):
lb-network
- 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
load-balanced-backend
- Source filter (來源篩選器):IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
130.211.0.0/22
和35.191.0.0/16
- 通訊協定和通訊埠:
- 選擇「指定的通訊協定與通訊埠」。
- 勾選「TCP」TCP核取方塊,然後輸入
80
做為通訊埠編號。
最佳做法是將這項規則限制為僅適用於與健康狀態檢查所用通訊協定和通訊埠相符的項目。如果您將通訊協定和通訊埠指定為
tcp:80
, Google Cloud可以使用通訊埠80
上的 HTTP 與 VM 聯絡,但無法使用通訊埠443
上的 HTTPS 與 VM 聯絡。 - 點選「建立」。
- 按一下「Create firewall rule」(建立防火牆規則),以建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-proxies
- Network (網路):
lb-network
- 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
load-balanced-backend
- Source filter (來源篩選器):IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
10.129.0.0/23
- 通訊協定和通訊埠:
- 選擇「指定的通訊協定與通訊埠」。
- 勾選「TCP」TCP核取方塊,然後輸入
80, 443, 8080
做為通訊埠編號。
- 點選「建立」。
- 按一下「Create firewall rule」(建立防火牆規則),以建立允許 Google Cloud 健康狀態檢查的規則:
- Name (名稱):
fw-allow-ssh
- Network (網路):
lb-network
- 「Direction of traffic」(流量方向):ingress
- 「Action on match」(相符時執行的動作):允許
- 「Target」(目標):指定的目標標記
- 「Target tags」(目標標記):
allow-ssh
- Source filter (來源篩選器):IPv4 範圍
- Source IPv4 ranges (來源 IPv4 範圍):
0.0.0.0/0
- 通訊協定和通訊埠:
- 選擇「指定的通訊協定與通訊埠」。
- 勾選「TCP」TCP核取方塊,然後輸入
22
做為通訊埠編號。
- 點選「建立」。
gcloud
建立
fw-allow-health-check
防火牆規則,允許Google Cloud 健康狀態檢查。這個範例允許來自健康狀態檢查探測器的所有 TCP 流量。不過,您可以設定較窄的連接埠組合,以符合需求。gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
建立
fw-allow-proxies
防火牆規則,允許流量從僅限 Envoy Proxy 的子網路傳送至後端:gcloud compute firewall-rules create fw-allow-proxies \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.129.0.0/23 \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
建立
fw-allow-ssh
防火牆規則,允許與具有allow-ssh
網路標記的 VM 建立 SSH 連線:gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
保留靜態內部 IPv4 位址
服務專案管理員可以在共用虛擬私有雲網路的子網路中,保留內部 IPv4 或 IPv6 位址。IP 位址設定物件是在服務專案中建立,而其值來自所選共用子網路中可用的 IPv4 位址範圍。
如要在服務專案中保留獨立的內部 IP 位址,請完成下列步驟。
主控台
- 設定共用虛擬私有雲。
前往 Google Cloud 控制台的「Shared VPC」(共用 VPC) 頁面。
以共用虛擬私有雲管理員身分登入。
從專案選擇工具中選取服務專案。
前往「VPC network」(虛擬私有雲網路) >「IP addresses」(IP 位址)。
在「IP addresses」(IP 位址) 頁面中,按一下「Reserve internal static IP address」(保留內部靜態 IP 位址)。
在「Name」(名稱) 欄位中,輸入
l7-ilb-ip-address
做為 IP 位址名稱。在「IP 版本」清單中,選取「IPv4」。
在「Network」(網路) 中選取
lb-network
。在「Subnetwork」(子網路) 清單中選取「
lb-frontend-and-backend-subnet
」。按一下「保留」。
gcloud
如果您尚未以共用虛擬私有雲端服務專案管理員身分驗證 Google Cloud CLI,請立即執行。
gcloud auth login SERVICE_PROJECT_ADMIN
將
SERVICE_PROJECT_ADMIN
替換為共用 VPC 服務專案管理員的名稱。這些值必須採用 username@yourdomain 格式,例如 222larabrown@gmail.com。使用
compute addresses create
指令保留 IP 位址:gcloud compute addresses create l7-ilb-ip-address \ --project SERVICE_PROJECT_1_ID \ --subnet=lb-frontend-and-backend-subnet \ --region=us-west1 \ --ip-version=IPV4
如要進一步瞭解如何建立 IP 位址,請參閱 SDK 說明文件。
在服務專案 1 中設定共用虛擬私有雲
如要在服務專案 1 中設定共用虛擬私有雲,請將服務專案 1 指定為共用虛擬私有雲主專案,並將服務專案 2 和 3 指定為共用虛擬私有雲服務專案。在本教學課程稍後,您在服務專案 2 和 3 中建立 MIG 後端時,可以使用先前在服務專案 1 中建立的相同 VPC 網路和子網路。
- 啟用主專案。
- 附加服務專案。
將Compute 網路使用者角色 (
roles/compute.networkUser
) 授予服務專案 2 和 3:控制台
前往 Google Cloud 控制台的「IAM」頁面。
按一下「授予存取權」
。 「授予存取權」窗格隨即開啟。在「New principals」(新增主體) 欄位中輸入
SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com
。請注意,您可以從專案的資訊主頁取得服務專案編號:
按一下「選取角色」,然後在「篩選器」欄位中輸入
Compute Network User
。選取「Compute Network User」(Compute 網路使用者) 角色,然後按一下「Save」(儲存)。
重複上述步驟,將
Compute Network User
角色授予服務專案 3 (SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com
)。
gcloud
在服務專案 1 中,將 Compute 網路使用者角色授予服務專案 2。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \ --member='serviceAccount:SERVICE_PROJECT_2_NUMBER@cloudservices.gserviceaccount.com' \ --role='roles/compute.networkUser'
將
SERVICE_PROJECT_2_NUMBER
替換為服務專案 2 的專案編號。在服務專案 1 中,將 Compute 網路使用者角色授予服務專案 3。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_1_ID \ --member='serviceAccount::SERVICE_PROJECT_3_NUMBER@cloudservices.gserviceaccount.com' \ --role='roles/compute.networkUser'
將
SERVICE_PROJECT_3_NUMBER
替換為服務專案 3 的專案編號。
在服務專案 2 中建立後端服務和 MIG
本節中的所有步驟都必須在服務專案 2 中執行。
主控台
建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。
前往「Instance templates」(執行個體範本) 頁面
- 點選「建立執行個體範本」。
- 輸入執行個體範本的「Name」(名稱):
tutorial-ig-template-sp2
。 - 在「Location」(位置) 區段中,選取「Regional (recommended)」(區域 (建議)) 和「us-west1(Oregon)」(us-west1 (奧勒岡州)) 做為「Region」(區域)。
- 在「機器設定」部分,選取「N2」做為系列。
- 確認「開機磁碟」已設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明使用僅在 Debian 上可用的指令,例如
apt-get
。如要變更「開機磁碟」,請按一下「變更」。- 在「Operating System」(作業系統) 部分,選取「Debian」。
- 在「版本」中,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。
- 按一下 [選取]。
- 依序點選「進階選項」和「網路」。
- 輸入下列「Network tags」(網路標記):
allow-ssh
、load-balanced-backend
。 - 在「網路介面」部分,選取「與我共用的網路 (來源主專案:SERVICE_PROJECT_1_ID)」。
- 從
lb-network
網路選取lb-frontend-and-backend-subnet
子網路。 - 按一下 [Management] (管理)。在「管理」下,將下列指令碼插入「開機指令碼」欄位。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | tee /var/www/html/index.html systemctl restart apache2
- 點選「建立」。
建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
前往「Instance groups」(執行個體群組) 頁面
- 點選「建立執行個體群組」。
- 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
- 輸入執行個體群組的名稱:
tutorial-sp2-mig-a
。 - 在「Instance template」(執行個體範本) 中選取 tutorial-ig-template-sp2。
- 在「Location」(位置) 中選取「Single zone」(單一可用區)。
- 在「Region」(區域) 中選取
us-west1
。 指定要在群組中建立的執行個體數量。
在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:
- 針對「Autoscaling mode」(自動調度資源模式),選取
Off:do not autoscale
。 - 在「Maximum number of instances」(執行個體數量上限) 中輸入
2
。
- 針對「Autoscaling mode」(自動調度資源模式),選取
點選「建立」。
建立區域後端服務。在此步驟中,我們也會建立健康狀態檢查,並將後端新增至後端服務。前往 Google Cloud 控制台的「後端」頁面。
- 按一下「建立後端服務」。
- 在「建立後端服務」對話方塊中,按一下「區域後端服務」旁的「建立」。
- 輸入後端服務的「Name」(名稱):
tutorial-backend-service-sp2
。 - 在「Region」(地區) 中選取「us-west1」。
- 在「Load balancer type」(負載平衡器類型) 中,選取「Regional internal Application Load Balancer (INTERNAL_MANAGED)」(區域內部應用程式負載平衡器 (INTERNAL_MANAGED))。
- 將「後端類型」設為「執行個體群組」。
- 在「Backends」(後端) 區段中,設定下列欄位:
- 將「Instance group」(執行個體群組) 設為 tutorial-sp2-mig-a。
- 輸入「Port numbers」(通訊埠編號):
80
。 - 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)。
- 按一下 [完成]。
- 在「健康狀態檢查」部分中,按一下「建立健康狀態檢查」,然後設定下列欄位:
- Name (名稱):
tutorial-regional-health-check
- Protocol (通訊協定):
HTTP
- Port (通訊埠):
80
- 按一下 [儲存]。
- Name (名稱):
- 按一下「繼續」。
- 點選「建立」。
重複先前的步驟,建立代管執行個體群組
tutorial-sp2-mig-b
,並新增至後端服務tutorial-backend-service-sp2
。
gcloud
- 選取您建立的服務專案:
gcloud config set project SERVICE_PROJECT_2_ID
建立含有 HTTP 伺服器的 VM 執行個體範本:
tutorial-ig-template-sp2
gcloud compute instance-templates create tutorial-ig-template-sp2 \ --region=us-west1 \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_2_ID
更改下列內容:
SERVICE_PROJECT_1_ID
:共用虛擬私有雲主專案的專案 ID。SERVICE_PROJECT_2_ID
: 服務專案的專案 ID,負載平衡器的後端和後端服務將在此建立。
在以下區域建立代管執行個體群組:
tutorial-sp2-mig-a
gcloud compute instance-groups managed create tutorial-sp2-mig-a \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp2 \ --project=SERVICE_PROJECT_2_ID
定義 HTTP 健康狀態檢查,
tutorial-regional-health-check
:gcloud compute health-checks create http tutorial-regional-health-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_2_ID
定義後端服務
tutorial-backend-service-sp2
:gcloud compute backend-services create tutorial-backend-service-sp2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=tutorial-regional-health-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
使用
gcloud compute backend-services add-backend
指令,將後端新增到後端服務:gcloud compute backend-services add-backend tutorial-backend-service-sp2 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp2-mig-a \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
在
tutorial-sp2-mig-b
區域中建立另一個代管執行個體群組:gcloud compute instance-groups managed create tutorial-sp2-mig-b \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp2 \ --project=SERVICE_PROJECT_2_ID
將後端新增至後端服務:
gcloud compute backend-services add-backend tutorial-backend-service-sp2 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp2-mig-b \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_2_ID
在服務專案 3 中建立後端服務和 MIG
本節中的所有步驟都必須在服務專案 3 中執行。
主控台
建立執行個體範本。前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。
前往「Instance templates」(執行個體範本) 頁面
- 點選「建立執行個體範本」。
- 輸入執行個體範本的「Name」(名稱):
tutorial-ig-template-sp3
。 - 在「Location」(位置) 區段中,選取「Regional (recommended)」(區域 (建議)) 和「us-west1(Oregon)」(us-west1 (奧勒岡州)) 做為「Region」(區域)。
- 在「機器設定」部分,選取「N2」做為系列。
- 確認「開機磁碟」已設為 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。這些操作說明使用僅在 Debian 上可用的指令,例如
apt-get
。如要變更「開機磁碟」,請按一下「變更」。- 在「Operating System」(作業系統) 部分,選取「Debian」。
- 在「版本」中,選取可用的 Debian 映像檔,例如「Debian GNU/Linux 12 (bookworm)」。
- 按一下 [選取]。
- 依序點選「進階選項」和「網路」。
- 輸入下列「Network tags」(網路標記):
allow-ssh
、load-balanced-backend
。 - 在「網路介面」部分,選取「與我共用的網路 (來源主專案:SERVICE_PROJECT_1_ID)」。
- 從
lb-network
網路選取lb-frontend-and-backend-subnet
子網路。 - 按一下 [Management] (管理)。在「管理」下,將下列指令碼插入「開機指令碼」欄位。
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | tee /var/www/html/index.html systemctl restart apache2
- 點選「建立」。
建立代管執行個體群組。前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
前往「Instance groups」(執行個體群組) 頁面
- 點選「建立執行個體群組」。
- 選擇「New managed instance group (stateless)」(新增代管執行個體群組 (無狀態))。詳情請參閱「無狀態或有狀態的 MIG」。
- 輸入執行個體群組的名稱:
tutorial-sp3-mig-a
。 - 在「Instance template」(執行個體範本) 中選取 tutorial-ig-template-sp3。
- 在「Location」(位置) 中選取「Single zone」(單一可用區)。
- 在「Region」(區域) 中選取
us-west1
。 指定要在群組中建立的執行個體數量。
在本範例中,請為「Autoscaling」(自動調度資源) 指定下列選項:
- 針對「Autoscaling mode」(自動調度資源模式),選取
Off:do not autoscale
。 - 在「Maximum number of instances」(執行個體數量上限) 中輸入
2
。
- 針對「Autoscaling mode」(自動調度資源模式),選取
點選「建立」。
建立區域後端服務。在此步驟中,我們也會建立健康狀態檢查,並將後端新增至後端服務。前往 Google Cloud 控制台的「後端」頁面。
- 按一下「建立後端服務」。
- 在「建立後端服務」對話方塊中,按一下「區域後端服務」旁的「建立」。
- 輸入後端服務的「Name」(名稱):
tutorial-backend-service-sp3
。 - 在「Region」(區域) 中選取「us-west1」。
- 在「Load balancer type」(負載平衡器類型) 中,選取「Regional internal Application Load Balancer (INTERNAL_MANAGED)」(區域內部應用程式負載平衡器 (INTERNAL_MANAGED))。
- 將「後端類型」設為「執行個體群組」。
- 在「Backends」(後端) 區段中,設定下列欄位:
- 將「Instance group」(執行個體群組) 設為 tutorial-sp3-mig-a。
- 輸入「Port numbers」(通訊埠編號):
80
。 - 將「Balancing mode」(平衡模式) 設為「Utilization」(使用率)。
- 按一下 [完成]。
- 在「健康狀態檢查」部分中,按一下「建立健康狀態檢查」,然後設定下列欄位:
- Name (名稱):
tutorial-regional-health-check
- Protocol (通訊協定):
HTTP
- Port (通訊埠):
80
- 按一下 [儲存]。
- Name (名稱):
- 按一下「繼續」。
- 點選「建立」。
重複先前的步驟,建立代管執行個體群組
tutorial-sp3-mig-b
,並新增至後端服務tutorial-backend-service-sp3
。
gcloud
- 選取您建立的服務專案:
gcloud config set project SERVICE_PROJECT_3_ID
建立含有 HTTP 伺服器的 VM 執行個體範本:
tutorial-ig-template-sp3
gcloud compute instance-templates create tutorial-ig-template-sp3 \ --region=us-west1 \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2' \ --project=SERVICE_PROJECT_3_ID
更改下列內容:
SERVICE_PROJECT_1_ID
:共用虛擬私有雲主專案的專案 ID。SERVICE_PROJECT_3_ID
: 服務專案的專案 ID,負載平衡器的後端和後端服務將在此建立。
在以下區域建立代管執行個體群組:
tutorial-sp3-mig-a
gcloud compute instance-groups managed create tutorial-sp3-mig-a \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp3 \ --project=SERVICE_PROJECT_3_ID
定義 HTTP 健康狀態檢查,
tutorial-regional-health-check
:gcloud compute health-checks create http tutorial-regional-health-check \ --region=us-west1 \ --use-serving-port \ --project=SERVICE_PROJECT_3_ID
定義後端服務
tutorial-backend-service-sp3
:gcloud compute backend-services create tutorial-backend-service-sp3 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=tutorial-regional-health-check \ --health-checks-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
使用
gcloud compute backend-services add-backend
指令,將後端新增到後端服務:gcloud compute backend-services add-backend tutorial-backend-service-sp3 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp3-mig-a \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
在
tutorial-sp3-mig-b
區域中建立另一個代管執行個體群組:gcloud compute instance-groups managed create tutorial-sp3-mig-b \ --region=us-west1 \ --size=2 \ --template=tutorial-ig-template-sp3 \ --project=SERVICE_PROJECT_3_ID
將後端新增至後端服務:
gcloud compute backend-services add-backend tutorial-backend-service-sp3 \ --balancing-mode=UTILIZATION \ --instance-group=tutorial-sp3-mig-b \ --instance-group-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_3_ID
在服務專案 1 中建立網址對應和轉送規則
本節中的所有步驟都必須在服務專案 1 中執行。
主控台
開始設定
前往 Google Cloud 控制台的「Load balancing」(負載平衡)頁面。
- 點選「建立負載平衡器」。
- 在「Type of load balancer」(負載平衡器類型) 部分,選取「Application Load Balancer (HTTP/HTTPS)」(應用程式負載平衡器 (HTTP/HTTPS)),然後點選「Next」(下一步)。
- 在「公開或內部」部分,選取「內部」,然後點選「下一步」。
- 在「Cross-region or single region deployment」(跨區域或單一區域部署) 部分,選取「Best for regional workloads」(最適合區域工作負載),然後點選「Next」(下一步)。
- 按一下 [設定]。
基本設定
- 在「Name」(名稱) 中輸入負載平衡器的名稱,例如
tutorial-url-maps
。 - 在「Region」(區域) 清單中選取「
us-west1
」。 在「Network」(網路) 清單中,選取「lb-network」(來自「Project」(專案):SERVICE_PROJECT_1_ID)。
如果看到「在共用虛擬私有雲網路中必須要有僅限 Proxy 的子網路」警告,請確認主專案管理員已在
lb-network
共用虛擬私有雲網路的us-west1
區域中建立proxy-only-subnet
。即使您沒有權限在這個頁面查看僅限 Proxy 的子網路,系統還是可以順利建立負載平衡器。將視窗保持開啟,以便繼續操作。
設定後端
- 按一下「後端設定」。
- 按一下「跨專案後端服務」。
- 在「專案 ID」欄位中,輸入服務專案 2 的 project ID。
- 在「Backend service name」(後端服務名稱) 欄位中,輸入要使用的 Service Project 2 後端服務名稱。在本例中為
tutorial-backend-service-sp2
。 - 按一下「新增後端服務」。
- 在「專案 ID」欄位中,輸入服務專案 3 的「專案 ID」。
- 在「後端服務名稱」欄位中,輸入要使用的服務專案 3 後端服務名稱。在本例中為
tutorial-backend-service-sp3
。 - 按一下「新增後端服務」。
設定轉送規則
- 按一下「轉送規則」。
- 在「Host and path rules」(主機與路徑規則) 區段的「Host 2」(主機 2) 欄位中,輸入
*
。 - 在「Paths 2」(路徑 2) 欄位中輸入
/*
。 - 在「Backend 2」下拉式清單中,選取
tutorial-backend-service-sp2
。 - 按一下 [Add host and path rule] (新增主機與路徑規則)。
- 在「Host 3」(主機 3) 欄位中輸入
tutorial-host
。 - 在「Paths 3」欄位中輸入
/*
。 在「Backend 3」下拉式清單中,選取
tutorial-backend-service-sp3
。確認「Host and Path Rules」(主機與路徑規則) 左邊出現了藍色勾號,然後按一下「Update」(更新) 按鈕。
如要瞭解流量管理,請參閱設定流量管理。
設定前端
如要讓跨專案服務參照正常運作,前端必須使用與建立後端服務時相同的網路 (lb-network
),也就是共用虛擬私有雲主專案中的網路。
- 按一下「前端設定」。
- 輸入轉送規則的「Name」(名稱):
l7-ilb-forwarding-rule
。 - 將「Protocol」(通訊協定) 設為
HTTP
。 - 將「Subnetwork」(子網路) 設為
lb-frontend-and-backend-subnet
。 即使清單中提供 Proxy 專用子網路選項,也請勿選取。 - 將「Port」(通訊埠) 設為
80
。 - 在「IP address」(IP 位址) 欄位中,保留預設選項「Ephemeral (Automatic)」(臨時 (自動))。
- 按一下 [完成]。
檢查並完成設定
- 點選「建立」。
gcloud
選取您建立的服務專案:
gcloud config set project SERVICE_PROJECT_1_ID
建立網址對應
tutorial-url-maps
,並將預設服務設為在服務專案 1 中建立的後端服務:gcloud compute url-maps create tutorial-url-maps \ --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \ --region=us-west1 \ --project=SERVICE_PROJECT_1_ID
更改下列內容:
SERVICE_PROJECT_2_ID
:服務專案 2 的專案 ID,負載平衡器的後端和後端服務是在這個專案中建立。SERVICE_PROJECT_1_ID
:服務專案 1 的專案 ID,負載平衡器的前端會在此建立。
建立目標 Proxy
tutorial-http-proxy
:gcloud compute target-http-proxies create tutorial-http-proxy \ --url-map=tutorial-url-maps \ --url-map-region=us-west1 \ --region=us-west1 \ --project=SERVICE_PROJECT_1_ID
建立轉送規則
l7-ilb-forwarding-rule
,處理 HTTP 流量。如要跨專案參照服務,轉送規則必須使用與建立後端服務時相同的網路 (lb-network
),也就是共用虛擬私有雲主專案的網路。gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=projects/SERVICE_PROJECT_1_ID/global/networks/lb-network \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --address=l7-ilb-ip-address \ --ports=80 \ --region=us-west1 \ --target-http-proxy=tutorial-http-proxy \ --target-http-proxy-region=us-west1 \ --project=SERVICE_PROJECT_1_ID
如要將流量傳送至後端服務,請將網址對應連結至後端服務。詳情請參閱「使用網址對應」。
將服務專案 2 中的後端服務
tutorial-backend-service-sp2
連結至網址對應tutorial-url-maps
和路徑比對器名稱tutorial-path-matcher-sp2
:gcloud compute url-maps add-path-matcher tutorial-url-maps \ --path-matcher-name=tutorial-path-matcher-sp2 \ --default-service=projects/SERVICE_PROJECT_2_ID/regions/us-west1/backendServices/tutorial-backend-service-sp2 \ --region=us-west1
將服務專案 3 中的後端服務
tutorial-backend-service-sp3
,連結至網址對應tutorial-url-maps
和路徑比對器名稱tutorial-path-matcher-sp3
。新增主機規則tutorial-host
,並提供主機,以便將路徑比對器繫結至新的主機規則gcloud compute url-maps add-path-matcher tutorial-url-maps \ --path-matcher-name=tutorial-path-matcher-sp3 \ --default-service=projects/SERVICE_PROJECT_3_ID/regions/us-west1/backendServices/tutorial-backend-service-sp3 \ --region=us-west1 \ --new-hosts=tutorial-host
測試負載平衡器
如要測試負載平衡器,請先建立範例用戶端 VM。接著,請與 VM 建立 SSH 工作階段,並從這個 VM 將流量傳送至負載平衡器。
建立測試 VM 執行個體
用戶端可以位於共用虛擬私有雲主專案或任何已連線的服務專案。在本範例中,您會在服務專案 1 中部署用戶端 VM,並將其指定為共用虛擬私有雲主專案,藉此測試負載平衡器是否正常運作。用戶端必須使用相同的共用 VPC 網路,且與負載平衡器位於相同地區。
本節中的所有步驟都必須在服務專案 2 中執行。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
在「Name」(名稱) 欄位中輸入
client-vm
。將「Zone」(區域) 設為 us-west1-b。
依序點選「進階選項」和「網路」。
輸入下列「Network tags」(網路標記):
allow-ssh
、load-balanced-backend
。在「網路介面」部分,選取「與我共用的網路 (來源主專案:SERVICE_PROJECT_1_ID)」。
從
lb-network
網路選取lb-frontend-and-backend-subnet
子網路。點選「建立」。
gcloud
建立測試 VM 執行個體。
gcloud compute instances create client-vm \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=projects/SERVICE_PROJECT_1_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \ --zone=us-west1-b \ --tags=allow-ssh \ --project=SERVICE_PROJECT_2_ID
將流量傳送至負載平衡器
使用 SSH 連線至您剛建立的執行個體,並測試後端的 HTTP(S) 服務是否可以透過內部應用程式負載平衡器的轉送規則 IP 位址連線,以及流量是否在後端執行個體之間達到負載平衡。
擷取負載平衡器 IP 位址的值:
gcloud compute addresses list --filter="name=( 'l7-ilb-ip-address')"
畫面會顯示類似以下內容的輸出:
NAME: l7-ilb-ip-address ADDRESS/RANGE: 10.1.2.2 TYPE: INTERNAL PURPOSE: GCE_ENDPOINT NETWORK: REGION: us-west1 SUBNET: lb-frontend-and-backend-subnet STATUS: IN_USE
複製輸出內容中的服務
ADDRESS/RANGE
,例如10.1.2.2
,以便在後續步驟中使用。使用 SSH 連線至用戶端執行個體:
gcloud compute ssh client-vm \ --zone=us-west1-b \ --project=SERVICE_PROJECT_2_ID
確認負載平衡器的 IP 位址是否提供主機名稱:
確認 IP 位址是否在服務專案 2 中提供主機名稱:
curl 10.1.2.2
畫面會顯示類似以下的輸出:
Page served from: tutorial-sp2-mig-a-10xk
確認 IP 位址是否在服務專案 3 中提供主機名稱:
curl -H "Host: tutorial-host" 10.1.2.2
畫面會顯示類似以下的輸出:
Page served from: tutorial-sp3-mig-a-3d5h
授予 IAM 權限
為 App Hub 主機和服務專案提供適當的 IAM 角色和權限。
控制台
前往 Google Cloud 控制台的專案選取器頁面。
前往 Google Cloud 控制台的「IAM」頁面。
按一下「授予存取權」
。 「授予存取權」窗格隨即開啟。在「New principals」(新增主體) 欄位中,輸入將管理 App Hub 的個人電子郵件地址,也就是 App Hub 主機專案中的「App Hub Admin」(App Hub 管理員) 角色。
按一下「選取角色」,然後在「篩選器」欄位中輸入
App Hub
。選取「App Hub 管理員」角色,然後按一下「儲存」。
在每個 App Hub 服務專案中,將 App Hub 管理員角色授予同一位使用者。
gcloud
如要將角色授予使用 App Hub 的個人,請視需要重複執行下列指令,並替換 IAM 角色。詳情請參閱「應用程式中心角色和權限」。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:HOST_PROJECT_ADMIN' \ --role='roles/apphub.admin'
將
HOST_PROJECT_ADMIN
替換為在 App Hub 主專案中具有 App Hub 管理員角色的使用者。這個值的格式為username@yourdomain
,例如222larabrown@gmail.com
。在服務專案中,將 App Hub 管理員角色授予管理 App Hub 的人員。他們必須具備 App Hub 管理員角色,才能將服務專案新增至主專案。每個服務專案至少需要一位具有這項角色的使用者。
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member='user:HOST_PROJECT_ADMIN' \ --role='roles/apphub.admin'
將
SERVICE_PROJECT_ID
替換為服務專案的 ID。
附加服務專案
服務專案是 Google Cloud 包含基礎架構資源的專案,您可以向 App Hub 應用程式註冊這些資源。詳情請參閱服務專案。將您部署資源的服務專案附加至 App Hub 主專案。
控制台
前往 Google Cloud 控制台的 App Hub「Settings」(設定) 頁面。
在「設定」頁面中,按一下「附加專案」。
在開啟的窗格中,從顯示的清單搜尋專案,然後選取要新增為服務專案的專案核取方塊。
按一下「選取」。 「附加的服務專案」表格會顯示所選服務專案。
按一下 [關閉]。
gcloud
將服務專案 1、2 和 3 附加到 App Hub 主專案。
gcloud apphub service-projects add SERVICE_PROJECT_1_ID \ --project=HOST_PROJECT_ID
gcloud apphub service-projects add SERVICE_PROJECT_2_ID \ --project=HOST_PROJECT_ID
gcloud apphub service-projects add SERVICE_PROJECT_3_ID \ --project=HOST_PROJECT_ID
確認您已將 App Hub 服務專案附加至 App Hub 主專案:
gcloud apphub service-projects list --project=HOST_PROJECT_ID
將服務專案附加至 App Hub 主專案後,您就能查看附加服務專案中的所有 Google Cloud 資源,這些資源會顯示為已探索的 App Hub 服務和工作負載。如要進一步瞭解如何查看這些探索到的服務和工作負載,請參閱查看現有應用程式、服務和工作負載。
建立應用程式
建立應用程式,做為服務和工作負載的容器。建立應用程式時,您可以指派不可變更的屬性,例如要註冊資源的範圍類型或位置,以及重要性和環境等變數屬性。您可以使用變數屬性篩選應用程式。詳情請參閱「屬性和屬性」。
在本教學課程中,您將建立 Global 應用程式,以便在單一應用程式中管理全域和區域資源。如要將特定區域的資源分組,可以建立區域應用程式並註冊這些資源。如要進一步瞭解如何建立區域應用程式,請參閱「設定 App Hub」。
控制台
- 確認您位於 App Hub 主機專案中。
前往 Google Cloud 控制台的 App Hub「Applications」頁面。
按一下「建立應用程式」。
在「建立應用程式」頁面的「選擇應用程式區域和名稱」窗格中,選取「全球」。
在「Application name」(應用程式名稱) 欄位中,輸入
tutorial-application
。這個名稱是專屬 ID,應用程式建立後即無法變更。輸入「顯示名稱」
Tutorial
,然後按一下「繼續」。這是方便使用者辨識的名稱,您可以更新。詳情請參閱「更新現有應用程式」。在「新增屬性」窗格中,從「重要性」清單選取「高」。重要性是指應用程式、服務或工作負載對業務運作的重要性。
在「Environment」(環境) 欄位中,選取「Production」(正式版),指出軟體生命週期的階段。
按一下「繼續」。
在「新增擁有者」窗格中,新增「開發人員擁有者」、「營運部門擁有者」和「業務部門擁有者」的詳細資料。 請注意,如果新增顯示名稱,必須輸入擁有者的電子郵件地址。
- 輸入擁有者的顯示名稱。
- 輸入擁有者的電子郵件地址。這個值必須採用
username@yourdomain
格式,例如222larabrown@gmail.com
。
針對每位開發人員、營運人員和企業主重複執行這些步驟。
點選「建立」。
系統會建立新應用程式,並列在「Applications」頁面中。 請注意,只有轉送規則、網址對應、後端服務和受管理執行個體群組 (MIG) 會在 App Hub 應用程式中顯示為探索到的資源。詳情請參閱概念和資料模型。
gcloud
選取您建立的 App Hub 主專案:
gcloud config set project HOST_PROJECT_ID
在
global
區域中建立名為tutorial-application
的新應用程式,並將顯示名稱設為Tutorial
。這個應用程式名稱是專屬 ID,應用程式建立後就無法變更。tutorial-application
顯示名稱Tutorial
是方便使用者辨識的名稱,您可以更新。詳情請參閱「更新現有應用程式」。gcloud apphub applications create tutorial-application \ --display-name='Tutorial' \ --scope-type=GLOBAL \ --project=HOST_PROJECT_ID \ --location=global
列出 App Hub 主專案中的應用程式:
gcloud apphub applications list \ --project=HOST_PROJECT_ID \ --location=global
畫面會顯示類似以下內容的輸出:
ID DISPLAY_NAME CREATE_TIME tutorial-application Tutorial 2023-10-31T18:33:48
使用
criticality-type
、environment-type
和擁有者屬性更新應用程式:gcloud apphub applications update tutorial-application \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \ --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \ --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \ --project=HOST_PROJECT_ID \ --location=global
更改下列內容:
DISPLAY-NAME-DEVELOPER
、DISPLAY-NAME-OPERATOR
和DISPLAY-NAME-BUSINESS
:分別是開發人員、營運者和企業主的顯示名稱。EMAIL-NAME-DEVELOPER
、EMAIL-NAME-OPERATOR
和EMAIL-NAME-BUSINESS
:分別是開發人員、營運人員和企業主的電子郵件地址。這些值必須採用username@yourdomain
格式,例如222larabrown@gmail.com
。
注意:
criticality-type
:指出應用程式、服務或工作負載對業務營運的重要性。environment-type
:表示軟體生命週期的各個階段。
取得您建立的應用程式詳細資料:
gcloud apphub applications describe tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
指令會以 YAML 格式傳回資訊,類似於下列內容:
attributes: businessOwners: – displayName: [DISPLAY-NAME-BUSINESS] email: [EMAIL-BUSINESS] criticality: type: HIGH developerOwners: – displayName: [DISPLAY-NAME-DEVELOPER] email: [EMAIL-DEVELOPER] environment: type: PRODUCTION operatorOwners: – displayName: [DISPLAY-NAME-OPERATOR] email: [EMAIL-OPERATOR] createTime: '2023-10-31T18:33:48.199394108Z' displayName: Tutorial name: projects/HOST_PROJECT_ID/locations/global/applications/tutorial-application scope: type: REGIONAL state: ACTIVE uid: 9d991a9d-5d8a-4c0d-b5fd-85e39fb58c73 updateTime: '2023-10-31T18:33:48.343303819Z'
註冊服務和工作負載
註冊服務和工作負載後,這些項目就會新增至應用程式,方便您監控新增的資源。
控制台
前往 Google Cloud 控制台的 App Hub「Applications」頁面。
按一下應用程式名稱「Tutorial」。 系統會顯示「服務和工作負載」分頁,並列出 App Hub 服務專案中已註冊的服務和工作負載。
註冊服務:
- 在「服務和工作負載」分頁中,按一下「註冊服務/工作負載」。
- 在「Register service or workload」(註冊服務或工作負載) 頁面的「Select resource」(選取資源) 窗格中,按一下「Browse」(瀏覽),選取服務或工作負載做為「Resource」(資源)。
- 在「Select resource」(選取資源) 窗格中,選擇服務的「Name」(名稱)「tutorial-backend-service-sp2」,然後按一下「Select」(選取)。
- 在「選取資源」窗格中,輸入資源的「名稱」,
tutorial-service-backend-sp2
。 - 輸入「顯示名稱」
Backend service (SP2)
,然後按一下「繼續」。 - 在「新增屬性」窗格的「重要性」清單中,選取「高」,指出應用程式的重要性。
- 在「Environment」(環境) 欄位中,選取「Production」(正式版),指出軟體生命週期的階段。
- 按一下「繼續」。
- 在「新增擁有者」窗格中,視需要新增開發人員擁有者、營運部門擁有者和業務部門擁有者的詳細資料。
請注意,如果新增顯示名稱,必須輸入擁有者的電子郵件地址。
- 輸入擁有者的顯示名稱。
- 輸入擁有者的電子郵件地址。這個值必須採用
username@yourdomain
格式,例如222larabrown@gmail.com
。
- 針對每位開發人員、營運人員和企業主重複執行這些步驟。
- 按一下「註冊」。
在「服務和工作負載」分頁的「已註冊的服務和工作負載」部分,您會看到新增的服務。
- 重複上述步驟,將其他服務分別註冊為 tutorial-service-backend-sp3、tutorial-service-forwarding-rule 和 tutorial-service-url-map。
- 重複先前的服務註冊步驟,註冊工作負載,但有以下例外狀況:
- 在「Register service or workload」(註冊服務或工作負載) 窗格的「Choose service or workload」(選擇服務或工作負載) 部分,選取工作負載的「Name」(名稱) 「tutorial-sp2-mig-a」,然後按一下「Continue」(繼續)。
- 在「選取資源」窗格中,輸入資源的「名稱」,
tutorial-workload-sp2-mig-a
。 - 輸入「顯示名稱」
Instance group - A (SP2)
,然後按一下「繼續」。
- 重複上述步驟,將其他工作負載分別註冊為 tutorial-workload-sp2-mig-a、tutorial-workload-sp2-mig-b、 tutorial-workload-sp3-mig-a 和 tutorial-workload-sp3-mig-b。
gcloud
新增具有 App Hub 編輯器權限的個人:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='user:APP_HUB_EDITOR' \ --role='roles/apphub.editor'
將
APP_HUB_EDITOR
替換為在應用程式中樞主機專案中具有應用程式中樞編輯者角色的使用者。這個值的格式為username@yourdomain
,例如222larabrown@gmail.com
。列出 App Hub 主專案中所有探索到的服務。這個指令會傳回可註冊至應用程式的服務。
gcloud apphub discovered-services list \ --project=HOST_PROJECT_ID \ --location=us-west1
畫面會顯示類似以下內容的輸出:
ID SERVICE_REFERENCE SERVICE_PROPERTIES
BACKEND_SERVICE_SP2_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}BACKEND_SERVICE_SP3_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}FORWARDING_RULE_SERVICE_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'} {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}URL_MAP_SERVICE_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'} {'gcpProject': 'projects/SERVICE_PROJECT_1_ID', 'location': 'us-west1'}複製輸出內容中的服務
ID
,例如BACKEND_SERVICE_SP2_ID
,以供下一個步驟使用。將上一個步驟中的服務註冊至應用程式。複製上一個步驟中輸出欄位的服務 ID。
gcloud apphub applications services create tutorial-service-backend-sp2 \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP2_ID' \ --display-name='Backend service (SP2)' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-backend-sp3 \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_SP3_ID' \ --display-name='Backend service (SP3)' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-forwarding-rule \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/FORWARDING_RULE_SERVICE_ID' \ --display-name='Forwarding rule' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications services create tutorial-service-url-map \ --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/URL_MAP_SERVICE_ID' \ --display-name='URL map' \ --criticality-type='HIGH' \ --environment-type='PRODUCTION' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
更改下列內容:
BACKEND_SERVICE_SP2_ID
:要註冊的服務專案 2 後端服務的服務ID
。BACKEND_SERVICE_SP3_ID
:要註冊的 Service Project 3 後端服務ID
。FORWARDING_RULE_SERVICE_ID
:您要註冊的服務專案 1 轉送規則ID
。URL_MAP_SERVICE_ID
:您要註冊的 Service Project 1 網址對應服務ID
。
列出應用程式中所有已註冊的服務:
gcloud apphub applications services list \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
畫面會顯示類似以下內容的輸出:
已註冊但已分離的服務會以ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME tutorial-service-backend-sp2 Backend service {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp2'} 2024-02-13T00:31:45 tutorial-service-backend-sp3 Backend service {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/regions/us-west1/backendServices/tutorial-backend-service-sp3'} 2024-02-13T00:31:45 tutorial-service-forwarding-rule Forwarding rule {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule'} 2024-02-13T00:31:45 tutorial-service-url-map URL map {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/us-west1/urlMaps/tutorial-url-maps'} 2024-02-13T00:31:45
SERVICE_REFERENCE
欄位中的空白值表示。如要進一步瞭解註冊狀態,請參閱「App Hub 的屬性和屬性」。列出 App Hub 主專案中所有探索到的工作負載。 這項指令會傳回可註冊至應用程式的工作負載。
gcloud apphub discovered-workloads list \ --project=HOST_PROJECT_ID \ --location=global
畫面會顯示類似以下內容的輸出:
從輸出內容複製工作負載 ID,以便在下一個步驟中使用。ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES
INSTANCE_GROUP_SP3_A_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP3_B_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'} {'gcpProject': 'projects/SERVICE_PROJECT_3_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP2_A_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}INSTANCE_GROUP_SP2_B_ID
{'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'} {'gcpProject': 'projects/SERVICE_PROJECT_2_ID', 'location': 'us-west1'}將上一步驟中的工作負載註冊至應用程式。從上一個步驟的輸出欄位複製工作負載 ID。
gcloud apphub applications workloads create tutorial-workload-sp3-mig-a \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_A_ID' \ --display-name='Workload instance group (SP3-A)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp3-mig-b \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP3_B_ID' \ --display-name='Workload instance group (SP3-B)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp2-mig-a \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_A_ID' \ --display-name='Workload instance group (SP2-A)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
gcloud apphub applications workloads create tutorial-workload-sp2-mig-b \ --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/INSTANCE_GROUP_SP2_B_ID' \ --display-name='Workload instance group (SP2-B)' \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
更改下列內容:
INSTANCE_GROUP_SP3_A_ID
、INSTANCE_GROUP_SP3_B_ID
: 您要註冊的 Service Project 3 中代管執行個體群組的工作負載ID
。INSTANCE_GROUP_SP2_A_ID
、INSTANCE_GROUP_SP2_B_ID
: 您要註冊的 Service Project 2 中受管理執行個體群組的工作負載ID
。
列出應用程式中所有已註冊的工作負載:
gcloud apphub applications workloads list \ --application=tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
畫面會顯示類似以下內容的輸出:
已註冊但已分離的工作負載,會在ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME tutorial-workload-sp3-mig-a Workload instance group (SP3-A) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-a'} 2024-02-13T00:31:45 tutorial-workload-sp3-mig-b Workload instance group (SP3-B) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_3_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp3-mig-b'} 2024-02-13T00:31:45 tutorial-workload-sp2-mig-a Workload instance group (SP2-A) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-a'} 2024-02-13T00:31:45 tutorial-workload-sp2-mig-b Workload instance group (SP2-B) {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/zones/us-west1-a/instanceGroups/tutorial-sp2-mig-b'} 2024-02-13T00:31:45
WORKLOAD_REFERENCE
欄位中以空白值表示。如要進一步瞭解註冊狀態,請參閱「App Hub 的屬性和屬性」。
查看所有服務和工作負載
您可以查看附加至 App Hub 主專案的服務專案中,服務和工作負載的詳細資料。
前往 Google Cloud 控制台的「App Hub」頁面。
在「Region」(區域) 清單中選取「global」(全域)。 「工作負載執行個體群組」工作負載會顯示詳細資料,例如「App Hub 類型」、「重要性」和「已註冊至」。
如要依據服務或工作負載的狀態進行篩選,請按照下列步驟操作:
- 在「篩選器」欄位中,選取「註冊狀態」等篩選器。
- 按一下「已註冊」。系統會顯示已向應用程式註冊的服務和工作負載清單。
監控應用程式
Application Monitoring 提供立即可用的資訊主頁,可監控 App Hub 應用程式及其已註冊服務和工作負載的記錄、指標和事件。詳情請參閱「應用程式監控」。如要查看這些資訊主頁,請按照下列步驟操作:
前往 Google Cloud 控制台的 App Hub「Applications」頁面。
執行下列其中一個步驟:
- 如要查看頂層的 OOTB 資訊主頁,列出已向主機專案或啟用應用程式的資料夾註冊的應用程式清單摘要資訊,請按一下「在可觀測性中查看」。
- 如要查看應用程式的 OOTB 資訊主頁,請按照下列步驟操作:
- 按一下應用程式名稱。
- 按一下「查看觀測能力資訊主頁」。
- 如要查看特定服務或工作負載的 OOTB 資訊主頁,請按照下列步驟操作:
- 按一下應用程式名稱。
- 在顯示服務或工作負載名稱的列中,按一下
「查看觀測能力資訊主頁」。
如要進一步瞭解如何查看資訊主頁,請參閱「查看應用程式遙測資料」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除 App Hub 資源
控制台
前往 Google Cloud 控制台的 App Hub「Applications」頁面。
按一下應用程式名稱「Tutorial」(教學課程)。
在「服務和工作負載」分頁的「已註冊的服務和工作負載」部分,按一下服務名稱。
在「服務和工作負載」頁面中,按一下「取消註冊」。
系統會發出快訊,通知服務已取消註冊。
在「服務和工作負載」分頁的「已註冊的服務和工作負載」部分,按一下工作負載名稱。
在「詳細資料」分頁中,按一下「取消註冊」。
系統會發出快訊,通知您工作負載已取消註冊。
前往 App Hub 的「Applications」(應用程式) 頁面。
按一下應用程式名稱。
在「tutorial-application」頁面中,按一下「Delete」。
前往 Google Cloud 控制台的 App Hub「Settings」(設定) 頁面。
在「設定」頁面中,選取要從 App Hub 主專案移除的服務專案核取方塊。
按一下「卸離專案」。
gcloud
列出應用程式中已註冊的服務:
gcloud apphub applications services list \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
從應用程式取消註冊服務:
gcloud apphub applications services delete SERVICE_NAME \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
將
SERVICE_NAME
改為您的服務名稱。這些服務現在是可向應用程式註冊的探索服務。列出應用程式中已註冊的工作負載:
gcloud apphub applications workloads list \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
從應用程式取消註冊工作負載:
gcloud apphub applications workloads delete WORKLOAD_NAME \ --application=tutorial-application --project=HOST_PROJECT_ID \ --location=global
將
WORKLOAD_NAME
替換為工作負載的名稱。工作負載現在是可向應用程式註冊的已發現工作負載。刪除應用程式:
gcloud apphub applications delete tutorial-application \ --project=HOST_PROJECT_ID \ --location=global
從 App Hub 託管專案中移除服務專案:
gcloud apphub service-projects remove SERVICE_PROJECT_ID \ --project=HOST_PROJECT_ID
將
SERVICE_PROJECT_ID
替換為服務專案 1、2 和 3 的專案 ID。
刪除部署作業
不再需要解決方案時,請刪除所有資源,以免系統繼續向您收取解決方案中建立的資源費用。
詳情請參閱清除負載平衡器設定。刪除專案
控制台
- 前往 Google Cloud 控制台的「管理資源」頁面。
- 在專案清單中選取要刪除的專案,然後按一下「刪除」。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 刪除專案。
gcloud
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID
將 PROJECT_ID
替換為託管或服務專案 ID。