在 GKE 上运行 App Engine 应用

本指南介绍如何在 GKE 上运行 App Engine 柔性环境应用。 要在 GKE 上运行您的应用,您需要为该应用创建 Dockerfile,通过 Cloud Build 构建容器,然后在 GKE 中运行该容器。无需更改任何代码。

准备工作

在按照此页面上的说明操作之前,请先执行以下步骤:

  1. 验证您的应用已成功部署在 App Engine 柔性环境中且运行正常。

  2. 在这些说明中,您将使用在 App Engine 应用上使用的同一项目。如果需要,您始终可以创建和使用新项目。

  3. 启用 GKE, Cloud Build API。

    启用 API

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