在 GKE 上运行 App Engine 应用

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

准备工作

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

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

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

  3. 启用 GKE, Cloud Build API。

    启用 API

  4. 下载并安装 Google Cloud CLI,然后初始化 gcloud 工具:
    下载 SDK

  5. 下载并安装 Kubernetes kubectl 工具。

  6. 或者,您也可以使用 Google Cloud Shell(该工具已安装 git 和 gcloud CLI)以及多种其他功能,例如语言支持和代码编辑器。

  7. 下载并安装 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 Ruby 应用!

    后续步骤

    您可能需要详细了解 Kubernetes 和 kubectl 命令。Google Kubernetes Engine 使用 Kubernetes 进行容器管理、部署和扩缩。如需详细了解 Kubernetes,请参阅外部 Kubernetes 网站

    本指南使用 kubectl 命令行界面来管理 Kubernetes 集群。如需详细了解 kubectl,请参阅 kubectl 参考