提供意見
使用虛擬私有雲對等互連佈建付費機構
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
本頁面適用於 Apigee ,但不適用於 Apigee Hybrid 。
查看
Apigee Edge 說明文件。
本文說明如何透過指令列
搭配虛擬私有雲網路對等互連 安裝及設定 Apigee。這些步驟適用於付費機構的訂閱和隨用付費計費模式,無論是否已啟用資料儲存地點 。
步驟摘要
佈建步驟如下:
步驟 1:定義環境變數
設定 gcloud
,並定義後續步驟中會用到的環境變數:
請務必完成「
事前準備 」一節中列出的設定規定。
您必須先安裝 Cloud SDK。如果您需要安裝 Cloud SDK,請參閱「
安裝 Cloud SDK 」。
請按照「初始化 gcloud CLI 」一節的說明初始化 Cloud SDK,或是確認您在「先決條件 」一節中建立的 Google Cloud 專案,是 gcloud
的預設專案。
在指令終端機中定義下列環境變數。
請選取對應您所需機構類型的分頁:沒有資料儲存地點 或
資料儲存地點 :
提示: 請將環境變數儲存在文字檔中,以便在需要時輕鬆還原。
沒有資料落地
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
ANALYTICS_REGION ="YOUR_ANALYTICS_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
注意 :如果您要在 Google Cloud 專案中佈建新的 Apigee 機構,且該專案在機構政策中套用了資源位置限制 ,請確認位置限制已設為 global
。由於 Apigee 控制層預設為全域實體,因此如果套用 global
以外的限制條件,佈建作業就會失敗。詳情請參閱「資料落地簡介 」。
其中:
AUTH 會使用權杖定義 Authentication
標頭。您會在呼叫 Apigee API 時使用這個標頭。請注意,權杖會在一段時間後到期,屆時您只要使用相同的指令即可重新產生權杖。詳情請參閱
print-access-token 指令 的參考頁面。
PROJECT_ID 是您在必要條件 中建立的 Cloud 專案 ID。
PROJECT_NUMBER 是您在必要條件 中建立的 Cloud 專案編號。
RUNTIME_LOCATION 是您稍後要建立的 Apigee 執行個體所在的實際位置。如需可用執行階段位置的清單,請參閱 Apigee 位置 。
注意: 針對 RUNTIME_LOCATION
,請務必使用區域 名稱,而非區域名稱。舉例來說,us-west1
是地區名稱,而 us-west1-a
則是該地區中的區域。另請參閱「
識別地區或區域 」。
ANALYTICS_REGION 是 Apigee 數據分析資料的實際儲存位置。如需可用 Apigee API Analytics 區域的清單,請參閱 Apigee 位置 。
RUNTIME_LOCATION 和 ANALYTICS_REGION 可以是相同的區域,但不一定相同。
BILLING_TYPE 是您建立的機構所屬的帳單類型。有效的值包括:
資料落地
AUTH ="$(gcloud auth print-access-token)"
PROJECT_ID ="YOUR_PROJECT_ID "
PROJECT_NUMBER =$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION ="YOUR_RUNTIME_LOCATION "
CONTROL_PLANE_LOCATION ="YOUR_CONTROL_PLANE_LOCATION "
CONSUMER_DATA_REGION ="YOUR_CONSUMER_DATA_REGION "
BILLING_TYPE ="YOUR_BILLING_TYPE "
重要事項: 使用資料落地功能時,控制平面位置為包含區域。所有其他區域都必須位於控制層位置內;如果控制層位置是 us
,則使用者資料區域和執行階段位置也必須位於 us
內。舉例來說,us-west1
是可接受的值,但 europe-west1
則不行。
其中:
(選用) 透過回應您剛剛設定的值來檢查您的工作。請注意,如要在指令中使用變數,請在變數名稱前加上美元符號 ($ )。
沒有資料落地
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
echo
指令的回應內容應如下所示:
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us-west1
SUBSCRIPTION
資料落地
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
echo
指令的回應內容應如下所示:
YOUR_TOKEN
my-cloud-project
1234567890
us-west1
us
us-west1
SUBSCRIPTION
步驟 2:啟用 API
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「
預先定義的角色 」和「
API 啟用權限 」。
如要使用 Apigee,您必須啟用幾個 Google Cloud API。執行下列 services enable
指令即可啟用:
gcloud services enable apigee.googleapis.com \
servicenetworking.googleapis.com \
compute.googleapis.com \
cloudkms.googleapis.com --project=$PROJECT_ID
(選用) 如要檢查您的工作,請使用 services list
指令顯示所有已啟用的 API:
gcloud services list
回應會顯示所有已啟用的服務,包括您剛啟用的 API。
步驟 3:建立 Apigee 服務身分
警告:
服務帳戶 是 Apigee 用來佈建執行階段執行個體所需的特殊帳戶。刪除服務帳戶會導致執行階段執行個體無法使用。
建立 Apigee 服務身分 :
gcloud beta services identity create --service=apigee.googleapis.com \
--project=$PROJECT_ID
確認代理程式已成功建立。回應應以以下格式顯示服務專員的名稱:service-PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com
。例如:
Service identity created: [email protected]
步驟 4:設定服務網路
在這個步驟中,您會將一組 IP 位址範圍 (/22 和 /28 CIDR 範圍) 分配給 Apigee,並在您的網路和 Apigee 網路之間執行 VPC 對等互連。每個 Apigee 例項都需要 /22 和 /28 的 CIDR 範圍,且不重疊。Apigee 執行階段層會從這個 CIDR 範圍內指派 IP 位址。因此,請務必將範圍保留給 Apigee,不要讓 VPC 網路中的其他應用程式使用。如需更多資訊和重要考量事項,請參閱「瞭解連線範圍 」。
請注意,您需要為一個 Apigee 執行個體 建立足夠的網路 IP 範圍。如果您打算建立其他 Apigee 執行個體,請為每個執行個體重複執行此步驟。範圍無法在執行個體之間共用。另請參閱「將 Apigee 擴展至多個區域 」。
重要事項:
如果您已擁有與 servicenetworking.googleapis.com
建立對等連線的範圍和私人連線,且範圍足以處理另一個 /22
和 /28
CIDR 範圍,您可以略過這個步驟。Apigee 會為您建立所需的 CIDR 區塊。只有在您尚未建立可用來建立 /22
和 /28
區塊的空間,或是想要使用目前不存在的特定 /22
和 /28
時,才需要執行這個步驟。
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「
預先定義的角色 」和「
服務網路權限 」。
建立下列環境變數:
RANGE_NAME =YOUR_RANGE_NAME
NETWORK_NAME =YOUR_NETWORK_NAME
其中:
建立 CIDR 長度為 /22 的網路 IP 範圍:
gcloud compute addresses create $RANGE_NAME \
--global \
--prefix-length=22 \
--description="Peering range for Apigee services" \
--network=$NETWORK_NAME \
--purpose=VPC_PEERING \
--addresses=OPTIONAL_ADDRESSES \
--project=$PROJECT_ID
其中 --addresses
可讓您選擇指定位址範圍。例如,如要分配 CIDR 區塊 192.168.0.0/22
,請將位址指定為 192.168.0.0
,並將前置字串長度指定為 22
。另請參閱
建立 IP 分配 。
如果您未提供 --addresses
參數,gcloud 會為您選取可用的位址範圍。
如果成功,gcloud
會傳回以下回應:
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME /global/addresses/google-svcs].
建立 IP 位址範圍後,這些位址會與專案建立關聯,直到您釋出為止。
確認網路 IP 範圍是使用 CIDR 長度 /22 建立:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
建立 CIDR 長度為 /28 的網路 IP 範圍。這個範圍為必填項目,Apigee 會用於排解問題,無法自訂或變更。
gcloud compute addresses create google-managed-services-support-1 \
--global \
--prefix-length=28 \
--description="Peering range for supporting Apigee services" \
--network=$NETWORK_NAME \
--purpose=VPC_PEERING \
--addresses=OPTIONAL_ADDRESSES \
--project=$PROJECT_ID
其中 --addresses
可讓您選擇指定位址範圍。例如,如要分配 CIDR 區塊 192.168.0.0/28
,請將位址指定為 192.168.0.0
,並將前置字串長度指定為 28
。另請參閱「
建立 IP 分配 」一文。
如果您未提供 --addresses
參數,gcloud 會為您選取可用的位址範圍。
確認網路 IP 範圍的 CIDR 長度為 /28:
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \
--project=$PROJECT_ID
使用下列指令將服務連線至網路:
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--network=$NETWORK_NAME \
--ranges=$RANGE_NAME,google-managed-services-support-1 \
--project=$PROJECT_ID
這項作業可能需要幾分鐘才能完成。成功後,gcloud
會傳回以下內容,其中 OPERATION_ID 是 LRO 的 UUID。
Operation "operations/OPERATION_ID " finished successfully.
Apigee 會在您的網路與 Google 服務之間建立連線,具體來說,Apigee 會透過 虛擬私有雲 對等互連,將您的專案連結至 Service Networking API。Apigee 也會將 IP 位址與您的專案建立關聯。
幾分鐘後,請確認 VPC 對等連線是否成功:
gcloud services vpc-peerings list \
--network=$NETWORK_NAME \
--service=servicenetworking.googleapis.com \
--project=$PROJECT_ID
步驟 5:建立機構
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱:
如要建立機構組織,您必須先建立執行階段資料庫加密金鑰環和金鑰 (請參閱步驟 1 ),如果您使用
資料儲存地點 ,請建立控制平面加密金鑰環和金鑰 (請參閱步驟 2 )。這些
Cloud KMS 金鑰會加密在執行階段和控制平面位置儲存及複製的資料。Apigee 會使用這些實體加密應用程式資料 (例如 KVM、快取和用戶端密鑰),然後將這些資料儲存在資料庫中。詳情請參閱「
關於 Apigee 加密金鑰 」。
建立執行階段資料庫加密金鑰環和金鑰。
定義環境變數,用於指定執行階段資料庫加密環和金鑰的位置。這有助於確保建立時的一致性,並讓您更容易在說明文件中追蹤。
這個值是執行階段資料庫加密金鑰圈和金鑰的實際儲存位置。
單一區域
單一區域設定 (在一個區域中只有一個執行個體):請從支援的 KMS 區域位置 中選擇。
例如:
RUNTIMEDBKEY_LOCATION ="us-west1"
這個值可以與 $RUNTIME_LOCATION (也是區域) 相同,但不一定要相同。不過,如果兩者相同,效能可能會有所提升。
多區域
多區域設定: 請從支援的多地區位置 (例如 us
或 europe
) 或雙地區位置 中選擇。
例如:
RUNTIMEDBKEY_LOCATION ="us"
如果您在美國使用多區域設定,建議盡可能使用 us
做為位置。否則,請使用 nam4
。
定義資料庫鑰匙圈和金鑰名稱的環境變數。
鑰匙圈名稱必須是貴機構的專屬名稱。如果建立第二個或後續區域,名稱不得與其他鑰匙圈的名稱相同。
RUNTIMEDB_KEY_RING_NAME =YOUR_DB_KEY_RING_NAME
RUNTIMEDB_KEY_NAME =YOUR_DB_KEY_NAME
(選用) 透過回應您剛剛設定的值來檢查您的工作。請注意,如要在指令中使用變數,請在變數名稱前加上美元符號 ($ )。
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
建立新的金鑰環:
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
Apigee 執行階段資料庫加密金鑰的位置支援所有支援 Cloud HSM 和 Cloud EKM 的 Cloud KMS 位置。
建立金鑰:
gcloud kms keys create $RUNTIMEDB_KEY_NAME \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
這個指令會建立金鑰並將其新增至金鑰環。
取得金鑰 ID:
gcloud kms keys list \
--location=$RUNTIMEDBKEY_LOCATION \
--keyring=$RUNTIMEDB_KEY_RING_NAME \
--project=$PROJECT_ID
鍵 ID 的語法如下 (類似檔案路徑):
projects/PROJECT_ID /locations/RUNTIMEDBKEY_LOCATION /keyRings/RUNTIMEDB_KEY_RING_NAME /cryptoKeys/RUNTIMEDB_KEY_NAME
將金鑰 ID 放入環境變數中。您將在後續指令中使用這個變數:
RUNTIMEDB_KEY_ID =YOUR_RUNTIMEDB_KEY_ID
授予 Apigee 服務代理使用新金鑰的存取權:
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \
--location $RUNTIMEDBKEY_LOCATION \
--keyring $RUNTIMEDB_KEY_RING_NAME \
--member serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
這項指令會將金鑰繫結至 Apigee 服務代理。
成功完成這項要求後,gcloud
會回應類似以下的內容:
Updated IAM policy for key [runtime].
bindings:
- members:
- serviceAccount:[email protected]
role: roles/cloudkms.cryptoKeyEncrypterDecrypter
etag: BwWqgEuCuwk=
version: 1
如果收到類似下方的錯誤訊息:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
請確認您在服務帳戶電子郵件地址中使用的是專案編號 ,而非專案名稱。
如果您使用
資料居留地 ,請建立控制平面加密金鑰環和金鑰。如果您未使用資料落地機制,請直接前往步驟 3 。
注意 :只有在您選取 us (multiple regions in us)
或 eu (multiple regions in European Union)
做為控制平面代管區域時,才需要執行這個步驟。如果您選取了其他區域,請前往步驟 3 。
請執行下列步驟,建立控制平面加密金鑰環和金鑰。
定義控制平面資料庫加密環和金鑰的位置的環境變數:
CONTROL_PLANE_LOCATION =YOUR_CONTROL_PLANE_LOCATION
CONSUMER_DATA_REGION =YOUR_CONSUMER_DATA_REGION
其中:
CONTROL_PLANE_LOCATION 是 Apigee 控制平面資料的實際儲存位置。如需可用控制層位置的清單,請參閱 Apigee 位置 。
CONSUMER_DATA_REGION 是控制層區域的子區域。您必須同時指定 CONTROL_PLANE_LOCATION 和 CONSUMER_DATA_REGION。如需可用消費者資料區域的清單,請參閱 Apigee 位置 。
定義控制平面資料庫金鑰環和金鑰名稱的環境變數。
鑰匙圈名稱必須是貴機構的專屬名稱。
CONTROL_PLANE_KEY_RING_NAME =YOUR_CONTROL_PLANE_KEY_RING_NAME
CONTROL_PLANE_KEY_NAME =YOUR_CONTROL_PLANE_KEY_NAME
CONSUMER_DATA_KEY_RING_NAME =YOUR_CONSUMER_DATA_KEY_RING_NAME
CONSUMER_DATA_KEY_NAME =YOUR_CONSUMER_DATA_REGION_KEY_NAME
其中:
CONTROL_PLANE_KEY_RING_NAME 是用來識別控制平面加密 金鑰環 的金鑰環名稱。
CONTROL_PLANE_KEY_NAME 是用來識別控制平面加密金鑰 的金鑰名稱。
CONSUMER_DATA_KEY_RING_NAME 是用來識別消費者資料區域加密金鑰環 的金鑰環名稱。
CONSUMER_DATA_KEY_NAME 是用來識別消費者資料區域加密金鑰 的金鑰名稱。
建立新的金鑰環:
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--project $PROJECT_ID
建立金鑰:
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--location $CONTROL_PLANE_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--location $CONSUMER_DATA_REGION \
--purpose "encryption" \
--project $PROJECT_ID
這個指令會建立金鑰並將其新增至金鑰環。
取得金鑰 ID:
gcloud kms keys list \
--location=$CONTROL_PLANE_LOCATION \
--keyring=$CONTROL_PLANE_KEY_RING_NAME \
--project=$PROJECT_ID
gcloud kms keys list \
--location=$CONSUMER_DATA_REGION \
--keyring=$CONSUMER_DATA_KEY_RING_NAME \
--project=$PROJECT_ID
鍵 ID 的語法如下 (類似檔案路徑):
projects/PROJECT_ID /locations/CONTROL_PLANE_LOCATION /keyRings/CONTROL_PLANE_KEY_RING_NAME /cryptoKeys/CONTROL_PLANE_KEY_NAME
projects/PROJECT_ID /locations/CONSUMER_DATA_REGION /keyRings/CONSUMER_DATA_KEY_RING_NAME /cryptoKeys/CONSUMER_DATA_KEY_NAME
將金鑰 ID 放入環境變數中。您將在後續指令中使用這個變數:
CONTROL_PLANE_KEY_ID =YOUR_CONTROL_PLANE_KEY_ID
CONSUMER_DATA_KEY_ID =YOUR_CONSUMER_DATA_KEY_ID
授予 Apigee 服務代理使用新金鑰的存取權:
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \
--location $CONTROL_PLANE_LOCATION \
--keyring $CONTROL_PLANE_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \
--location $CONSUMER_DATA_REGION \
--keyring $CONSUMER_DATA_KEY_RING_NAME \
--member "serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com" \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
這項指令會將金鑰繫結至 Apigee 服務代理。在成功完成這項要求後,gcloud 會傳回類似以下的回應:
Updated IAM policy for key [ runtime ] .
bindings :
- members :
- serviceAccount : service - 1234567890 @gcp - sa - apigee . iam.gserviceaccount.com
role : roles / cloudkms . cryptoKeyEncrypterDecrypter
etag : BwWqgEuCuwk =
version : 1
如果收到類似下方的錯誤訊息:
INVALID_ARGUMENT : Role roles / cloudkms . cryptokms . cryptoKeyEncrypterDecrypter is not supported for this resource .
請務必在服務帳戶電子郵件地址中使用專案編號,而非專案名稱。
另請參閱:
CMEK 疑難排解 。
將下列要求傳送至 Apigee organizations API ,即可建立機構:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"analyticsRegion":"'"$ANALYTICS_REGION "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
其中:
-d
會定義要求的資料酬載。這個酬載必須包含下列項目:
資料落地
使用 API
建立機構 :
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID " \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$PROJECT_ID "'",
"runtimeType":"CLOUD",
"billingType":"'"$BILLING_TYPE "'",
"controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID "'",
"apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION "'",
"apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID "'",
"authorizedNetwork":"'"$NETWORK_NAME "'",
"runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID "'"
}'
其中:
-d
會定義要求的資料酬載。這個酬載必須包含下列項目:
name
:標示新機構。名稱必須與專案 ID 相同。
runtimeType
:將這個值設為 CLOUD
。
billingType
:指定建立機構的帳單類型。
controlPlaneEncryptionKeyName
:控制平面鍵 ID。
apiConsumerDataLocation
:您也必須指定內部資源使用的子區域。如需支援的值,請參閱
資料落地區域 。
apiConsumerDataEncryptionKeyName
:您的消費者資料區域鍵 ID。
authorizedNetwork
:指出您在「設定服務網路 」中指定的對等網路。
runtimeDatabaseEncryptionKeyName
:您在前一個步驟中建立的應用程式加密金鑰 ID。請注意,ID 的結構類似檔案路徑。例如:
projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
執行這個指令後,Apigee 會啟動長期執行作業 ,可能需要幾分鐘才能完成。
如果發生錯誤,請檢查資料酬載中變數值前後是否有引號。請務必在 $PROJECT_ID 變數周圍加上雙引號和單引號,如以下範例所示:
"'"$PROJECT_ID "'"
如果您使用純文字串列 (而非環境變數) 做為要求值,可以使用雙引號將其包裝在單引號的酬載字串中,如以下範例所示:
'{ "name":"my-gcp-project", ... }'
請稍候片刻。
如要查看建立要求的狀態,您可以將 GET
要求傳送至 Apigee List organizations API ,如以下範例所示:
沒有資料落地
curl -H "Authorization: Bearer $AUTH " "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID "
資料落地
curl -H "Authorization: Bearer $AUTH " "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID "
如果您看到這則回應,表示機構建立作業尚未完成:
{
"error": {
"code": 403,
"message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)",
"status": "PERMISSION_DENIED"
}
}
如果 Apigee 已成功建立新機構,您會收到類似以下的回應:
沒有資料落地
{
"name": "my-cloud-project",
"createdAt": "1592586495539",
"lastModifiedAt": "1592586495539",
"environments": [],
"properties": {
"property": [
{
"name": "features.hybrid.enabled",
"value": "true"
},
{
"name": "features.mart.connect.enabled",
"value": "true"
}
]
},
"analyticsRegion": "us-west1",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"authorizedNetwork": "my-network",
"projectId": "my-cloud-project"
}
資料落地
{
"name": "my-cloud-project",
"createdAt": "1681412783749",
"lastModifiedAt": "1681412783749",
"environments": [
"test-env"
],
"properties": {
"property": [
{
"name": "features.mart.connect.enabled",
"value": "true"
},
{
"name": "features.hybrid.enabled",
"value": "true"
}
]
},
"authorizedNetwork": "default",
"runtimeType": "CLOUD",
"subscriptionType": "PAID",
"caCertificate": "YOUR_CERTIFICATE ",
"runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"projectId": "my-cloud-project",
"state": "ACTIVE",
"billingType": "PAYG",
"addonsConfig": {
"advancedApiOpsConfig": {},
"integrationConfig": {},
"monetizationConfig": {},
"connectorsPlatformConfig": {}
},
"apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name",
"controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name",
"apiConsumerDataLocation": "us-central1",
"apigeeProjectId": "i0c2a37e80f9850ab-tp"
}
如果 Apigee 傳回 HTTP 錯誤回應,請參閱「
建立 Apigee 機構 」一文。
提示: 如要列出您有權存取的 Apigee 機構和相關 Google Cloud 專案,請使用 organizations API 將 GET
要求傳送至下列端點:
沒有資料落地:
curl -H "Authorization: Bearer $AUTH " https://apigee.googleapis.com/v1/organizations/
資料落地:
curl -H "Authorization: Bearer $AUTH " https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/
Apigee 會傳回專案清單,如下列範例所示:
{
"organizations": [
{
"organization": "my-cloud-project",
"projectIds": [
"my-cloud-project"
],
"projectId": "my-cloud-project",
"location": "northamerica-northeast1"
},
{
"organization": "my-cloud-project-2",
"projectIds": [
"my-cloud-project-2"
],
"projectId": "my-cloud-project-2",
"location": "northamerica-northeast1"
}
]
}
步驟 6:建立執行階段執行個體
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「
預先定義的角色 」和「
執行階段執行個體權限 」。
執行階段執行個體是 Apigee 專案和相關服務的儲存位置,可為服務提供面向使用者的端點。如要建立新的執行階段執行個體,請按照下列步驟操作:
確認 Apigee 已完成建立機構。您已提交建立新機構的申請,請前往「建立 Apigee 機構 」確認申請已完成,再繼續操作。
如要這麼做,請將下列要求傳送至 organizations API :
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID "
資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID "
如果機構存在 (且您具備查看該機構的適當權限),Apigee 會回應該機構的詳細資料。如果 Apigee 回應錯誤,請稍候幾分鐘,然後再次傳送要求。
與先前為資料庫建立加密金鑰的任務類似,現在您需要建立用於在伺服器端加密資料的
Cloud KMS 金鑰。如要開始使用,請定義下列環境變數:
INSTANCE_NAME =YOUR_INSTANCE_NAME
RUNTIME_LOCATION =YOUR_RUNTIME_LOCATION
DISK_KEY_RING_NAME =YOUR_DISK_KEY_RING_NAME
DISK_KEY_NAME =YOUR_DISK_KEY_NAME
其中:
INSTANCE_NAME :新執行個體的名稱。例如 my-runtime-instance
。名稱開頭必須為小寫英文字母,長度上限為 32 個字元,且只能包含小寫英文字母、數字和連字號。開頭或結尾不得為連字號,且長度至少須為兩個字元。
RUNTIME_LOCATION 是叢集的實際主機位置。有效值為 Compute Engine 允許的任何位置。(請參閱「可用地區和區域 」)。本範例使用 us-west1
。
DISK_KEY_RING_NAME 是磁碟加密金鑰環的名稱。
DISK_KEY_NAME 是磁碟加密金鑰的名稱。
建立磁碟加密金鑰:
建立新的磁碟金鑰環:
gcloud kms keyrings create $DISK_KEY_RING_NAME \
--location $RUNTIME_LOCATION \
--project $PROJECT_ID
磁碟金鑰環必須設為與執行個體相同的位置。每個例項和鑰匙圈都應有各自的位置。
建立新的磁碟金鑰:
gcloud kms keys create $DISK_KEY_NAME \
--keyring $DISK_KEY_RING_NAME \
--location $RUNTIME_LOCATION \
--purpose "encryption" \
--project $PROJECT_ID
您可以透過鍵路徑 參照該鍵。您可以使用下列指令取得鍵路徑:
gcloud kms keys list \
--location=$RUNTIME_LOCATION \
--keyring=$DISK_KEY_RING_NAME \
--project=$PROJECT_ID
鍵路徑如下所示:
projects/PROJECT_ID /locations/RUNTIME_LOCATION /keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
將金鑰路徑放入環境變數中。您將在後續指令中使用這個變數:
DISK_KEY_ID =YOUR_DISK_KEY_ID
例如:DISK_KEY_ID=projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
授予 Apigee 服務代理使用新金鑰的存取權:
gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \
--location $RUNTIME_LOCATION \
--keyring $DISK_KEY_RING_NAME \
--member serviceAccount:service-$PROJECT_NUMBER @gcp-sa-apigee.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project $PROJECT_ID
這項指令會將金鑰繫結至 Apigee 服務代理。
詳情請參閱「關於 Apigee 加密金鑰 」。
將 POST
要求傳送至 Apigee Instances API ,為專案建立新的執行階段執行個體:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"consumerAcceptList":["'"$PROJECT_ID "'"]
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"consumerAcceptList":["'"$PROJECT_ID "'"]
}'
其中:
注意: 根據預設,Apigee 會自動將先前在步驟 4:為服務網路設定網路連線 中保留的現有 /22 和 /28 網路 IP 範圍,分配給執行個體。 在進階用途中,例如您已保留多個 /22 和 /28 範圍,或 步驟 4:設定服務網路 中的 /16 等較大的區塊,且您想控管分配給執行個體的範圍,則可能需要明確指定要讓 Apigee 使用的 IP 範圍。在這種情況下,您可以使用前置字串 /22 或 /28 (或兩者皆是) 指定自訂 IP 範圍。範圍必須是專案與 Apigee 之間私人連線的一部分。
如要自訂 IP 範圍,請按照
Instances API 參考文件的說明使用 ipRange
要求參數,如下所述:
建立環境變數,以 CIDR 格式儲存 IP 範圍:
MY_IP_RANGES=CIDR_RANGES
例如:
MY_IP_RANGES=10.0.0.1/22 // To specify only /22 range.
MY_IP_RANGES=10.0.0.1/22,10.0.0.2/28 // To specify both /22 and /28 ranges.
注意: 您可以只自訂 /22 或 /28,也可以同時自訂這兩者。
如果您提供 /22 或 /28 其中一個,Apigee 會自動從 步驟 4:設定服務網路 中保留的 IP 範圍分配其他範圍。
使用 ipRange
參數建立例項:
沒有資料落地:
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"ipRange":"'"$MY_IP_RANGES "'",
"consumerAcceptList":[ARRAY_OF_PROJECT_IDS ]
}'
資料落地:
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:application/json" \
-d '{
"name":"'"$INSTANCE_NAME "'",
"location":"'"$RUNTIME_LOCATION "'",
"diskEncryptionKeyName":"'"$DISK_KEY_ID "'",
"ipRange":"'"$MY_22_RANGE,$MY_28_RANGE "'",
"consumerAcceptList":[ARRAY_OF_PROJECT_IDS ]
}'
請注意,IP 範圍一經設定即無法變更。
如果需要變更範圍,您必須建立新的例項。
雖然 /22 IP 範圍可用於執行 Apigee 核心工作負載,但 Apigee 會使用 /28 範圍存取執行個體,以利排除問題。另請參閱「
建立執行個體 」。這項要求最多可能需要 20 分鐘才能完成,因為 Apigee 必須建立並啟動新的 Kubernetes 叢集、在該叢集中安裝 Apigee 資源,以及設定負載平衡。
如果 Apigee 傳回錯誤,請參閱
建立新執行個體 。
如要查看執行階段執行個體建立要求的狀態,請執行下列指令。狀態變為「有效」 後,即可繼續進行下一個步驟。
沒有資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME "
資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME "
步驟 7:建立環境
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱:
如要建立環境並將其附加至指令列的執行階段,請按照下列步驟操作:
定義本節中要使用的環境變數。您建立的特定環境變數取決於您是要為訂閱 或按使用付費 機構建立環境。
訂閱
針對訂閱環境,請建立下列變數:
ENVIRONMENT_NAME ="YOUR_ENV_NAME "
ENV_GROUP_NAME ="YOUR_ENV_GROUP_NAME "
ENV_GROUP_HOSTNAME ="YOUR_ENV_GROUP_HOSTNAME "
其中:
ENVIRONMENT_NAME
是字串名稱。例如:test
ENV_GROUP_NAME
是字串名稱。例如:test-group
ENV_GROUP_HOSTNAME
是有效的網域主機名稱。例如:foo.example.com
即付即用
針對付費即用環境,請建立下列變數:
ENVIRONMENT_NAME ="YOUR_ENV_NAME "
ENVIRONMENT_TYPE ="YOUR_ENV_TYPE "
ENV_GROUP_NAME ="YOUR_ENV_GROUP_NAME "
ENV_GROUP_HOSTNAME ="YOUR_ENV_GROUP_HOSTNAME "
其中:
ENVIRONMENT_NAME
是字串名稱。例如:test
ENVIRONMENT_TYPE
是這個環境的環境類型 ,僅適用於Pay-as-you-go 的使用者,他們必須指定下列任一值:BASE
、INTERMEDIATE
或 COMPREHENSIVE
。其他使用者應省略環境類型。
ENV_GROUP_NAME
是字串名稱。例如:test-group
ENV_GROUP_HOSTNAME
是有效的網域主機名稱。例如:foo.example.com
使用 Environments API 建立新環境。您使用的具體指令取決於您是要為訂閱 或付費即用 組織建立環境。
訂閱
如要使用新訂閱環境,請使用下列指令:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'"
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'"
}'
Apigee 會建立新環境。
即付即用
如要建立新的付費即用環境 ,請使用下列指令:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'",
"type":"'"$ENVIRONMENT_TYPE "'"
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name":"'"$ENVIRONMENT_NAME "'",
"type":"'"$ENVIRONMENT_TYPE "'"
}'
Apigee 會建立新環境。
繼續操作前,請先呼叫 Environments API ,確認 Apigee 已完成建立新環境:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments"
資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments"
Apigee 會回應可用環境清單,例如,如果環境名稱為 test
,Apigee 會回應以下內容:
[
"test"
]
提示: 您可以傳送下列指令,檢查特定環境的狀態:
沒有資料落地:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME "
資料落地:
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME "
Apigee 只會回應該環境的詳細資料,例如:
{
"name": "my-cloud-project",
"createdAt": "1592589683002",
"lastModifiedAt": "1592589683002",
"state": "ACTIVE"
}
將新環境附加至執行階段執行個體:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments" \
-X POST -H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
這項作業可能需要幾分鐘才能完成。如要檢查附件是否已完成,請執行以下指令:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments"
資料落地
curl -i -H "Authorization: Bearer $AUTH" \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances/$INSTANCE_NAME /attachments"
當您看到類似以下的輸出內容時,即可繼續下一個步驟:
{
"attachments": [
{
"name": "ed628782-c893-4095-b71c-f4731805290a",
"environment": "test",
"createdAt": "1641604447542"
}
]
}
使用下列指令建立新的環境群組。詳情請參閱「關於環境和環境群組 」一文:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name": "'"$ENV_GROUP_NAME "'",
"hostnames":["'"$ENV_GROUP_HOSTNAME "'"]
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups" \
-H "Authorization: Bearer $AUTH " \
-X POST \
-H "Content-Type:application/json" \
-d '{
"name": "'"$ENV_GROUP_NAME "'",
"hostnames":["'"$ENV_GROUP_HOSTNAME "'"]
}'
提示: 將環境連結至群組 ,只會讓該環境中的 Proxy 可透過群組中的主機名稱進行路由。
等待作業完成,您可以使用以下要求查看新群組的狀態:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME"
資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME"
使用下列指令,將新環境連結至新環境群組:
沒有資料落地
curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments" \
-X POST \
-H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
資料落地
curl "https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments" \
-X POST \
-H "Authorization: Bearer $AUTH " \
-H "content-type:application/json" \
-d '{
"environment":"'"$ENVIRONMENT_NAME "'"
}'
如要查看作業狀態,請呼叫這個 API:
沒有資料落地
curl -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments"
資料落地
curl -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups/$ENV_GROUP_NAME /attachments"
在這個步驟中,您會設定用戶端應用程式與 Apigee 的通訊方式。用戶端至 Apigee 的流量也稱為「北向」流量。北向設定選項包括:前往要使用的設定選項,然後執行該選項的步驟:
存取權類型
設定和部署程序說明
內部虛擬私有雲對等互連
只允許內部存取 API 代理程式。
您必須在網路中建立新的 VM,並連線至該 VM。您可以透過新的 VM 將要求傳送至 Apigee API Proxy。
外部 (搭配 MIG)
允許外部存取 API 代理程式。
使用受管理的執行個體群組 (MIG),將來自全域負載平衡器後端服務的 API 流量傳送至 Apigee。在這種情況下,Apigee 只能連線至已建立對等關係的虛擬私有雲。這項設定可讓您從任何可連上網路的電腦傳送 Apigee API Proxy 要求。
內部與 PSC (新)
使用 Private Service Connect (PSC),僅允許從任何 Google Cloud 專案內部存取 API 代理程式。
PSC 可讓服務供應商 (Apigee) 與服務用戶 (對等互連的 VPC 專案和/或您控制的一或多個其他 Cloud 專案) 之間建立私人連線。使用這種方法時,要求會經過服務端點或區域性內部負載平衡器,連結至單一連結點,稱為服務連結點 。這項設定可讓內部用戶端從任何可連網的電腦傳送 Apigee API Proxy 要求。
外部 (使用 PSC) (新功能)
使用 Private Service Connect (PSC) 允許外部存取 API 代理程式。
使用 Private Service Connect (PSC) 啟用服務供應者 (Apigee) 和服務使用者 (對等互連的 VPC 專案和/或您控制的一或多個其他雲端專案) 之間的私人連線。使用這種方法時,要求會經過全域外部負載平衡器或區域性外部負載平衡器,傳送至單一連結點,稱為服務連結 。這項設定可讓您從任何可連上網路的電腦傳送 Apigee API Proxy 要求。
下文將說明各個路由方法。
內部路由 (虛擬私有雲)
如要將流量從內部用戶端路由至 Apigee,您可以選擇是否要使用 TLS 終止:
TLS 選項: 如要透過已啟用 TLS 的內部用戶端發出 API Proxy 呼叫,您有兩種選擇:
(選項 1) 設定內部負載平衡器 (ILB):
在專案中建立代管執行個體群組 (MIG)。如要建立 MIG,請按照「外部路由 (MIG) 」分頁中的 8a 、8b 和 8c 的步驟操作。
請建立並設定內部 HTTPS(S) 負載平衡器 (ILB),並將您建立的 MIG 附加至 ILB 的後端服務,如
使用 VM 執行個體群組後端設定內部 HTTP(S) 負載平衡 一文所述。透過 ILB 設定,您可以完全控管 ILB 使用的 CA 憑證。
請參閱「
呼叫僅限內部存取的 API Proxy 」一文,測試設定。
(選項 2) 使用 Apigee 執行個體的內部預設完整網域名稱和內部負載平衡器 IP 位址。這種情況僅建議用於測試,不建議用於正式環境。在這種情況下,Apigee 會使用 Apigee 內部負載平衡器,並使用 Apigee 建立的自行簽署憑證,您無法變更這些憑證。請參閱「
呼叫僅限內部存取的 API Proxy 」。
非 TLS 選項: 如果您不需要啟用 TLS 終止,可以呼叫 API Proxy,讓用戶端停用 TLS。舉例來說,您可以使用 -k
選項搭配 cURL,停用 TLS。請參閱「
呼叫僅限內部存取的 API Proxy 」。
外部路由 (MIG)
本節說明如何設定路由,讓外部 使用者可透過受管理的執行個體群組 (MIG) 存取 API Proxy,從全球負載平衡器的後端服務傳送 API 流量至 Apigee。您必須先執行這項操作,才能從外部用戶端將要求傳送至 Apigee 執行階段執行個體。
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此項工作的必要權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「預先定義的角色 」和「存取路由權限 」。
注意: 如要設定多個區域,您必須 使用本文所述的指令列步驟。您只能透過佈建 UI 將一個 MIG 新增至全域負載平衡器。MIG 不是全域,而是區域性。因此,如果是多個地區,您必須為每個地區建立一個 MIG,並將這些 MIG 新增至全域負載平衡器的後端服務。
一般程序如下:
步驟 8a:為虛擬私有雲網路的子網路啟用私人 Google 存取權
步驟 8b:設定環境變數
步驟 8c:建立受控執行個體群組
步驟 8d:為負載平衡器建立 SSL 憑證和金鑰
步驟 8e:建立全球負載平衡器
步驟 8f:取得保留 IP 位址並建立防火牆規則
我們會在後續章節中說明每個步驟。
步驟 8a:為虛擬私有雲網路的子網路啟用私人 Google 存取權
如要為虛擬私有雲網路的子網路啟用私人 Google 存取權 ,請按照「啟用私人 Google 存取權 」一文中的步驟操作。
注意: 如果您要進行多區域設定,請為每個區域執行這個步驟一次。
步驟 8b:設定環境變數
多區域 :多區域設定需要為每個區域建立專屬的 MIG。如果您要設定多個區域,請針對每個區域重複執行步驟 8b 和 8c,並替換每個區域的適當變數。
本節的操作說明會使用環境變數參照重複使用的字串。建議您先設定下列項目,再繼續操作:
MIG_NAME =apigee-mig-MIG_NAME # You can choose a different name if you like
VPC_NAME =default # If you are using a shared VPC , use the shared VPC name
VPC_SUBNET =default # Private Google Access must be enabled for this subnet
REGION =RUNTIME_REGION # The same region as your Apigee runtime instance
APIGEE_ENDPOINT =APIGEE_INSTANCE_IP
# See the tip below for details on getting this IP address value
您將在後續程序中多次使用這些變數。如果您想設定多個區域,請為每個區域建立專屬值的變數。
步驟 8c:建立代管執行個體群組
多區域 :多區域設定需要為每個區域建立專屬的 MIG。如果您要設定多個區域,請針對每個區域重複執行步驟 8b 和 8c,並替換每個區域的適當變數。在這個步驟中,您將建立及設定代管執行個體群組 (MIG)。在後續步驟中,您會將 MIG 新增至已連結至全域負載平衡器的後端服務。您必須使用 MIG,才能將 API 流量從全域負載平衡器的後端服務傳送至 Apigee。
建立 MIG 的步驟如下:
執行下列指令,建立執行個體範本 。
gcloud compute instance-templates create $MIG_NAME \
--project $PROJECT_ID \
--region $REGION \
--network $VPC_NAME \
--subnet $VPC_SUBNET \
--tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
--machine-type e2-medium --image-family debian-12 \
--image-project debian-cloud --boot-disk-size 20GB \
--no-address \
--metadata ENDPOINT=$APIGEE_ENDPOINT ,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh
如您從這項指令中看到,機器的類型為 e2-medium
。這些電腦執行 Debian 12,且磁碟空間為 20 GB。startup-script.sh
指令碼會設定 MIG,將負載平衡器的入站流量轉送至 Apigee 執行個體。
執行下列指令,建立代管執行個體群組 :
gcloud compute instance-groups managed create $MIG_NAME \
--project $PROJECT_ID --base-instance-name apigee-mig \
--size 2 --template $MIG_NAME --region $REGION
執行下列指令,為群組設定自動調度資源 :
注意: 採用 e2-medium 執行個體的地區 MIG 最多可支援 6 Gbps。如果這項設定無法滿足處理量需求,請考慮擴充 VM 和/或增加複本數量。
gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
--project $PROJECT_ID --region $REGION --max-num-replicas 3 \
--target-cpu-utilization 0.75 --cool-down-period 90
執行下列指令,定義命名通訊埠:
gcloud compute instance-groups managed set-named-ports $MIG_NAME \
--project $PROJECT_ID --region $REGION --named-ports https:443
步驟 8d:為負載平衡器建立 SSL 憑證和金鑰
無論是在單一或多個區域安裝,您只需建立一次憑證。在後續步驟中,您將這些憑證與負載平衡器的目標 HTTPS Proxy 建立關聯。
您可以使用下列方式建立憑證:
如要進一步瞭解如何為 Google Cloud 負載平衡器建立及使用 SSL 憑證,請參閱「SSL 憑證 」和「SSL 憑證總覽 」。
在以下範例中,我們會建立 Google 代管的 SSL 憑證:
建立下列環境變數:
CERTIFICATE_NAME =YOUR_CERT_NAME
DOMAIN_HOSTNAME =YOUR_DOMAIN_HOSTNAME
將 DOMAIN_HOSTNAME
設為您註冊的有效網域主機名稱。在後續步驟中,您將取得負載平衡器的 IP 位址,並更新網域 A 記錄,以便指向該位址。舉例來說,網域主機名稱可能如下所示:foo.example.com
。
執行
gcloud compute ssl-certificates create 指令:
gcloud compute ssl-certificates create $CERTIFICATE_NAME \
--domains=$DOMAIN_HOSTNAME \
--project $PROJECT_ID \
--global
佈建憑證最多可能需要一小時的時間。如要檢查佈建作業的狀態,請執行下列指令:
gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
--global \
--format="get(name,managed.status, managed.Status)"
注意: 您可以為環境群組主機名稱建立多個 DNS A 記錄,這些記錄都會指向相同的負載平衡器 IP 位址。
步驟 8e:建立全域負載平衡器
建立健康狀態檢查 :
gcloud compute health-checks create https HEALTH_CHECK_NAME \
--project $PROJECT_ID --port 443 --global \
--request-path /healthz/ingress
您將使用這項健康狀態檢查,確保後端服務正在執行。如要針對特定 Proxy 設定更進階的健康狀態檢查,請參閱「執行健康狀態檢查 」一文。
注意: 如果您在嘗試建立健康狀態檢查時收到以下錯誤訊息:
ERROR: unrecognized arguments: --global,
請嘗試使用 gcloud components update
指令更新 gcloud
。
建立後端服務 :
gcloud compute backend-services create PROXY_BACKEND_NAME \
--project $PROJECT_ID \
--protocol HTTPS \
--health-checks HEALTH_CHECK_NAME \
--port-name https \
--timeout 302s \
--connection-draining-timeout 300s \
--global
注意: 如 Apigee 端點屬性參考資料 所述,Apigee 的傳入 (內部負載平衡器) 預設逾時時間為 300 秒。將負載平衡器的 backend-services 逾時時間設為 302 秒,即可在發生長時間交易的情況下,讓 backend-services 指令在 Apigee 中完全完成。如果將此值設為較低的值 (例如 60 秒),負載平衡器可能會在要求完成前逾時,導致產生 502 回應。
使用下列指令將 MIG 新增至後端服務:
多區域: 如要設定多區域,您必須為每個區域建立個別的 MIG,然後重複執行這個步驟,將每個 MIG 新增至後端服務。請務必為每個區域替換適當的 REGION
和 MIG_NAME
變數。
gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
--project $PROJECT_ID --instance-group $MIG_NAME \
--instance-group-region $REGION \
--balancing-mode UTILIZATION --max-utilization 0.8 --global
使用下列指令建立負載平衡網址對應 :
gcloud compute url-maps create MIG_PROXY_MAP_NAME \
--project $PROJECT_ID --default-service PROXY_BACKEND_NAME
使用下列指令建立負載平衡目標 HTTPS Proxy :
gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
--project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
--ssl-certificates $CERTIFICATE_NAME
步驟 8f:取得保留的 IP 位址並建立防火牆規則
您必須為負載平衡器指派 IP 位址,然後建立規則,讓負載平衡器存取 MIG。無論是在單一或多個區域安裝,這個步驟只需執行一次。
為負載平衡器保留 IP 位址 :
gcloud compute addresses create ADDRESSES_NAME \
--project $PROJECT_ID \
--ip-version=IPV4 \
--global
使用下列指令建立通用轉送規則 :
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
--project $PROJECT_ID --address ADDRESSES_NAME --global \
--target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
執行下列指令,取得保留的 IP 位址:
gcloud compute addresses describe ADDRESSES_NAME \
--project $PROJECT_ID --format="get(address)" --global
重要步驟: 前往管理 DNS 記錄的網站、DNS 主機或 ISP,確認網域的 DNS 記錄解析為 Google Cloud 負載平衡器的 IP 位址。這個位址是上一個步驟傳回的 IP 值。詳情請參閱「
更新 DNS A 和 AAAA 記錄,指向負載平衡器的 IP 位址 」。
使用下列指令建立防火牆規則,讓負載平衡器存取 MIG:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
--project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
--source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy
請注意,IP 位址範圍 130.211.0.0/22
和 35.191.0.0/16
是 Google 負載平衡器的來源 IP 位址範圍。這項防火牆規則可讓 Google Cloud Load Balancing 向 MIG 提出健康狀態檢查要求。
Apigee 佈建程序已完成。請參閱「部署範例 Proxy 」一文。
內部轉送 (PSC)
本節說明如何使用 Private Service Connect (PSC),僅允許任何 Google Cloud 專案的內部存取 API 代理程式。
您可以透過 PSC 設定內部存取權限,方法有兩種:
服務端點 :要求會透過服務端點傳送至單一連結點,稱為服務連結 。
內部區域負載平衡器 :要求會經過區域內部 HTTP(S) 負載平衡器。另請參閱「全球性與地區性負載平衡 」。
請選取下方分頁標籤,然後按照步驟操作:
服務端點
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此項工作的必要權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「預先定義的角色 」和「存取路由權限 」。
為服務連結建立 PSC 服務端點
從先前建立的執行個體取得服務附件:
沒有資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
在以下輸出結果範例中,serviceAttachment
值以粗體顯示:
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1 "
}
]
}
注意: 您用來建立 Apigee 機構 的專案 ID 一律會顯示在 consumerAcceptList
清單中。在上方範例輸出內容中,這是清單中唯一的專案。
建立 PSC 服務端點,指向您在先前步驟中從執行個體回應主體取得的服務附件,如「建立 Private Service Connect 端點 」一文所述。
如要測試設定,請參閱「
呼叫僅限內部存取的 API Proxy 」。
內部區域性負載平衡器
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此項工作的必要權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「預先定義的角色 」和「存取路由權限 」。
限制: 請注意 PSC 設定的下列限制:
此設定不支援全域外部 HTTP(S) 負載平衡器 (傳統版) 。
對於有多個 PSC NEG 的備援機制,系統不支援主動健康狀態檢查。請改用異常值偵測功能 。
限制適用於可透過 PSC 連線至 Apigee 執行個體的 Google Cloud 專案數量,以及每個專案可擁有的 PSC NEG 連線數量。詳情請參閱「
Private Service Connect (PSC) 限制 」一文。
如果 Google Cloud 專案從 consumerAcceptList
中移除,該移除專案中現有的 PSC NEG 仍會繼續運作。不過,系統會拒絕任何新的 NEG。如果您從 consumerAcceptList
中移除相關聯的專案,必須刪除現有的 NEG。或者,您也可以重新建立 Apigee 執行個體,這樣一來 Apigee 專案中的服務附件也會重新建立。
步驟 8a:設定環境變數
本節的操作說明會使用環境變數參照重複使用的字串。請確認您已在「定義環境變數 」中設定變數。
此外,請設定下列環境變數:
提示: 請將環境變數儲存在文字檔案中,以便在需要時輕鬆還原。
NEG_NAME=YOUR_NEG_NAME "
TARGET_SERVICE=YOUR_TARGET_SERVICE "
NETWORK_NAME=YOUR_NETWORK_NAME "
SUBNET_NAME=YOUR_SUBNET_NAME "
其中:
NEG_NAME :網路端點群組的名稱。
TARGET_SERVICE :您要連線的服務附件。例如:projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
NETWORK_NAME :(選用) 建立 NEG 的網路名稱。如果省略這個參數,系統會使用 default
專案網路。
SUBNET_NAME :用於與內容供應者建立私人連線的子網路名稱。子網路大小可以很小:PSC NEG 只需要一個子網路的 IP。對於 Apigee,每個區域只需要一個 PSC NEG。子網路可供 VM 或其他實體共用和使用。如果未指定子網路,網路端點可能會屬於建立網路端點群組的區域中任何子網路。注意: 如果您指定 --network
參數,就必須一併指定 --subnet
。
步驟 8b:建立僅限 Proxy 的子網路
gcloud compute networks subnets create testproxyonlysubnet \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$RUNTIME_REGION --network=$NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
步驟 8c:建立網路端點群組 (NEG)
從先前建立的執行個體取得服務附件:
沒有資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
在以下輸出結果範例中,serviceAttachment
值以粗體顯示:
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
注意: 您用來建立 Apigee 機構 的專案 ID 一律會顯示在 consumerAcceptList
清單中。在上方範例輸出內容中,這是清單中唯一的專案。
建立 Private Service Connect NEG,指向您在上一個步驟中從執行個體回應主體取得的服務附件。
gcloud compute network-endpoint-groups create $NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=$TARGET_SERVICE \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
其中 $PROJECT_ID 可以是已與 Apigee 機構相關聯的 Cloud 專案,或是在 Apigee 執行階段執行個體建立 時,consumerAcceptlist
中包含的 Cloud 專案。
步驟 8d:設定區域內部負載平衡器
為負載平衡器保留內部 IPv4 位址。
gcloud compute addresses create ADDRESS_NAME \
--ip-version=IPV4 --subnet=$SUBNET_NAME \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
將 ADDRESS_NAME 替換為 IP 位址資源的名稱。
執行下列指令,查看保留的 IP 位址:
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION --project=$PROJECT_ID
為 NEG 建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
將 BACKEND_SERVICE_NAME 替換為後端服務的名稱。
將 NEG 新增至後端服務:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=$NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
更改下列內容:
NEG_NAME :網路端點群組的名稱。
將 BACKEND_SERVICE_NAME 改為後端服務的名稱。
如要建立 HTTPS 負載平衡器,您必須在 HTTPS 目標 Proxy 中使用 SSL 憑證資源 。
使用這個指令建立自行管理的 SSL 憑證資源。如要建立自行管理的 SSL 憑證,您需要本機私密金鑰檔案和本機憑證檔案。如果您需要建立這些檔案,請參閱使用自行管理的 SSL 憑證的第 1 步驟 。
注意: 內部區域負載平衡器不支援 Google 代管憑證。
gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
更改下列內容:
CERTIFICATE :憑證的名稱。
LB_CERT :自管憑證的 PEM 格式憑證檔案路徑。
LB_PRIVATE_KEY :自管憑證的 PEM 格式私密金鑰檔案路徑。
為負載平衡器建立網址對應。
網址對應必須參照預設後端服務。將剛剛建立的後端服務設為預設。
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID
更改下列內容:
URL_MAP_NAME :網址對應項目的名稱。
DEFAULT_BACKEND_SERVICE_NAME :負載平衡器的預設後端服務名稱。如果沒有主機規則與要求的主機名稱相符,系統就會使用預設值。
使用 SSL 憑證資源建立目標 HTTPS Proxy。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME \
--ssl-certificates=CERTIFICATE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
更改下列內容:
PROXY_NAME :目標 HTTPS Proxy 的名稱。
URL_MAP_NAME :網址對應項目的名稱。
CERTIFICATE :憑證資源的名稱。
建立轉送規則。
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=INTERNAL_MANAGED \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 \
--target-https-proxy-region=$RUNTIME_REGION \
--region=$RUNTIME_REGION \
--project=$PROJECT_ID \
--network=$NETWORK_NAME \
--subnet=$SUBNET_NAME
更改下列內容:
FWD_RULE :轉送規則的名稱。
ADDRESS_NAME :您保留用於轉送規則的 IP 位址資源。
PROXY_NAME :目標 HTTPS Proxy 的名稱。
NETWORK_NAME :(選用) 建立 NEG 的網路名稱。如果省略這個參數,系統會使用 default
專案網路。
SUBNET_NAME :用於與內容供應者建立私人連線的子網路名稱。注意: 如果您指定 --network
參數,就必須一併指定 --subnet
。
Apigee 佈建程序已完成。請參閱「部署範例 Proxy 」一文。
外部轉送 (PSC)
本節說明如何使用
Private Service Connect (PSC) 設定外部路由,讓 Apigee 與您控管的 VPC 之間進行通訊。您必須先執行這項操作,才能從外部用戶端將要求傳送至 Apigee 執行階段執行個體。
這項工作需要的權限
您可以為 Apigee 佈建工具提供預先定義的角色,其中包含完成此工作所需的權限,或是提供更精細的權限,以提供必要的最低權限。請參閱「預先定義的角色 」和「存取路由權限 」。
限制: 請注意 PSC 設定的下列限制:
此設定不支援全域外部 HTTP(S) 負載平衡器 (傳統版) 。
對於有多個 PSC NEG 的備援機制,系統不支援主動健康狀態檢查。請改用異常值偵測功能 。
限制適用於可透過 PSC 連線至 Apigee 執行個體的 Google Cloud 專案數量,以及每個專案可擁有的 PSC NEG 連線數量。詳情請參閱「
Private Service Connect (PSC) 限制 」一文。
如果 Google Cloud 專案從 consumerAcceptList
中移除,該移除專案中現有的 PSC NEG 仍會繼續運作。不過,系統會拒絕任何新的 NEG。如果您從 consumerAcceptList
中移除相關聯的專案,必須刪除現有的 NEG。或者,您也可以重新建立 Apigee 執行個體,這樣一來 Apigee 專案中的服務附件也會重新建立。
步驟 8b:建立 NEG 並設定負載平衡器
您可以建立全域或區域性負載平衡器。
全域外部負載平衡器
設定全域外部 HTTP(S) 負載平衡器 (負載平衡配置方案設為 EXTERNAL_MANAGED
)。
雖然 Private Service Connect NEG 是區域性,但這項設定中的所有其他負載平衡元件都是全域性。
請確認您已在「定義環境變數 」中設定環境變數。
從先前建立的執行個體取得服務附件:
沒有資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
在以下輸出結果範例中,serviceAttachment
值以粗體顯示:
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
注意: 您用來建立 Apigee 機構 的專案 ID 一律會顯示在 consumerAcceptList
清單中。在上方範例輸出內容中,它是清單中唯一的專案。
建立 Private Service Connect NEG,指向您在先前步驟中從執行個體回應主體取得的服務附件。
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=$RUNTIME_LOCATION \
--network=NETWORK_NAME \
--subnet=SUBNET_NAME \
--project=$PROJECT_ID
更改下列內容:
NEG_NAME :網路端點群組的名稱。
TARGET_SERVICE :您要連線的服務附件。使用上一個指令傳回的服務附件值。例如:
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
NETWORK_NAME :(選用) 建立 NEG 的網路名稱。如果省略這個參數,系統會使用 default
專案網路。
SUBNET_NAME :用於與內容供應者建立私人連線的子網路名稱。子網路大小可以很小:PSC NEG 只需要一個子網路的 IP。對於 Apigee,每個區域只需要一個 PSC NEG。子網路可供 VM 或其他實體共用和使用。如果未指定子網路,網路端點可能會屬於網路端點群組建立所在地區的任何子網路。注意: 如果您指定 --network
參數,就必須一併指定 --subnet
。
$PROJECT_ID 已與 Apigee 機構建立關聯的 Cloud 專案,或是在 Apigee 執行階段執行個體建立 時,consumerAcceptlist
中包含的 Cloud 專案。如果您尚未建立環境變數,請建立一個來儲存專案 ID,因為後續的大部分指令都會使用這個變數。
為負載平衡器保留全域外部 IPv4 位址。
gcloud compute addresses create ADDRESS_NAME \
--ip-version=IPV4 --global --project=$PROJECT_ID
將 ADDRESS_NAME 替換為 IP 位址資源的名稱。
執行下列指令,查看保留的 IP 位址:
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --global --project=$PROJECT_ID
為 NEG 建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global --project=$PROJECT_ID
將 BACKEND_SERVICE_NAME 替換為後端服務名稱。
將 NEG 新增至後端服務。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--network-endpoint-group-region=REGION \
--global --project=$PROJECT_ID
更改下列內容:
BACKEND_SERVICE_NAME :後端服務名稱。
NEG_NAME :網路端點群組的名稱。
REGION :網路端點群組的區域。
為負載平衡器建立網址對應。
網址對應必須參照預設後端服務。將剛剛建立的後端服務設為預設。
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--global --project=$PROJECT_ID
更改下列內容:
URL_MAP_NAME :網址對應項目的名稱。
DEFAULT_BACKEND_SERVICE_NAME :負載平衡器的預設後端服務名稱。如果沒有主機規則與要求的主機名稱相符,系統就會使用預設值。
建立目標 HTTPS Proxy。
如要建立 HTTPS 負載平衡器,您必須在 HTTPS 目標 Proxy 中使用SSL 憑證資源 。您可以使用 Google 代管的 SSL 憑證或自行管理的 SSL 憑證建立 SSL 憑證資源。建議您使用 Google 代管的憑證,因為 Google Cloud 會自動取得、管理及更新這些憑證。
如要建立 Google 代管的憑證,您必須擁有網域 。
請使用下列指令建立 Google 代管的 SSL 憑證資源:
gcloud compute ssl-certificates create CERTIFICATE \
--domains DOMAIN --project=$PROJECT_ID
更改下列內容:
CERTIFICATE :憑證的名稱。
DOMAIN :負載平衡器的網域名稱。
使用這個指令建立自行管理的 SSL 憑證資源。如要建立自行管理的 SSL 憑證,您需要本機私密金鑰檔案和本機憑證檔案。如果您需要建立這些檔案,請參閱使用自行管理的 SSL 憑證的第 1 步驟 。
gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY --project=$PROJECT_ID
更改下列內容:
CERTIFICATE :憑證的名稱。
LB_CERT :自管憑證的 PEM 格式憑證檔案路徑。
LB_PRIVATE_KEY :自管憑證的 PEM 格式私密金鑰檔案路徑。
使用 SSL 憑證資源建立目標 HTTPS Proxy。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME \
--ssl-certificates=CERTIFICATE --project=$PROJECT_ID
更改下列內容:
PROXY_NAME :目標 HTTPS Proxy 的名稱。
URL_MAP_NAME :網址對應項目的名稱。
CERTIFICATE :憑證資源的名稱。
建立轉送規則。
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 \
--global --project=$PROJECT_ID
更改下列內容:
FWD_RULE :轉送規則的名稱。
ADDRESS_NAME :您保留用於轉送規則的 IP 位址資源。
PROXY_NAME :目標 HTTPS Proxy 的名稱。
區域外部負載平衡器
設定區域型外部 HTTP(S) 負載平衡器。另請參閱外部 HTTP(S) 負載平衡器總覽 。
請確認您已在「定義環境變數 」中設定變數。
建立僅限 Proxy 的子網路:
gcloud compute networks subnets create SUBNET_NAME \
--purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \
--region=$RUNTIME_LOCATION --network=NETWORK_NAME \
--range=100.0.0.0/24 --project=$PROJECT_ID
更改下列內容:
SUBNET_NAME :子網路名稱。
(選用) NETWORK_NAME :建立子網路的網路名稱。如果省略這個參數,系統會使用預設專案網路。
從先前建立的執行個體取得服務附件:
沒有資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
資料落地
curl -i -X GET -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /instances"
在以下輸出範例中,serviceAttachment
值以粗體顯示:
{
"instances" : [
{
"name" : "us-west1" ,
"location" : "us-west1" ,
"host" : "10.82.192.2" ,
"port" : "443" ,
"createdAt" : "1645731488019" ,
"lastModifiedAt" : "1646504754219" ,
"diskEncryptionKeyName" : "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek" ,
"state" : "ACTIVE" ,
"peeringCidrRange" : "SLASH_22" ,
"runtimeVersion" : "1-7-0-20220228-190814" ,
"ipRange" : "10.82.192.0/22,10.82.196.0/28" ,
"consumerAcceptList" : [
"875609189304"
],
"serviceAttachment" : "projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7 "
}
]
}
注意: 您用來建立 Apigee 機構 的專案 ID 一律會顯示在 consumerAcceptList
清單中。在上方範例輸出內容中,這是清單中唯一的專案。
建立網路端點群組。
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=$RUNTIME_LOCATION --project=$PROJECT_ID
更改下列內容:
NEG_NAME :網路端點群組的名稱。
TARGET_SERVICE :您要連線的服務附件名稱。例如:projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
為 NEG 建立後端服務。
gcloud compute backend-services create BACKEND_SERVICE_NAME \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
將 BACKEND_SERVICE_NAME 替換為後端服務名稱。
將 NEG 新增至後端服務。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
--network-endpoint-group=NEG_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
更改下列內容:
BACKEND_SERVICE_NAME :後端服務名稱。
NEG_NAME :網路端點群組的名稱。
為負載平衡器建立網址對應。
網址對應必須參照預設後端服務。將剛剛建立的後端服務設為預設。
gcloud compute url-maps create URL_MAP_NAME \
--default-service=DEFAULT_BACKEND_SERVICE_NAME \
--region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
更改下列內容:
URL_MAP_NAME :網址對應項目的名稱。
DEFAULT_BACKEND_SERVICE_NAME :負載平衡器的預設後端服務名稱。如果沒有主機規則與要求的主機名稱相符,系統就會使用預設值。
建立目標 HTTPS Proxy。
如要建立 HTTPS 負載平衡器,您必須在 HTTPS 目標 Proxy 中使用 SSL 憑證資源 。
使用這個指令建立自行管理的 SSL 憑證資源。如要建立自行管理的 SSL 憑證,您需要本機私密金鑰檔案和本機憑證檔案。如果您需要建立這些檔案,請參閱使用自行管理的 SSL 憑證的第 1 步驟 。
注意: 內部區域負載平衡器不支援 Google 代管憑證。
gcloud compute ssl-certificates create CERTIFICATE \
--certificate LB_CERT \
--private-key LB_PRIVATE_KEY --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
更改下列內容:
CERTIFICATE :憑證的名稱。
LB_CERT :自管憑證的 PEM 格式憑證檔案路徑。
LB_PRIVATE_KEY :自管憑證的 PEM 格式私密金鑰檔案路徑。
使用 SSL 憑證資源建立目標 HTTPS Proxy。
gcloud compute target-https-proxies create PROXY_NAME \
--url-map=URL_MAP_NAME --region=$RUNTIME_LOCATION \
--ssl-certificates=CERTIFICATE --project=$PROJECT_ID
更改下列內容:
PROXY_NAME :目標 HTTPS Proxy 的名稱。
URL_MAP_NAME :網址對應項目的名稱。
CERTIFICATE :憑證資源的名稱。
為負載平衡器保留地區性外部位址。請注意,網路層級必須設為 STANDARD
。
gcloud compute addresses create ADDRESS_NAME \
--region=$RUNTIME_LOCATION --network-tier=STANDARD \
--project=$PROJECT_ID
將 ADDRESS_NAME 替換為 IP 位址資源的名稱。
執行下列指令,查看保留的 IP 位址:
gcloud compute addresses describe ADDRESS_NAME \
--format="get(address)" --region=$RUNTIME_LOCATION \
--project=$PROJECT_ID
建立轉送規則。
gcloud compute forwarding-rules create FWD_RULE \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=STANDARD \
--address=ADDRESS_NAME \
--target-https-proxy=PROXY_NAME \
--ports=443 --region=$RUNTIME_LOCATION \
--target-https-proxy-region=$RUNTIME_LOCATION --project=$PROJECT_ID
更改下列內容:
FWD_RULE :轉送規則的名稱。
ADDRESS_NAME :您保留用於轉送規則的 IP 位址資源。
PROXY_NAME :目標 HTTPS Proxy 的名稱。
Apigee 佈建程序已完成。請參閱「部署範例 Proxy 」一文。
步驟 9:部署範例 Proxy
這項工作需要的權限
建立及部署 Proxy 時,您必須具備一組最低限度的權限。如果您具備 Apigee 機構管理員角色,就能完成這項工作。如要瞭解可採用的其他角色,請參閱「
Apigee 角色 」。
從 GitHub 下載
Proxy 範例 。這個 Proxy 的目標是 httpbin.org 服務,這是常用的公開要求和回應服務。
使用 Apigee
apis
API 將 API Proxy 套件上傳至執行階段:
沒有資料落地
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
資料落地
curl -i -X POST -H "Authorization: Bearer $AUTH " \
-H "Content-Type:multipart/form-data" \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID/apis?name=httpbin&action=import" \
-F 'file=@PATH_TO_ZIP_FILE /httpbin_rev1_2020_02_02.zip'
其中 PATH_TO_ZIP_FILE 是包含下載 ZIP 檔案的目錄路徑。
將 API Proxy 部署 至先前建立的環境:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
資料落地
curl -i -H "Authorization: Bearer $AUTH " -X POST \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
使用這個 API 呼叫確認部署作業已成功完成:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /environments/$ENVIRONMENT_NAME /apis/httpbin/revisions/1/deployments"
呼叫 API Proxy:
執行下列指令,從任何網路啟用機器傳送要求至 API Proxy:
curl -i -H "Host: ENV_GROUP_HOSTNAME " \
"https://ENV_GROUP_HOSTNAME /httpbin/headers"
如有需要,您可以使用這個 API 取得 ENV_GROUP_HOSTNAME 值:
沒有資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
資料落地
curl -i -H "Authorization: Bearer $AUTH " \
"https://$CONTROL_PLANE_LOCATION -apigee.googleapis.com/v1/organizations/$PROJECT_ID /envgroups"
如果您收到類似 CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure
的錯誤訊息,請確認先前建立的 SSL 憑證是否已佈建。使用這個指令可查看
佈建狀態 。憑證佈建完成後,其狀態會是 ACTIVE
。
gcloud compute ssl-certificates describe CERTIFICATE \
--global \
--format="get(name,managed.status, managed.Status)"
成功後,範例 API 代理程式會傳回類似以下的回應:
{
"headers": {
"Accept": "*/*",
"Grpc-Trace-Bin": "AAD/8WC/I4AUSrMEch0E9yj+AYck1x9afwckAgA",
"Host": "httpbin.org",
"Traceparent": "00-fff160bf2380144ab304721d04f728fe-8724d71f5a7f0724-00",
"User-Agent": "curl/7.77.0",
"X-Amzn-Trace-Id": "Root=1-61d785ef-7613aa8a7fde7a910441fab9",
"X-B3-Sampled": "0",
"X-B3-Spanid": "8724d71f5a7f0724",
"X-B3-Traceid": "fff160bf2380144ab304721d04f728fe",
"X-Cloud-Trace-Context": "fff160bf2380144ab304721d04f728fe/9738144823944087332;o=0",
"X-Envoy-Attempt-Count": "1"
}
}
如要進一步瞭解如何部署 Proxy,包括其他疑難排解資訊,請參閱「
部署 API Proxy 」。
提供意見
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權 ,程式碼範例則為阿帕契 2.0 授權 。詳情請參閱《Google Developers 網站政策 》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-05-16 (世界標準時間)。
想進一步說明嗎?
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-05-16 (世界標準時間)。"],[[["This document details the command-line installation and configuration process for Apigee (excluding Apigee hybrid) on Google Cloud, covering both Subscription and Pay-as-you-go pricing models."],["The guide covers setting up necessary environment variables, enabling required APIs, creating the Apigee service identity, configuring service networking, creating an Apigee organization, and establishing a runtime instance and environment."],["It includes instructions for both no data residency and data residency configurations, incorporating the use of Customer-Managed Encryption Keys (CMEK) for enhanced security and organization policies."],["The configuration instructions include routing setup for client applications to connect to Apigee, covering internal (VPC peering or Private Service Connect) and external (Managed Instance Group or Private Service Connect) access options, including the use of load balancers."],["The document provides the steps to deploy a sample proxy, including downloading the proxy, uploading, deploying, confirming the deployment, calling the API, checking certificate provisioning, and updating the DNS A and AAAA records."]]],[]]