在 GKE 上執行 App Engine 應用程式

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

事前準備

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

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

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

  3. Enable the GKE, Cloud Build APIs.

    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 參考資料