繁体   English   中英

GitLab GKE 私有集群中的 CI 无法连接到 master

[英]GitLab CI in GKE private cluster can't connect to master

到目前为止,我们一直在为所有工作负载使用 GKE 公共集群。 我们创建了第二个具有更高安全性和可用性的私有集群(仍然是 GKE)(旧集群是单区域集群,新集群是区域集群)。 我们的代码使用 Gitlab.com,但在集群中使用自托管的 Gitlab CI 运行器。

运行器在公共集群上运行良好,所有工作负载都成功完成。 但是在私有集群上,thr CI 的所有 kubectl 命令都失败并显示Unable to connect to the server: dial tcp <IP>:443: i/o timeout error CI 配置没有改变——相同的基础镜像,仍然使用 gcloud SDK 和一个 CI 特定的服务账户来对集群进行身份验证。

两个集群都启用了 master authorized.networks,并且只设置了我们的办公室 IP。 可以从公共 IP 访问 Master。身份验证成功,客户端证书和基本身份验证在两者上都被禁用。 Cloud NAT 已配置,节点可以访问 Inte.net(可以拉取容器镜像,Gitlab CI 可以连接等)。

我是否缺少一些重要的配置? 我还应该看什么?

我已经找到了问题的解决方案,但我不完全确定原因。

我使用了gcloud container clusters get-credentials [CLUSTER_NAME] ,它提供了主节点的公共端点。 但是,由于某种原因,无法从集群内部访问它 - 所以我认为这需要将 NAT 的公共 IP(不是静态提供的)添加到授权网络。

我添加了 --internal-ip 标志,它给出了集群的内部 IP 地址。 CI 现在可以连接到主站。

来源: https : //cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#internal_ip

tl; dr - gcloud container clusters get-credentials --internal-ip [CLUSTER_NAME]

如果是 gitlab.com,您可以在 GKE 上的 Master 授权网络中将其 ip 范围列入白名单,

https://docs.gitlab.com/ee/user/gitlab_com/#ip-range

您可以在 GKE 私有集群中安装一个 GitLab 运行器,每当管道必须运行时,一个 pod 将从您配置的 GitLab 运行器中启动,并在作业完成后删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM