首页 > 解决方案 > 仅具有内部网络的 VM 上的 GitLab Runner

问题描述

我正在jetstackGoogle Cloud 中的 GKE 集群上从官方 helm chart 运行 GitLab 实例。

我想将一个 Windows 虚拟机添加到我的 VPC 网络,它只能访问内部网络。

通常,您必须针对 GitLab 的 https 地址注册 GitLab 运行器,这在内部网络中是不可能的。有没有办法通过内部网络向 GitLab 实例注册 GitLab 运行器?

GitLab 实例通过nginx-ingress控制器发布其 https 资源,该控制器也在该 GKE 集群上运行。

有没有办法使用正在监听端口的内部 IP 注册 gitlab-unicorn pod 8080

提前致谢!

标签: kubernetesgoogle-cloud-platformgitlabgoogle-kubernetes-enginegitlab-ci-runner

解决方案


有两种选择:

  • clone_url如果 runner 可以访问Gitlab实例,但它的名称与解析的名称不同
  • ssh-tunnel如果 runner 没有直接访问Gitlab实例的权限

clone_url

如果您gitlab可以从内部网络访问,则可以使用clone_url选项

请参阅文档

clone_url工作原理

如果 GitLab 实例暴露给运行者无法使用的 URL,则clone_url可以配置 a。例如; GitLab 暴露于https://gitlab.example.com,但由于防火墙设置,运行者无法访问它。如果跑步者可以到达 上的节点192.168.1.23clone_url则应设置为"http://192.168.1.23

只有clone_url设置了,运行器才会构造一个克隆 URL,格式为http://gitlab-ci-token:s3cr3tt0k3n@192.168.1.23/namespace/project.git

ssh-tunnel

如果您的 Gitlab 实例没有任何可用地址,您可以ssh-tunnel对其进行设置。

SSH 隧道是一种通过加密的 SSH 连接传输任意网络数据的方法。它可用于为遗留应用程序添加加密。它还可用于实现 VPN(虚拟专用网络)和跨防火墙访问内部网服务。

ssh -L 8080:gitlab.yourinstance.com:80 gw.yourgateway.com

然后你可以gw.yourgateway.com:8080用作你的clone_url


推荐阅读