You need to enable JavaScript to run this app. 如何从Cloud Build连接GKE集群gRPC服务查询KFP MLMD元数据
优惠活动
大模型
产品
解决方案
定价
更多

如何从Cloud Build连接GKE集群gRPC服务查询KFP MLMD元数据

托管KFP场景下Cloud Build对接MLMD的可落地实现

现有架构与目标

  • 托管KFP实例基于GCP AI Platform Pipelines部署
  • 元数据存储采用Cloud SQL托管MySQL实例
  • KFP流水线的构建、全流程运行均通过Cloud Build完成
  • 业务目标:在Cloud Build中新增执行步骤,于KFP流水线运行结束后,调用MLMD API查询本次运行产生的元数据
  • 当前阻塞点:已在GCP虚拟机上跑通MLMD查询脚本,但迁移到Cloud Build环境时数据库连通性存在问题,现有两种尝试路径未完全闭环

尝试路径的现有问题说明

  • 路径1(直连Cloud SQL MySQL):脚本在虚拟机环境可正常运行,但Cloud Build环境无法直接连通Cloud SQL的公网IP,必须借助Cloud SQL Proxy完成访问。此前参考云函数接入逻辑实现的SQLAlchemy通道虽然可以连通数据库,但和MLMD内置的元数据存储客户端存在兼容性问题,无法直接复用。
  • 路径2(通过MLMD gRPC服务连接):在虚拟机环境通过kubectl port-forward svc/metadata-grpc-service 8080:8080端口转发后,MLMD gRPC连接逻辑可正常运行,但暂未打通Cloud Build环境到集群gRPC服务的连通路径。

可落地方案一:Cloud SQL Proxy 适配原生MLMD MySQL连接逻辑

MLMD原生的MySQL连接配置本身支持通过Cloud SQL Proxy的Unix socket通道访问数据库,不需要额外改造MLMD的客户端逻辑,操作步骤如下:

  1. 在Cloud Build构建配置中新增两个前置准备步骤:
    • 安装Cloud SQL Proxy依赖,为可执行文件赋予执行权限
    • 以后台常驻进程启动Cloud SQL Proxy,绑定对应Cloud SQL实例的连接名,指定Unix socket存储目录为/cloudsql
  2. 修改MLMD的MySQL连接配置,替换原来的TCP直连配置为Unix socket通道,示例代码:
    connection_config = metadata_store_pb2.ConnectionConfig()
    # 移除原TCP连接的host、端口配置,指向Proxy的Unix socket路径
    connection_config.mysql.unix_socket = f"/cloudsql/[你的Cloud SQL实例连接名]"
    connection_config.mysql.database = "kubeflow_experiments_metadata_metadata"
    connection_config.mysql.user = [数据库用户名]
    connection_config.mysql.password = [数据库密码]
    store = mlmd.metadata_store.MetadataStore(connection_config)
    
  3. 权限配置:为Cloud Build使用的默认服务账号授予Cloud SQL客户端访问权限,保证代理可以正常完成数据库鉴权。

可落地方案二:Cloud Build 直连集群内MLMD gRPC服务

不需要对K8s集群做额外的端口暴露、公网映射改造,直接复用集群内已部署的metadata-grpc-service,操作步骤如下:

  1. 在Cloud Build配置中新增集群凭证拉取步骤,使用gcloud命令获取托管KFP所在GKE集群的访问凭证:
    gcloud container clusters get-credentials [你的KFP集群名称] --region [集群所在区域] --project [GCP项目ID]
    
  2. 在执行MLMD脚本的同一构建步骤中,以后台常驻进程方式启动端口转发,和本地虚拟机的操作逻辑完全一致:
    kubectl port-forward svc/metadata-grpc-service 8080:8080 &
    
  3. 保持原有的MLMD gRPC连接代码不变,脚本访问本地127.0.0.1:8080端口即可正常连通MLMD服务,示例连接代码:
    connection_config = metadata_store_pb2.MetadataStoreClientConfig(
        host="127.0.0.1",
        port=8080,
    )
    store = mlmd.metadata_store.MetadataStore(connection_config)
    
  4. 权限配置:为Cloud Build使用的默认服务账号授予对应GKE集群的只读访问权限,保证可以正常拉取集群凭证、执行端口转发操作。

选型参考

  • 优先追求构建流程稳定性、减少对K8s集群运行状态的依赖,可选择方案一。该方式连接路径短,不需要依赖集群在线状态,Cloud SQL通道的连通可靠性更高。
  • 需要完全复用现有虚拟机上的MLMD gRPC连接脚本、最小化代码改动量,可选择方案二。脚本本身不需要做任何修改,仅需在Cloud Build配置中补充前置的凭证拉取、端口转发步骤即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 21:06:03