在 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

    或者,您也可以使用 Cloud Shell,它包含 gcloud CLI、git 和其他预安装的功能,例如语言支持、工具和编辑器。

  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 参考