【问题标题】:How can I deploy new service to the existing app in Google App Engine?如何将新服务部署到 Google App Engine 中的现有应用程序?
【发布时间】:2020-01-22 23:10:01
【问题描述】:

我想在 Google Cloud Platform 的 App-engine 中创建新服务并将其部署到现有应用。

可以通过 URL test.appspot.com 访问该应用

我想创建一个带有简单网页的新服务,该网页可以使用应用引擎中的 URL my-service.test.appspot.com 进行访问。

我知道我需要创建 app.yaml 并进行部署,但我不确定是否需要使用之前已经部署的现有 app.yaml,或者我可以使用新服务创建新 app.yaml命名并部署它。

使用新的 app.yaml 进行部署会覆盖应用程序和现有服务,还是只是在 App-engine 中创建我的新服务?

在 App-engine 中将新服务部署到现有应用程序需要遵循哪些步骤?

【问题讨论】:

    标签: google-app-engine service deployment google-cloud-platform


    【解决方案1】:

    虽然可能可以通过指定不同的部署命令参数来使用现有的app.yaml 来部署新服务,但我不推荐它,因为恕我直言,它太脆弱了,你会冒险现有应用程序的影响(技术上是您现有单服务应用程序的default 服务)。您也不太可能希望在新服务中部署完全相同的代码(正在部署的代码是来自 .yaml 文件所在目录的代码)。

    我强烈建议(重新)构建您的应用,同时考虑您的服务:

    • 应用的顶级目录包含应用级别的配置文件,而不是服务级别的文件
    • 每个服务在应用程序的顶级目录下都有自己的子目录,每个都有自己的代码和.yaml 文件(甚至不必称为app.yaml
    • 服务将独立部署,每个服务都来自自己的子目录

    从单一服务应用程序目录到达那里相对简单:只需创建一个子目录(用于default 服务)并将现有的app.yaml 和代码移动到其中,检查功能是否不受影响,并且从新位置重新部署。然后为其他服务及其代码创建子目录。

    另见:

    通常,您为每个服务创建一个目录,其中包含 服务的 YAML 文件和相关的源代码。可选的 应用程序级配置文件 (dispatch.yaml, cron.yaml, index.yaml 和 queue.yaml) 包含在顶级应用程序中 目录。下面的示例显示了三个服务。在service1service2,源文件与 YAML 文件处于同一级别。 在service3 中,有两个版本的 YAML 文件。

    【讨论】:

      【解决方案2】:

      Appengine 旨在考虑“微服务”。每个服务都是隔离的,因此每个服务都有自己的源代码和配置。顺便说一句,你可以混合标准和灵活的版本,你可以混合语言、静态和动态资源,...

      顺便说一下,部署您的微服务并使用调度将查询路由到正确的部署。

      但是 1 条建议:保持服务一致。我的意思是,不要部署没有关系的 2 个应用程序,更愿意创建 2 个项目,原因如下:

      • 如果一个应用程序增长,您将受到辅助服务的干扰,其后果是:
        • dispatch.yaml 文件限制为 20 条规则
        • 一个专门的团队可能会受到此应用的影响,角色和授权必须在每个应用中分开
      • 在 AppEngine 标准中,您每天可以免费使用 28 小时的默认实例 (F1)。拆分您的应用以获得更多免费配额!

      【讨论】:

        【解决方案3】:

        从@Dan 的回答开始,然后按照这个:

        • 您必须使用指令service: service_name 在每个 .yaml 文件中命名您的服务

        例如,适用于 PHP,但也适用于其他语言: Documentation。寻找“服务”元素。

        部署是这样进行的:(针对 Windows 给出的示例,因此是反斜杠)

        app_leveldir> gcloud app deploy dir1\service1.yaml dir2\service2.yaml [dirn\servicen.yaml]

        确保每个 <servicei>.yaml 包含: service: myservice-name

        最后,请注意,每个(微服务)都将在 URL 中提供: https://SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com/

        知道还有一个更进一步的粒度级别,包括版本: https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com/

        在上面的 URL 中,-dot- 实际上是那个符号,而不是 '.'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-15
          • 1970-01-01
          • 1970-01-01
          • 2017-12-28
          • 2020-09-01
          • 2014-07-27
          • 1970-01-01
          • 2016-11-06
          相关资源
          最近更新 更多