如何为 Bytebase 元数据 PostgreSQL 配置 GCP Cloud SQL IAM 认证与私有 IP 连接

如何为 Bytebase 元数据 PostgreSQL 配置 GCP Cloud SQL IAM 认证与私有 IP 连接 如何为 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),仅供参考