本指南說明如何在 GKE 上執行 App Engine 彈性環境應用程式。如要在 GKE 上執行應用程式,您必須為其建立 Dockerfile,並使用 Cloud Build 建構容器,然後在 GKE 中執行該容器。這不需要修改任何程式碼。
事前準備
在按照本頁的說明進行操作前,請先採取下列步驟:
確認您的應用程式在 App Engine 彈性環境中成功部署及運作。
在這些操作說明中,您將使用在 App Engine 應用程式中所用的專案。如有需要,您隨時都可以建立及使用新的專案。
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 theserviceusage.services.enable
permission. Learn how to grant roles.下載並安裝 Google Cloud CLI,然後初始化 gcloud 工具: 下載 Google Cloud SDK。
或者,您可以使用已預先安裝 gcloud CLI、
git
和其他功能 (例如語言支援、工具和編輯器) 的 Cloud Shell。安裝
kubectl
指令列工具:gcloud components install kubectl
為 App Engine 應用程式建立 Dockerfile
按照「建立 Dockerfile」的說明,為應用程式建立 Dockerfile。
從 Dockerfile 建構容器
如要建構容器:
確認您位在含有 Dockerfile 的 App Engine 應用程式目錄中。
將
gcloud
工具使用的預設專案變更為指向您正在使用的專案,以便在 GKE 中執行您的應用程式:gcloud config set project [YOUR-PROJECT-ID]
將
[YOUR-PROJECT-ID]
替換為您的 GKE 專案 ID。使用下列指令建構容器:
gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
將
[YOUR-PROJECT-ID]
替換為您 GKE 專案的專案 ID,並將[YOUR-CONTAINER-NAME]
替換為您要使用的應用程式容器名稱。容器可能需要一點時間才能建構完畢。成功建構完成後,畫面會顯示與下列內容類似的訊息:
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 中執行應用程式
如要執行含有應用程式的容器,請按照下列步驟操作:
建立叢集 (這項作業可能需要幾分鐘的時間才能完成):
gcloud container clusters create [YOUR-CLUSTER-NAME]
將
[YOUR-CLUSTER-NAME]
替換為您要授予叢集的名稱。透過指令列設定您的運算區域:
gcloud config set compute/zone us-central1-b
確保 GKE
kubectl
工具已獲得授權:gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
按照系統提示對工具進行授權。
執行含有應用程式的容器:
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]
替換為您為應用程式建立的容器名稱。公開容器以提供存取:
kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
將
[YOUR-DEPLOYMENT-NAME]
替換為您在先前步驟中使用的名稱。您可能需要等待幾分鐘,才能查看外部 IP。查看應用程式的外部 IP 位址:
kubectl get service [YOUR-DEPLOYMENT-NAME]
將
[YOUR-DEPLOYMENT-NAME]
替換成您在先前步驟中使用的名稱。如果EXTERNAL IP
欄位是空白的,請先稍候一段時間再重新叫用指令。查看在 GKE 中執行的應用程式:
http://EXTERNAL-IP:8080
將
EXTERNAL-IP
替換為您在上一個步驟中取得的外部 IP 位址。
您已成功在 GKE 上部署並執行 App Engine 應用程式!
後續步驟
建議您進一步瞭解 Kubernetes 和 kubectl
指令。Google Kubernetes Engine 使用 Kubernetes 進行容器的管理、部署和資源調度。如要進一步瞭解 Kubernetes,請參閱外部的 Kubernetes 網站。
本指南使用 kubectl
指令列介面來管理 Kubernetes 叢集。如要進一步瞭解 kubectl
,請參閱 kubectl 參考資料。