使用虛擬私有雲對等互連佈建評估機構

本頁面適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

步驟摘要

本文說明如何透過指令列安裝及設定 Apigee 評估機構 (或評估機構)。評估版機構會在 60 天後到期,且可能有其他限制。另請參閱 比較評估和付費機構

佈建步驟如下:

步驟 1:定義環境變數

設定 gcloud,並定義後續步驟中會用到的環境變數:

  1. 請務必完成「必要條件」一節中列出的所有條件。
  2. 您必須安裝 gcloud CLI。如果您需要安裝 gcloud CLI,請參閱「安裝 gcloud CLI」一文。
  3. 請按照「初始化 gcloud CLI」一節所述,初始化 gcloud CLI。如果 CLI 已初始化,請確認您在「先決條件」一節中建立的 Google Cloud 專案是 gcloud 的預設專案。
  4. 定義下列環境變數:
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    其中:

    • AUTH 會使用不記名憑證定義 Authentication 標頭。您會在呼叫 Apigee API 時使用這個標頭。請注意,憑證會在一段時間後到期,屆時您只需使用相同的指令重新產生憑證即可。詳情請參閱 print-access-token 指令的參考頁面。
    • PROJECT_ID 是您在必要條件中建立的 Cloud 專案 ID
    • RUNTIME_LOCATION 是 Apigee 執行個體所在的實際位置。如需可用執行階段位置的清單,請參閱 Apigee 位置

    • ANALYTICS_REGION 是 Apigee 數據分析資料的實際儲存位置。如需可用 Apigee API Analytics 區域的清單,請參閱 Apigee 位置

      RUNTIME_LOCATIONANALYTICS_REGION 可以是相同的區域,但不一定相同。不過,如果兩者相同,可能會帶來效能優勢。

  5. (選用) 透過回應您剛剛設定的值來檢查您的工作。請注意,如要在指令中使用變數,請在變數名稱前加上美元符號 ($)。
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    echo 指令的回應內容應如下所示:

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

步驟 2:啟用 API

  1. 如要使用 Apigee,您必須啟用幾個 Google Cloud API。執行 services enable 指令即可啟用:

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (選用) 如要檢查您的工作,請使用 services list 指令顯示所有已啟用的 API:

    gcloud services list

    回應會顯示所有已啟用的服務,包括您剛啟用的 API (Apigee、Service Networking、Cloud KMS 和 Compute Engine)。

步驟 3:設定服務網路

  1. 建立下列環境變數:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    其中:

    • RANGE_NAME 是您要建立的 IP 位址範圍名稱。您可以隨意命名範圍。例如:google-svcs
    • NETWORK_NAME 是應保留位址的網路資源名稱。Google 會為每個新專案建立預設網路 (名為 default),供您使用。不過,Google 不建議您將預設網路用於測試以外的用途。
  2. 建立 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 可讓您選擇為 /22 前置字元長度指定一或多個位址 IP。例如,如要分配 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 位址範圍後,這些位址會與專案建立關聯,直到您釋出為止。

  3. 建立 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 可讓您選擇為 /28 前置字元長度指定一或多個位址 IP。例如,如要分配 CIDR 區塊 192.168.0.0/28,請將位址指定為 192.168.0.0,並將前置字串長度指定為 28。另請參閱建立 IP 分配

    如果您未提供 --addresses 參數,gcloud 會為您選取可用的位址範圍。

  4. 使用下列指令將服務連線至網路:
    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 "operations/OPERATION_ID" finished successfully.

    其中 OPERATION_IDLRO (長時間執行作業) 的 UUID。

    Apigee 會在您的網路與 Google 服務之間建立連線,具體來說,Apigee 會透過 虛擬私有雲對等互連,將您的專案連結至 Service Networking API。Apigee 也會將 IP 位址與您的專案建立關聯。

步驟 4:建立機構

機構是 Apigee 中的頂層容器,其中包含所有 API 代理程式和相關資源。詳情請參閱「瞭解機構」。

  1. 使用 gcloud alpha apigee organizations 指令建立新的評估機構:
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    其中 --authorized-network 是自訂對等網路的名稱。例如:default

  2. 執行 provision 指令時,Google 會啟動 LRO 來建立評估機構。這項作業最多需要 40 分鐘才能完成。在此期間,gcloud 會顯示以下內容:

    Provisioning organization...

    建立評估機構及其相關的執行階段執行個體後,gcloud 會回應以下訊息:

    Provisioning organization...done.
  3. 如果您執行下列指令:

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    您應該會看到所有 UUID 都處於 FINISHED 狀態。例如:

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

步驟 5:設定轉送

決定是否允許外部存取或僅限內部存取:

存取權類型 設定和部署程序說明
內部

只允許內部存取 API 代理程式。

您必須在網路中建立新的 VM,並連線至該 VM。您可以透過新的 VM 將要求傳送至 Apigee API Proxy。

外部

允許外部存取 API 代理程式。

使用 Private Service Connect (PSC) 啟用服務供應者 (Apigee) 和服務使用者 (對等互連的 VPC 專案和/或您控制的一或多個其他雲端專案) 之間的私人連線。使用這種方法時,要求會經過全域外部負載平衡器,傳送至單一連結點,稱為「服務連結點」。這項設定可讓您從任何可連上網路的電腦傳送 Apigee API Proxy 要求。

下方操作說明的各個分頁中,都會顯示這些路由方法。

內部轉送

如果您使用指令列設定僅限內部存取的 API Proxy,則此步驟沒有任何工作可執行。您可以跳至步驟 6:呼叫範例 API proxy,向 API proxy 傳送要求。

外部轉送

本節說明如何使用 Private Service Connect (PSC) 設定外部路由,讓 Apigee 與您控管的 VPC 之間進行通訊。您必須先執行這項操作,才能從外部用戶端將要求傳送至 Apigee 執行階段執行個體。

外部設定步驟如下:

步驟 5a:建立網路端點群組 (NEG)
步驟 5b:設定負載平衡器

我們會在後續章節中說明每個步驟。

步驟 5a:建立網路端點群組 (NEG)

  1. 取得 Apigee 執行個體服務連結
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    在以下輸出結果範例中,serviceAttachment 值以粗體顯示:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. 建立 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
    • SUBNET_NAME:用於與內容供應者建立私人連線的子網路名稱。子網路大小可以很小:PSC NEG 只需要一個子網路的 IP。對於 Apigee,每個區域只需要一個 PSC NEG。子網路可供 VM 或其他實體共用和使用。如果未指定子網路,網路端點可能會屬於網路端點群組建立所在地區的任何子網路。

步驟 5b:設定負載平衡器

設定全域外部 HTTP(S) 負載平衡器 (負載平衡配置設為 EXTERNAL_MANAGED)。

雖然 Private Service Connect NEG 是區域性,但這項設定中的所有其他負載平衡元件都是全域性。

  1. 為負載平衡器保留全域外部 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
  2. 為 NEG 建立後端服務。
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. BACKEND_SERVICE_NAME 替換為後端服務名稱。

  4. 將 NEG 新增至後端服務:
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    更改下列內容:

    • BACKEND_SERVICE_NAME:後端服務名稱。
    • NEG_NAME:網路端點群組的名稱。
  5. 為負載平衡器建立網址對應。

    網址對應必須參照預設後端服務。將剛剛建立的後端服務設為預設。

    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:負載平衡器的預設後端服務名稱。如果沒有主機規則與要求的主機名稱相符,系統就會使用預設值。
  6. 為 HTTPS 目標 Proxy 建立 SSL 憑證。

    如要建立 HTTPS 負載平衡器,您必須在 HTTPS 目標 Proxy 中使用SSL 憑證資源。您可以使用 Google 代管的 SSL 憑證自行管理的 SSL 憑證建立 SSL 憑證資源。

    請使用下列指令建立 Google 代管的 SSL 憑證資源:

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    更改下列內容:

    • CERTIFICATE:憑證的名稱。
    • DOMAIN:您要用於外部負載平衡器的網域名稱。

    如要建立自行管理的 SSL 憑證,您需要本機私密金鑰檔案和本機憑證檔案。如需建立這些檔案,請參閱「使用自行管理的 SSL 憑證」。

    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 格式私密金鑰檔案路徑。
  7. 佈建憑證最多可能需要一小時,如要檢查佈建作業的狀態,請執行下列指令:

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. 將網域新增至為您建立的 Apigee 環境群組。環境群組的名稱為 eval-group
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. 檢查環境群組作業的狀態:
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. 使用 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:憑證資源的名稱。
  11. 建立轉送規則。
    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 的名稱。

Apigee 佈建程序已完成。

步驟 6:呼叫範例 API Proxy

在佈建期間,系統已為您建立並部署名為 hello-world 的 API Proxy。在這個步驟中,您將透過呼叫 Proxy 來測試新的 eval 組織。

呼叫內部路由 Proxy

如果您在步驟 5 中選擇內部路由選項,請按照「呼叫僅限內部存取的 API Proxy」中的步驟操作。

使用外部路由呼叫 Proxy

如果您在步驟 5 中選擇了外部轉送選項,請按照本節的步驟操作。

  1. 為網域設定 DNS 項目。您可以透過以下兩種方式完成此工作:
    • 在註冊商處建立指向網域的 A 記錄。舉例來說,如果您的網域是 sales.example.com,IP 為 10.23.0.2,請將 sales.example.com 的記錄指向 10.23.0.2 位址。

      執行下列指令,查看保留的 IP 位址:

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • 使用 Google Cloud DNS 將網址對應至 IP 位址。
  2. 確認已部署 hello-world Proxy:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. 呼叫 API Proxy:

    執行下列指令,從任何網路啟用機器傳送要求至 API Proxy:

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    其中 DOMAIN 是您放入憑證並新增至環境群組的網域,如步驟 5:設定路由所述。如有需要,您可以使用這個 API 從環境群組取得 DOMAIN 值:

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    成功後,範例 API 代理程式會傳回以下回應:

    Hello, Guest!

    疑難排解訣竅:

    如果您收到握手錯誤,請檢查 SSL 憑證的狀態。如要瞭解如何針對自行管理和 Google 代管的憑證進行疑難排解,請參閱「疑難排解 SSL 憑證」。

    請確認已為已註冊的網域建立 A 記錄,指向在步驟 5 中建立的全域外部 IPv4 位址 IP 位址。執行下列指令,查看保留的 IP 位址:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    如果無法解析網域設定,請嘗試使用以下指令呼叫 Proxy:

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

後續步驟:如要進一步瞭解如何建構及部署 API Proxy,請參閱「 建立第一個 API Proxy 總覽」。