如何在一个项目中混合部署 Cloud 运行 和 App Engine?

How to mix Cloud Run and App Engine deployments in one project?

我已经在 Google 云 运行 上部署了一个 Quarkus 应用程序。 它取决于 MySQL,因此在 Cloud SQL.

上启动了一个实例

我部署过程的下一步是添加 keycloak。据我所知,最好的选择似乎是 Google App Engine。

中获得批准的答案让我对需要做的事情有了一些很好的了解……主要是。 我所做的是:

我对这个设置有疑虑,最终得到的错误支持了我:

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 还很陌生,可用选项的数量和变体仍然让我不知所措 - 必须熟悉其中的细微差别,但我想这需要时间。因此,我仍在就如何调整项目结构以更好地适应服务堆栈提出建议。谢谢!