如何在一个项目中混合部署 Cloud 运行 和 App Engine?
How to mix Cloud Run and App Engine deployments in one project?
我已经在 Google 云 运行 上部署了一个 Quarkus 应用程序。
它取决于 MySQL,因此在 Cloud SQL.
上启动了一个实例
我部署过程的下一步是添加 keycloak。据我所知,最好的选择似乎是 Google App Engine。
中获得批准的答案让我对需要做的事情有了一些很好的了解……主要是。
我所做的是:
- 在本地我在主项目中创建了一个子目录。
- 在该目录中,我添加了
app.yaml
和 Dockerfile
(例如 here 所描述的)。
- 我在那里执行了上述两个命令:
gcloud init
和 gcloud app deploy
。
我对这个设置有疑虑,最终得到的错误支持了我:
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: The first service (module) you upload to a new application must be the 'default' service (module). Please upload a version of the 'default' service (module) before uploading a version for the 'morph-keycloak-service' service (module).
我知道我的设置破坏了项目的整体结构,但我不确定如何将这两个应用程序与正确的服务混合使用。
我知道 keycloak 是一个有状态的应用程序,因此不能存在于云端 运行(顺便说一下,keycloak 的目的是使用与应用程序共享的相同数据库实例)。
那么有没有人知道更合理的设置,或者我可以在我的设备中移动什么来修复它?
简而言之:
答案实际上是阅读错误消息(感谢@gaefan)——关于错误本身,它已经足够解释了。所以我只是注释掉了 app.yaml
中的 service: my-keycloak-service
行(从而让 gcloud 隐式地将其标记为默认行)并继续部署。
最终 keycloak 没有连接到数据库,但如果我不设法调整配置,那可能会成为另一个问题的主题。
关于项目结构和功能:
首先,感谢@NoCommandLine 和@guillaume-blaquiere 的输入!
@NoCommandLine Cloud 运行 上的应用程序是一种无头 REST API 启用的后端。大多数 API 调用都由 keycloack 保护。部署过程的下一步是将现有的 UI (React) 客户端移植到 Firebase 托管(或其他合适的服务上——我仍然不完全确定哪种方法最好)并为了用户要正确使用此客户端,他们必须先通过密钥斗篷进行 SSO。
我对 GCP 还很陌生,可用选项的数量和变体仍然让我不知所措 - 必须熟悉其中的细微差别,但我想这需要时间。因此,我仍在就如何调整项目结构以更好地适应服务堆栈提出建议。谢谢!
我已经在 Google 云 运行 上部署了一个 Quarkus 应用程序。 它取决于 MySQL,因此在 Cloud SQL.
上启动了一个实例我部署过程的下一步是添加 keycloak。据我所知,最好的选择似乎是 Google App Engine。
- 在本地我在主项目中创建了一个子目录。
- 在该目录中,我添加了
app.yaml
和Dockerfile
(例如 here 所描述的)。 - 我在那里执行了上述两个命令:
gcloud init
和gcloud app deploy
。
我对这个设置有疑虑,最终得到的错误支持了我:
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: The first service (module) you upload to a new application must be the 'default' service (module). Please upload a version of the 'default' service (module) before uploading a version for the 'morph-keycloak-service' service (module).
我知道我的设置破坏了项目的整体结构,但我不确定如何将这两个应用程序与正确的服务混合使用。 我知道 keycloak 是一个有状态的应用程序,因此不能存在于云端 运行(顺便说一下,keycloak 的目的是使用与应用程序共享的相同数据库实例)。
那么有没有人知道更合理的设置,或者我可以在我的设备中移动什么来修复它?
简而言之:
答案实际上是阅读错误消息(感谢@gaefan)——关于错误本身,它已经足够解释了。所以我只是注释掉了 app.yaml
中的 service: my-keycloak-service
行(从而让 gcloud 隐式地将其标记为默认行)并继续部署。
最终 keycloak 没有连接到数据库,但如果我不设法调整配置,那可能会成为另一个问题的主题。
关于项目结构和功能:
首先,感谢@NoCommandLine 和@guillaume-blaquiere 的输入!
@NoCommandLine Cloud 运行 上的应用程序是一种无头 REST API 启用的后端。大多数 API 调用都由 keycloack 保护。部署过程的下一步是将现有的 UI (React) 客户端移植到 Firebase 托管(或其他合适的服务上——我仍然不完全确定哪种方法最好)并为了用户要正确使用此客户端,他们必须先通过密钥斗篷进行 SSO。
我对 GCP 还很陌生,可用选项的数量和变体仍然让我不知所措 - 必须熟悉其中的细微差别,但我想这需要时间。因此,我仍在就如何调整项目结构以更好地适应服务堆栈提出建议。谢谢!