You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一个GCP项目中混合部署Cloud Run和App Engine应用?

问题解决方式

一、当前GAE部署报错的快速修复

你遇到的报错是因为首次在GCP项目中部署App Engine应用时,平台强制要求第一个上传的服务必须命名为default,你当前配置里自定义的morph-keycloak-service不符合首次部署要求,两种修复方案可选:

  • 方案1:先部署一个极简的default服务占坑,比如简单的静态页服务或空服务,部署完成后再上传你自定义名称的Keycloak服务即可
  • 方案2:直接修改Keycloak目录下app.yaml中的service字段值为default,完成首次部署后,后续再新增其他GAE服务时即可使用自定义命名

二、更合理的部署方案推荐

首先纠正一个常见认知偏差:Keycloak从17版本开始切换为Quarkus作为底层发行版,只要将所有状态存储在外置数据库中,完全支持无状态部署在Cloud Run上,不需要强行切换到GAE部署,方案优势如下:

  • 技术栈统一,你现有Quarkus应用已经跑在Cloud Run上,不需要额外学习GAE的配置规则,运维成本更低
  • 可以直接复用现有Cloud SQL的连接配置、IAM权限规则,和你的Quarkus应用共用同一个Cloud SQL实例,只需要给Keycloak单独创建数据库即可,避免数据冲突

Cloud Run部署Keycloak核心配置要点:

  • 基于官方Keycloak Quarkus基础镜像构建自定义镜像,通过环境变量指定数据库连接地址为你的Cloud SQL实例,开启数据库持久化存储,关闭本地有状态缓存配置
  • 给Cloud Run服务账号配置Cloud SQL访问权限,和你现有Quarkus应用的权限配置保持一致即可

三、坚持使用GAE部署的注意事项

如果确定要继续用GAE部署Keycloak,需要额外完成以下配置:

  • 配置Cloud SQL代理或者VPC连接器,确保GAE服务网络可以访问到你的Cloud SQL实例
  • 为Keycloak单独创建数据库和专属数据库账号,不要和现有Quarkus应用混用同一个库,避免表结构冲突
  • 不需要删除占坑的default服务,保留极简版本即可,不影响其他自定义服务的正常运行

内容的提问来源于stack exchange,提问作者johnniepop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:45:07