部署 Endpoints 設定

OpenAPI 文件中設定 Cloud Endpoints 後,請部署此文件,讓 Endpoints 擁有管理您的 API 所需的資訊。如要部署 Endpoints 設定,請使用 gcloud endpoints services deploy 指令。這個指令使用了服務基礎架構,也就是 Google 的基礎服務平台。Endpoints 和其他服務都是使用這個基礎架構來建立和管理 API 及服務。本頁面說明如何將 OpenAPI 文件部署到 Endpoints。

必備條件

本頁假設您已經:

準備 Google Cloud CLI 以便部署

您可以使用 gcloud 指令列工具部署設定。如要進一步瞭解指令,請參閱 gcloud 參考資料

準備部署:

  1. 安裝並初始化 gcloud CLI
  2. 更新 gcloud CLI:
    gcloud components update
  3. 確認 gcloud CLI 已獲授權,可存取您的資料和服務:
    gcloud auth login

    系統將開啟新的瀏覽器分頁,並提示您選擇一個帳戶。

  4. 設定預設專案。將 [YOUR-PROJECT-ID] 替換為您的 GCP 專案 ID
    gcloud config set project [YOUR-PROJECT-ID]
  5. 如果您要將 API 後端部署到 Kubernetes 或 Kubernetes Engine,請透過以下指令取得新的使用者憑證,以用於應用程式預設憑證。您需要使用者憑證才能對 kubectl 進行授權。
    gcloud auth application-default login
    系統將開啟新的瀏覽器分頁,並提示您選擇一個帳戶。

驗證 openapi.json 語法

OpenAPI 文件檔案可採用 YAML 格式或JSON 格式。如果採用 JSON 格式,則建議您在部署檔案之前先驗證語法。如要確認您的 openapi.json 檔案是格式正確的 JSON 檔案,您可以在驗證 JSON 的文字編輯器 (例如 vim) 中開啟檔案,使用線上 JSON Linter 服務或使用 Python,例如:

python -m json.tool openapi.json

為方便閱讀,您可以美化 JSON 檔案:

python -m json.tool input.json > output.json

input.json 替換為 openapi.json 檔案的路徑。output.json 是已美化的 JSON 檔案。

驗證 OpenAPI 文件

Cloud Endpoints 目前並未支援所有的 OpenAPI 建構項目。您可以在進行部署前驗證 OpenAPI 文件。

如何驗證 OpenAPI 文件:

  1. 將目錄變更為包含 OpenAPI 文件的位置。

  2. 確認您要建立服務的 Google Cloud 專案。如果您要使用自訂網域名稱 (例如 myapi.example.com),請務必驗證執行下列指令所傳回的專案 ID,確保不會在錯誤的專案中建立服務。

    gcloud config list project
    

    如要變更預設的專案,請執行下列指令,並將 [YOUR_PROJECT_ID] 改成要建立服務的 Google Cloud 專案 ID:

    gcloud config set project [YOUR_PROJECT_ID]
    
  3. 執行下列指令,並將 [YOUR_OPENAPI_DOCUMENT] 改成描述您的 API 的 OpenAPI 文件名稱:

    gcloud endpoints services deploy [YOUR_OPENAPI_DOCUMENT] --validate-only
    

接著,gcloud 指令會呼叫 Service Management API,並使用您在 OpenAPI 文件 host 欄位中指定的名稱建立代管服務。指定 --validate-only 標記時,系統仍會建立服務,但不會部署設定。在不建立服務的情況下就無法驗證您的 OpenAPI 文件。雖然您可以刪除服務,但 Service Management 會在約 30 天內禁止您建立同名的服務。

部署 OpenAPI 文件

當您準備好部署 API 時,請執行 Google Cloud CLI,這會使用 Service Management 上傳您的 API 設定,並建立 (或更新) 代管服務。

如何部署 OpenAPI 文件:

  1. 將目錄變更為包含 OpenAPI 文件的位置。

  2. 請利用下列指令傳回的專案 ID 進行驗證,以確保系統沒有將服務建立在錯誤的專案中。

    gcloud config list project
    

    如要變更預設的專案,請執行下列指令,並將 [YOUR_PROJECT_ID] 改成要建立服務的 Google Cloud 專案 ID:

    gcloud config set project [YOUR_PROJECT_ID]
    
  3. 執行下列指令,並將 [YOUR_OPENAPI_DOCUMENT] 改成描述您的 API 的 OpenAPI 文件名稱:

    gcloud endpoints services deploy [YOUR_OPENAPI_DOCUMENT]
    

首次執行上述指令時,Service Management 會在預設專案中使用您在 OpenAPI 文件 host 欄位裡指定的名稱建立新的 Endpoints 服務,並上傳您的服務設定。

Service Management 在建立和設定服務時,會將資訊輸出至終端機。成功完成後,您會看到下列顯示服務設定 ID 和服務名稱的一行文字:

Service Configuration [2017-02-13r0] uploaded for service [echo-api.endpoints.example-project-12345.cloud.goog]

在上方範例中,2017-02-13r0 是服務設定 ID,echo-api.endpoints.example-project-12345.cloud.goog 則是服務名稱。

成功部署後,您可在 Google Cloud 主控台的「Endpoints」 >「Services」 頁面查看 API。

如果您收到錯誤訊息,請參閱 Endpoints 設定部署疑難排解一文。

重新部署

每次您變更 OpenAPI 文件的部分內容後,請務必再次部署,Endpoints 才能取得您的 API 服務設定的最新版本。如果您先前部署 ESP 時將 rollout 選項設為 managed,則無須重新部署或重新啟動 ESP。這個選項可將 ESP 設為使用最新部署的服務設定。指定此選項時,在您部署新服務設定後 5 分鐘內,ESP 會偵測到變更並自動開始使用新設定。建議您指定此選項而非讓 ESP 使用特定的設定 ID。

完成初始的 Endpoints 設定部署後,您可以將角色授予使用者、服務帳戶或群組,讓他們可以重新部署 Endpoints 設定。詳情請參閱授予及撤銷 API 的存取權

後續步驟