kubernetes - 仅具有内部网络的 VM 上的 GitLab Runner
问题描述
我正在jetstack
Google Cloud 中的 GKE 集群上从官方 helm chart 运行 GitLab 实例。
我想将一个 Windows 虚拟机添加到我的 VPC 网络,它只能访问内部网络。
通常,您必须针对 GitLab 的 https 地址注册 GitLab 运行器,这在内部网络中是不可能的。有没有办法通过内部网络向 GitLab 实例注册 GitLab 运行器?
GitLab 实例通过nginx-ingress
控制器发布其 https 资源,该控制器也在该 GKE 集群上运行。
有没有办法使用正在监听端口的内部 IP 注册 gitlab-unicorn pod 8080
?
提前致谢!
解决方案
有两种选择:
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.23
,clone_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
推荐阅读
- javascript - 如何用 React js 模拟长按?
- matplotlib - 数组不可迭代,但如何在 zip() 中用作参数?
- r - 交叉验证中的 R 插入符号离散化
- java - opennlp.tools.postag.POSTaggerME.train() java.lang.NullPointerException
- vba - 如何在 Access VBA 中将数据从一个表传输到另一个表?
- json - 使用在 test_request_context (Flask) 中传递的无效 JSON 进行测试
- javascript - React Native 部分组件显示出屏幕
- java - Vaadin Flow UnsupportedOperationException:确认来自客户端的重复消息
- r - 如何结合一列中的日期和另一列中的时间?
- react-native - 如何使用 ACS 令牌?