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

如何为自托管GitLab Runner配置静态IP?云VM场景技术问询

GitLab Runner 静态IP访问控制解决方案

GitLab Runner本身没有内置的静态IP配置选项,但基于你已在云端VM配置静态IP的背景,可以通过以下几种方案实现安全的访问控制,避免添加宽泛CIDR到白名单的风险:

1. 直接复用VM的静态IP做白名单

你的Runner部署在已配置静态IP的VM上,所有Runner的任务流量(包括与GitLab服务器通信、拉取代码、访问内部服务等)都会通过该VM的静态IP对外发送。因此直接将VM的静态IP加入目标服务的白名单即可,无需开放宽泛网段。

  • 额外说明:如果使用Docker executor,容器默认会共享VM的网络出口,容器内任务的流量同样会走这个静态IP,白名单只需添加VM的IP即可覆盖所有任务场景。

2. 限制Executor的网络出口(针对Docker/Kubernetes场景)

Docker Executor 配置

在Runner的config.toml中指定网络模式,并配合iptables规则强制流量走VM静态IP:

[[runners]]
  name = "Static IP Docker Runner"
  url = "https://your-gitlab-instance.com/"
  token = "your-runner-token"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    network_mode = "bridge" # 使用Docker默认桥接网络
    # 其他Docker相关配置

然后在VM上添加iptables规则,将桥接网络的流量SNAT到静态IP:

# 172.17.0.0/16为Docker默认桥接网段,根据实际情况调整
iptables -t nat -A POSTROUTING -o eth0 -s 172.17.0.0/16 -j SNAT --to-source YOUR_VM_STATIC_IP

Kubernetes Executor 配置

如果使用K8s集群托管Runner,需确保集群的出口流量统一走VM的静态IP:

  • 可以配置集群的NodePort/LoadBalancer服务绑定VM静态IP
  • 或使用CNI插件(如Calico)配置集群出口的SNAT规则,强制所有Runner Pod的流量走指定静态IP

3. 本地代理强制流量走静态IP

在VM上部署本地代理(如Squid),然后在Runner配置中指定代理,让所有请求通过代理走静态IP:

[[runners]]
  # 其他Runner基础配置
  [runners.environment]
    HTTP_PROXY = "http://localhost:3128"
    HTTPS_PROXY = "http://localhost:3128"
    NO_PROXY = "your-gitlab-instance.com,localhost,127.0.0.1" # 跳过不需要代理的地址

代理配置完成后,只需将VM静态IP加入目标服务的白名单即可。

验证步骤

在Runner的任务中添加测试命令,确认流量出口IP:

curl ifconfig.me

返回结果应为VM的静态IP,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:30:42