首页 > 解决方案 > Gitlab Runner 无法访问 Gitlab 自托管实例

问题描述

我们在 Google Compute Engine 实例上安装了自托管的 Gitlab Enterprise。此实例受防火墙保护,因此只有我们的员工才能访问服务器。

当我们部署 Kubernetes 集群(使用 Gitlab CI)时,运行者无法访问 GitLab,因此不会启动 CI 作业。

我可以手动将 Google Kubernetes 实例的外部 IP 地址添加到我们的 GitLab 防火墙(GCP 防火墙允许所选 IP 范围的所有协议和端口),然后它就会工作。但是因为我们有不断变化的 Kubernetes 实例(以及抢占实例)的数量,我们必须每天手动执行此操作。

这不是最佳情况。我已经尝试添加内部 IP 范围(10.132.0.0/20、10.0.0.0/8、10.56.0.0/14),但这不是解决方案。如果不指定确切的实例 IP,运行者仍然无法访问 gitlab 服务器。

我错过了什么?

标签: kubernetesgoogle-compute-enginefirewallgitlab-ci-runner

解决方案


GKE 节点在 GCE 平台中显示为 VM 实例。它们由主节点管理,如果它们被认为不健康,可以(由 kube-controller)删除。删除后,它们将被重新创建。因此,IP 地址是临时的。使用每个 VM 实例的外部 IP 地址将非常具有挑战性,因为 IP 地址一直在变化。这不是一个可行的解决方案。

一种解决方法是充分利用NAT 网关。来自 GKE 节点的所有出站流量都将路由到充当 NAT 网关的特定 VM 实例。然后,您将只有 1 个静态 IP 地址,即NAT 网关的外部 IP 地址。

然后,您将拥有一个可以添加到防火墙规则的静态 IP 地址。


推荐阅读