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

如何在不暴露服务的前提下使用GUI工具安全连接GKE内的数据库?

GKE集群内部数据库非公网暴露GUI连接方案(适配TablePlus连接MySQL Pod场景)

方案1:kubectl端口转发(最简临时方案)

适用场景:临时连接验证,不需要额外部署资源

  • 确保本地已安装kubectl,且已通过gcloud container clusters get-credentials命令完成GKE集群的访问凭证配置
  • 执行端口转发命令,将本地端口和集群内MySQL Pod的3306端口绑定,如果本地3306端口被占用,可自行替换为其他空闲端口:
    kubectl port-forward <your-mysql-pod-name> 3306:3306
    
  • 也可以直接绑定MySQL Service,无需固定Pod名称:
    kubectl port-forward svc/<your-mysql-service-name> 3306:3306
    
  • 打开TablePlus新建MySQL连接,主机填127.0.0.1,端口填刚才设置的本地端口,输入对应的MySQL用户名、密码、数据库名即可连接
  • 注意:端口转发的终端会话需要保持运行,关闭后连接会自动断开

方案2:GCP IAP身份感知代理隧道(私有集群适配方案)

适用场景:GKE为私有集群,kube-apiserver/节点未配置公网IP的场景

  • 确保你的GCP账号已被授予IAP安全隧道用户和对应GKE集群的访问权限
  • 先通过IAP隧道获取集群访问凭证:
    gcloud container clusters get-credentials <cluster-name> --zone <zone> --project <project-id> --internal-ip
    
  • 配置gcloud以使用IAP代理访问集群:
    gcloud config set container/use_client_certificate False
    gcloud config set container/use_v1_client False
    
  • 后续操作和方案1一致,执行kubectl port-forward命令后用TablePlus连接本地端口即可
  • 优势:所有流量走GCP加密的IAP通道,不需要集群任何资源暴露公网,支持细粒度权限控制

方案3:内网堡垒主机转发(高频访问场景)

适用场景:需要频繁访问集群内部多个服务,不想每次执行端口转发命令的场景

  • 在GKE集群所在的VPC内创建一台仅配置内网IP的Linux虚拟机作为堡垒机,虚拟机不需要绑定公网IP
  • 你可以通过IAP隧道直接SSH登录堡垒机:
    gcloud compute ssh <bastion-vm-name> --zone <zone> --tunnel-through-iap
    
  • 建立SSH本地端口转发,将集群内MySQL的访问端口映射到本地:
    gcloud compute ssh <bastion-vm-name> --zone <zone> --tunnel-through-iap -- -L 3306:<mysql-service-cluster-ip>:3306
    
  • 打开TablePlus连接本地3306端口即可

方案4:办公网专线/VPN打通(企业级长期方案)

适用场景:企业办公网已和GCP VPC通过云专线、云VPN打通的场景

  • 将MySQL Service配置为ClusterIP或者Internal LoadBalancer类型,不需要配置公网暴露
  • 配置VPC路由和防火墙规则,允许办公网IP段访问MySQL Service的IP和3306端口
  • 打开TablePlus,直接填写MySQL Service的内网IP作为主机地址,输入账号密码即可连接
  • 优势:不需要本地运行任何转发进程,连接稳定,适合团队多人使用的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:15:03