GitLab CI в частном кластере GKE не может подключиться к мастеру - PullRequest
0 голосов
/ 27 ноября 2018

До сих пор мы использовали публичный кластер GKE для всех наших рабочих нагрузок.Мы создали второй частный кластер (все еще GKE) с улучшенной безопасностью и доступностью (старый - это одна зона, новый - региональный кластер).Для нашего кода мы используем Gitlab.com, но в кластерах используем Gitlab CI, размещенный самостоятельно.

В общедоступном кластере он отлично работает, все рабочие нагрузки завершены успешно.Однако в частном кластере все команды kubectl thr CI завершаются с ошибкой Unable to connect to the server: dial tcp <IP>:443: i/o timeout error.Конфигурация CI не изменилась - тот же базовый образ, все еще использующий gcloud SDK с учетной записью службы CI для аутентификации в кластере.

В обоих кластерах включены главные авторизованные сети и установлены только наши офисные IP-адреса.Мастер доступен с публичного IP.Аутентификация прошла успешно, сертификат клиента и базовая аутентификация отключены на обоих.Облачный NAT настроен, узлы имеют доступ к Интернету (могут получать образы контейнеров, Gitlab CI может подключаться и т. Д.).

Мне не хватает какой-то важной конфигурации?На что еще мне смотреть?

1 Ответ

0 голосов
/ 27 ноября 2018

Я нашел решение своей проблемы, но я не до конца уверен в причине.

Я использовал gcloud container clusters get-credentials [CLUSTER_NAME], что дало публичную конечную точку мастера.Однако это недоступно изнутри кластера по какой-то причине - поэтому я предполагаю, что для этого потребуется добавить общедоступный IP-адрес NAT (который не предоставляется статически) в авторизованные сети.

Я добавил --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]

...