GKE私有集群中的GitLab CI无法连接到主服务器

时间:2018-11-27 11:52:39

标签: kubernetes gitlab gitlab-ci google-kubernetes-engine

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

运行程序在公共群集上运行良好,所有工作负载均已成功完成。但是,在私有群集上,thr CI的所有kubectl命令都以Unable to connect to the server: dial tcp <IP>:443: i/o timeout error失败。 CI配置没有更改-相同的基本映像,仍然使用带有特定于CI的服务帐户的gcloud SDK来对集群进行身份验证。

两个集群都启用了主授权网络,并且仅设置了我们的办公室IP。可以通过公共IP访问Master。身份验证成功,两者均禁用了客户端证书和基本身份验证。配置了Cloud NAT,节点可以访问Internet(可以提取容器映像,Gitlab CI可以连接等)。

我缺少一些重要的配置吗?我还要看什么?

2 个答案:

答案 0 :(得分:2)

我已经找到解决问题的方法,但我不确定原因。

我使用了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]

答案 1 :(得分:0)

如果是gitlab.com,则可以在GKE上的主授权网络中将其IP范围列入白名单。

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