部署 API 後端

本頁面說明如何將您 API 的後端程式碼和可擴充服務 Proxy (ESP) 部署至 Google Kubernetes Engine 及 Compute Engine。

雖然部署步驟會因您 API 的託管平台而有所不同,但一定會有個步驟為 ESP 提供服務名稱,也會有個選項將 ESP 設定為使用最新部署的 Endpoints 服務設定。有了這項資訊,ESP 就可以取得您 API 的 Endpoints 設定,進而讓 ESP 代理要求和回應,以便 Cloud Endpoints 管理您的 API。

必備條件

本頁假設您已經:

準備進行部署

Compute Engine

如要讓 Endpoints 管理您的 API,您必須為您的 API 安裝並設定 ESP 及後端伺服器程式碼。此外,您也必須在您的 Compute Engine VM 執行個體上安裝 Docker,才能執行 Container Registry 中免費提供的 ESP Docker 映像檔。

部署之前的準備

在您將 API 和 ESP 部署到 Compute Engine 之前,請先完成以下步驟:

  1. 建立、設定和啟動您的 VM 執行個體
  2. 在您的 VM 執行個體上安裝 Docker Enterprise Edition (EE) 或 Docker Community Edition (CE)
  3. 為您的後端伺服器程式碼建立 Docker 容器
  4. 將容器推送至 Artifact Registry 或其他登錄檔。
  5. 確定您可以成功:

GKE

當您在 Google Cloud 主控台中建立叢集時,根據預設,授予叢集服務帳戶的 OAuth 範圍包含 Endpoints 要求的範圍:

  • Service Control:已啟用
  • Service Management:唯讀

使用 gcloud container clusters create 指令或使用第三方設定檔建立叢集時,請確認已指定下列範圍:

  • "https://www.googleapis.com/auth/servicecontrol"
  • "https://www.googleapis.com/auth/service.management.readonly"

詳情請參閱什麼是存取範圍?一節。

部署之前的準備

只要在您的部署資訊清單檔案中加入一個小區段,即可在您的容器叢集和容器化應用程式上執行 ESP Docker 映像檔。您必須先完成以下步驟才能將 API 和 ESP 部署至 GKE:

  1. 將您的容器化應用程式部署至容器叢集。GKE 說明文件中所述的一般步驟包括:

    1. 將您的應用程式封裝至 Docker 映像檔中。
    2. 將這個映像檔上傳至登錄檔。
    3. 建立容器叢集。
    4. 將您的應用程式部署至叢集。
    5. 將您的應用程式公開發佈到網際網路。
  2. 確定您可以成功:

    • 啟動 API 的伺服器。
    • 傳送要求至您的 API。

部署您的 API 和 ESP

Compute Engine

如何利用 Docker 將您的 API 和 ESP 部署至 Compute Engine

  1. 連線到您的 VM 執行個體。使用您的 VM 執行個體名稱取代 INSTANCE_NAME

    gcloud compute ssh INSTANCE_NAME
    
  2. 建立自己的容器網路,名稱為 esp_net

    sudo docker network create --driver bridge esp_net
    
  3. 執行後端伺服器程式碼的映像檔執行個體,並連線到 esp_net 容器網路:

    sudo docker run \
        --detach \
        --name=YOUR_API_CONTAINER_NAME \
        --net=esp_net \
        gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
    
    • 使用您的容器名稱取代 YOUR_API_CONTAINER_NAME
    • 將Google Cloud 專案 ID 替換為您在推送映像檔時使用的Google Cloud 。YOUR_PROJECT_ID
    • 使用您的映像檔名稱取代 YOUR_IMAGE
  4. 取得 API 的服務名稱。這是您在服務設定 YAML 檔案的 name 欄位中指定的名稱。

  5. 執行 ESP Docker 映像檔的執行個體:

    sudo docker run \
        --detach \
        --name=esp \
        --publish=80:9000 \
        --net=esp_net \
        gcr.io/endpoints-release/endpoints-runtime:1 \
        --service=SERVICE_NAME \
        --rollout_strategy=managed \
        --http2_port=9000 \
        --backend=grpc://YOUR_API_CONTAINER_NAME:8000
    
    • 使用您的服務名稱取代 SERVICE_NAME
    • 使用您的 API 容器名稱取代 YOUR_API_CONTAINER_NAME

    --rollout_strategy=managed 選項可將 ESP 設為使用最新部署的服務設定。指定此選項時,在您部署新服務設定後 5 分鐘內,ESP 會偵測到變更並自動開始使用新設定。建議您指定此選項而非讓 ESP 使用特定的設定 ID。

如果您需要將 ESP 設定為使用特定的設定 ID

  1. 加上 --version 選項並設定為特定的設定 ID

  2. 移除 --rollout_strategy=managed 選項或將 --rollout_strategy 設為 fixedfixed 選項會將 ESP 設定為使用您在 --version 中指定的服務設定。

  3. 再次執行 docker run 指令。

如果您同時指定 --rollout_strategy=managed--version 選項,則 ESP 一開始會使用您在 --version 中指定的設定,但隨後會在代管模式下執行並取得最新的設定。

建議您不要長時間將 ESP 設定為使用特定的設定 ID,否則在您部署更新的服務設定後,必須重新啟動 ESP 才能使用新的設定。

如何移除特定的設定 ID

  1. docker run 的 ESP 標記中,移除 --version 選項。

  2. 新增 --rollout_strategy=managed 選項。

  3. 如要重新啟動 ESP,請執行 docker run 指令。

如需啟動 ESP 時可指定的完整選項清單,請參閱 ESP 啟動選項一文。

GKE

如何將 ESP 部署至 GKE

  1. 取得您 API 的服務名稱

  2. 開啟您的部署資訊清單檔案 (稱為 deployment.yaml),並在 containers 區段中新增下列內容:

          containers:
          - name: esp
            image: gcr.io/endpoints-release/endpoints-runtime:1
            args: [
              "--http2_port=9000",
              "--service=SERVICE_NAME",
              "--rollout_strategy=managed",
              "--backend=grpc://127.0.0.1:8000"
            ]
            ports:
              - containerPort: 9000
    

    使用您的 API 服務名稱取代 SERVICE_NAME

  3. 使用 kubectl create 指令啟動 Kubernetes 服務:

        kubectl create -f deployment.yaml
    

如果您需要將 ESP 設定為使用特定的設定 ID

  1. 在您的部署資訊清單檔案中,新增 --version 選項並將其設定為特定的設定 ID

  2. 移除 --rollout_strategy=managed 或將 --rollout_strategy 設為 fixedfixed 選項會將 ESP 設定為使用您在 --version 中指定的服務設定。

  3. 啟動 Kubernetes 服務:kubectl create -f deployment.yaml

如果您同時指定 --rollout_strategy=managed--version 選項,則 ESP 一開始會使用您在 --version 中指定的設定,但隨後會在代管模式下執行並取得最新的設定。

建議您不要長時間將 ESP 設定為使用特定的設定 ID,否則在您部署更新的服務設定後,必須重新啟動 ESP 才能使用新的設定。

如何移除特定的設定 ID

  1. 在您的部署資訊清單檔案中,移除 --version 選項。

  2. 新增 --rollout_strategy=managed

  3. 啟動 Kubernetes 服務:kubectl create -f deployment.yaml

如需啟動 ESP 時可指定的完整選項清單,請參閱 ESP 啟動選項一文。

追蹤 API 活動

部署 ESP 和您的 API 後端後,您可以使用 curl 或 Postman 之類的工具,將要求傳送到您的 API。如果您未取得成功的回應,請參閱排解回應錯誤

傳送一些要求後,您可以:

後續步驟