在 GKE 上執行 App Engine 應用程式

本指南說明如何在 GKE 上執行 App Engine 彈性環境應用程式。如要在 GKE 上執行應用程式,您必須為其建立 Dockerfile,並使用 Cloud Build 建構容器,然後在 GKE 中執行該容器。這不需要修改任何程式碼。

事前準備

在按照本頁的說明進行操作前,請先採取下列步驟:

  1. 確認您的應用程式在 App Engine 彈性環境中成功部署及運作。

  2. 在這些操作說明中,您將使用在 App Engine 應用程式中所用的專案。如有需要,您隨時都可以建立及使用新的專案。

  3. Enable the GKE, Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. 下載並安裝 Google Cloud CLI,然後初始化 gcloud 工具: 下載 Google Cloud SDK

    或者,您可以使用已預先安裝 gcloud CLI、git 和其他功能 (例如語言支援、工具和編輯器) 的 Cloud Shell

  5. 安裝 kubectl 指令列工具:

    gcloud components install kubectl
    
  6. 下載並安裝 git

為 App Engine 應用程式建立 Dockerfile

按照「建立 Dockerfile」的說明,為應用程式建立 Dockerfile。

從 Dockerfile 建構容器

如要建構容器:

  1. 確認您位在含有 Dockerfile 的 App Engine 應用程式目錄中。

  2. gcloud 工具使用的預設專案變更為指向您正在使用的專案,以便在 GKE 中執行您的應用程式:

    gcloud config set project [YOUR-PROJECT-ID]
    

    [YOUR-PROJECT-ID] 替換為您的 GKE 專案 ID。

  3. 使用下列指令建構容器:

    gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
    

    [YOUR-PROJECT-ID] 替換為您 GKE 專案的專案 ID,並將 [YOUR-CONTAINER-NAME] 替換為您要使用的應用程式容器名稱。

  4. 容器可能需要一點時間才能建構完畢。成功建構完成後,畫面會顯示與下列內容類似的訊息:

    Created [https://cloudbuild.googleapis.com/v1/projects/YOUR-PROJECT-ID/builds/xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx].
    Logs are permanently available at [https://console.developers.google.com/logs/viewer?resource=build&project=YOUR-PROJECT-ID&filters=text:xxxx-xxx-xxx-xxxxxxxxxxxx]].
    
    ID  CREATE_TIME DURATION  SOURCE                                                     IMAGES                               STATUS
    xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx  2017-03-04T00:42:10+00:00  1M32S     gs://YOUR-PROJECT-ID_cloudbuild/source/xxxxxxx.08.tgz  gcr.io/YOUR-PROJECT-ID/YOUR-CONTAINER-NAME  SUCCESS<
    

    請記下容器名稱,您在 GKE 中執行容器時需指定容器名稱。

在 GKE 中執行應用程式

如要執行含有應用程式的容器,請按照下列步驟操作:

  1. 建立叢集 (這項作業可能需要幾分鐘的時間才能完成):

    gcloud container clusters create [YOUR-CLUSTER-NAME]
    

    [YOUR-CLUSTER-NAME] 替換為您要授予叢集的名稱。

  2. 透過指令列設定您的運算區域:

    gcloud config set compute/zone us-central1-b
    
  3. 確保 GKE kubectl 工具已獲得授權:

    gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
    

    按照系統提示對工具進行授權。

  4. 執行含有應用程式的容器:

    kubectl create deployment [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME]
    

    [YOUR-DEPLOYMENT-NAME] 替換為您使用的部署名稱,將 [YOUR-PROJECT-ID] 替換為您的 GKE 專案 ID,並將 [YOUR-CONTAINER-NAME] 替換為您為應用程式建立的容器名稱。

  5. 公開容器以提供存取:

    kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
    

    [YOUR-DEPLOYMENT-NAME] 替換為您在先前步驟中使用的名稱。您可能需要等待幾分鐘,才能查看外部 IP。

  6. 查看應用程式的外部 IP 位址:

    kubectl get service [YOUR-DEPLOYMENT-NAME]
    

    [YOUR-DEPLOYMENT-NAME] 替換成您在先前步驟中使用的名稱。如果 EXTERNAL IP 欄位是空白的,請先稍候一段時間再重新叫用指令。

  7. 查看在 GKE 中執行的應用程式:

    http://EXTERNAL-IP:8080
    

    EXTERNAL-IP 替換為您在上一個步驟中取得的外部 IP 位址。

您已成功在 GKE 上部署並執行 App Engine 應用程式!

後續步驟

建議您進一步瞭解 Kubernetes 和 kubectl 指令。Google Kubernetes Engine 使用 Kubernetes 進行容器的管理、部署和資源調度。如要進一步瞭解 Kubernetes,請參閱外部的 Kubernetes 網站

本指南使用 kubectl 指令列介面來管理 Kubernetes 叢集。如要進一步瞭解 kubectl,請參閱 kubectl 參考資料