如何为 Bytebase 元数据 PostgreSQL 配置 GCP Cloud SQL IAM 认证与私有 IP 连接 📅 发布时间:2026/9/15 10:15:02 👁 浏览次数: 如何为 Bytebase 元数据 PostgreSQL 配置 GCP Cloud SQL IAM 认证与私有 IP 连接【免费下载链接】bytebaseDatabase governance built for humans and agents — controlling changes and access across every major database.项目地址: https://gitcode.com/GitHub_Trending/by/bytebase当你在 GCP 上自托管 Bytebase且元数据库存储 Bytebase 自身元数据的 PostgreSQL是 GCP Cloud SQL for PostgreSQL 时可以让 Bytebase 不使用固定密码而通过 Cloud SQL IAM 认证连接元数据库并走实例的私有 IP。本文的操作依据是仓库中的运维手册 docs/operations/high-availability.md 的 “GCP Cloud SQL IAM authentication for metadata PostgreSQL” 一节以及官方 Helm chart 的 helm-charts/bytebase/README.md、values.yaml 和 statefulset 模板。前置条件在改配置之前先确认以下各项已满足均为文档的明确要求Kubernetes 1.24、Helm 3.9.0chart 的 Prerequisites。元数据库是 GCP Cloud SQL for PostgreSQL且能写出实例连接名格式为project:region:instance。Cloud SQL IAM 数据库用户文档示例为bb-metaproject-id.iam已在实例上存在并具有所需的 PostgreSQL 权限。每个 Bytebase 进程使用的 Google principal 有权限连接该 Cloud SQL 实例通常通过 Application Default Credentials 提供例如 GKE Workload Identity。文档明确要求不要把 Google 服务账号密钥放进PG_URL。私有 IP 连接要求 Bytebase 能到达实例的私有 IP——即 Bytebase 运行在与实例相同的 VPC 内Private Service Access。方式一通过bytebase.option.externalPg.url传入完整 DSN私有 IP 推荐文档推荐使用 keyword/value 形式的 DSN因为 Cloud SQL IAM 的 PostgreSQL 用户名通常包含。在 DSN 中加入 Bytebase 的 GCP 参数即可启用 IAM 认证私有 IP 实例文档称其为推荐的部署形态额外加上bytebase_gcp_cloud_sql_ip_typeprivateuserbb-metaproject-id.iam dbnamebytebase bytebase_gcp_cloud_sql_iamtrue bytebase_gcp_cloud_sql_instance_connection_nameproject-id:us-central1:bytebase-metadata bytebase_gcp_cloud_sql_ip_typeprivate其中bytebase_gcp_cloud_sql_iamtrue启用元数据库的 Cloud SQL IAM 认证开启后实例连接名参数必填。bytebase_gcp_cloud_sql_instance_connection_name实例连接名project:region:instance需替换为你自己的 project、region 和实例名。bytebase_gcp_cloud_sql_ip_type缺省或public表示连接公网 IPprivate表示私有 IPpsc表示 Private Service Connect。把该 DSN 作为bytebase.option.externalPg.url的值安装 chart下面命令中的your-project、us-central1、bytebase-metadata、bb-meta均替换为你自己的值helm repo add bytebase-repo https://bytebase.github.io/bytebase helm repo update helm -n bytebase \ --set bytebase.option.port443 \ --set bytebase.option.externalPg.urluserbb-metayour-project.iam dbnamebytebase bytebase_gcp_cloud_sql_iamtrue bytebase_gcp_cloud_sql_instance_connection_nameyour-project:us-central1:bytebase-metadata bytebase_gcp_cloud_sql_ip_typeprivate \ --set bytebase.option.external-urlhttps://bytebase.example.com \ --set bytebase.version3.20.1 \ install bytebase-release bytebase-repo/bytebase其中bytebase.option.external-url是用户访问 Bytebase 的地址需替换为你的实际地址bytebase.version可省略默认latest或固定到具体版本。方式二使用 chart 的gcpCloudSqlIam字段默认走公网 IPchart 也提供了细粒度字段bytebase.option.externalPg.gcpCloudSqlIam.enabled默认false与bytebase.option.externalPg.gcpCloudSqlIam.instanceConnectionName启用时必填project:region:instance配合pgUsername、pgDatabase使用helm -n bytebase \ --set bytebase.option.port443 \ --set bytebase.option.externalPg.gcpCloudSqlIam.enabledtrue \ --set bytebase.option.externalPg.gcpCloudSqlIam.instanceConnectionNameyour-project:us-central1:bytebase-metadata \ --set bytebase.option.externalPg.pgUsernamebb-metayour-project.iam \ --set bytebase.option.externalPg.pgDatabasebytebase \ --set bytebase.option.external-urlhttps://bytebase.example.com \ install bytebase-release bytebase-repo/bytebase注意这条路径与私有 IP 的边界statefulset 模板 在该模式下渲染出的PG_URL只包含user、dbname、bytebase_gcp_cloud_sql_iamtrue和bytebase_gcp_cloud_sql_instance_connection_name不包含bytebase_gcp_cloud_sql_ip_type。由于缺省即连接公网 IP实例若只有私有 IP应改用方式一直接传完整 DSN。另外awsRdsIam.enabled与gcpCloudSqlIam.enabled不能同时为 true否则模板渲染直接失败报only one metadata database IAM auth provider can be enabled。验证部署结果StatefulSet 中 Bytebase 容器的存活探针是对服务端口发起的/healthz请求initialDelaySeconds: 300、periodSeconds: 300Pod 稳定 Running 说明 Bytebase 已成功启动并连接元数据库。调用GET /v1/actuator/info核对文档给出的字段version、externalUrl、replicaCount。单副本部署时replicaCount为 1若之后把 Bytebase 扩为多副本HA 拓扑每个副本必须使用同一份PG_URL和同一个 external URL并且GET /v1/subscription中ha为true时才允许多副本运行。排查与限制连接失败先核对两处授权Cloud SQL IAM 数据库用户是否存在并具备所需 PostgreSQL 权限Bytebase 进程所用的 Google principal 是否有连接该实例的权限经 ADC例如 GKE Workload Identity。不要把服务账号密钥写入PG_URL。私有 IP 连不上确认 Bytebase 与 Cloud SQL 实例在同一 VPCPrivate Service Access如果网络走 Private Service Connect将bytebase_gcp_cloud_sql_ip_type设为psc。Helm 报错bytebase.option.externalPg.gcpCloudSqlIam.instanceConnectionName is required when bytebase.option.externalPg.gcpCloudSqlIam.enabled is true方式二启用了gcpCloudSqlIam但未提供实例连接名补上instanceConnectionName即可。升级按 helm-charts/bytebase/README.md 用helm upgrade带上与安装时相同的--set参数通常只改bytebase.version避免 IAM 相关参数在升级时丢失。【免费下载链接】bytebaseDatabase governance built for humans and agents — controlling changes and access across every major database.项目地址: https://gitcode.com/GitHub_Trending/by/bytebase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考