You need to enable JavaScript to run this app. 自建k3s运行Gitlab CI时PostgreSQL连接被拒绝如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

自建k3s运行Gitlab CI时PostgreSQL连接被拒绝如何解决?

问题解决方案

你遇到的postgres域名解析到127.0.0.1的问题,是自建k3s集群部署的GitLab Runner(Kubernetes执行器)的服务网络解析规则不匹配导致的,可按以下步骤排查修复:

  • 第一步:先验证域名解析状态
    在你的.gitlab-ci.yml的before_script段加入以下命令,确认解析结果:
    before_script:
      # 新增以下两行
      - cat /etc/hosts
      - ping -c 3 postgres || echo "postgres域名解析异常"
      # 原有命令保留
      - ruby -v
      - cp config/database.yml.ci config/database.yml
      - apt-get update -q && apt-get install nodejs -yqq
      - gem install bundler:2.0.2
      - bundle install -j $(nproc) --path vendor
    
    运行CI任务后查看输出,确认postgres对应的IP记录是否被错误绑定到127.0.0.1。
  • 第二步:显式指定PostgreSQL服务别名
    默认配置下Kubernetes执行器可能无法自动匹配postgres作为服务主机名,修改.gitlab-ci.yml的services配置,强制指定别名:
    services:
      - name: postgres:12.3
        alias: postgres
    
  • 第三步:检查k3s部署的GitLab Runner配置
    如果你是通过Helm chart安装的GitLab Runner,检查values.yaml的以下配置项:
    1. 确认未开启disableAutoHostAliases,该配置会关闭自动注入服务域名到任务容器的hosts记录
    2. 确认dnsPolicy设置为ClusterFirstWithHostNet(如果Runner用了hostNetwork)或默认的ClusterFirst
    3. 确认没有配置自定义的hosts挂载覆盖了postgres的解析记录
  • 第四步:适配数据库配置的环境变量读取
    修改database.yml.ci的host配置,优先读取GitLab CI自动注入的服务地址环境变量,避免硬编码域名解析异常:
    default: &default
      adapter: postgresql
      encoding: unicode
      username: postgres
      password: postgres
      host: <%= ENV.fetch('POSTGRES_PORT_5432_TCP_ADDR', 'postgres') %>
      port: <%= ENV.fetch('POSTGRES_PORT_5432_TCP_PORT', 5432) %>
      pool: 5
      database: ci_db
    
    test:
      <<: *default
      database: ci_Test
    
  • 第五步:添加PostgreSQL启动等待逻辑
    避免PostgreSQL服务未完全启动就执行数据库操作,在before_script段增加等待命令:
    before_script:
      # 原有命令后新增
      - apt-get update -q && apt-get install -yqq postgresql-client
      - until pg_isready -h <%= ENV.fetch('POSTGRES_PORT_5432_TCP_ADDR', 'postgres') %> -U postgres; do sleep 2; done
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:15:01