Google Cloud Build развертывается в GKE Private Cluster

Я запускаю Google Kubernetes Engine с опцией "private-cluster". Я также определил "авторизованную основную сеть", чтобы иметь возможность удаленного доступа к среде - это работает отлично. Теперь я хочу настроить какой-то конвейер CI/CD с помощью Google Cloud Build - после успешного создания нового изображения докеры это новое изображение должно быть автоматически развернуто в GKE. Когда я впервые был запущен из нового конвейера, развертывание в GKE завершилось неудачно - сообщение об ошибке было похоже на: "Не удалось подключиться к серверу: наберите tcp xxx.xxx.xxx.xxx:443: i/o timeout". Поскольку у меня была опция "авторизованных основных сетей" под подозрением в качестве основной причины таймаута соединения, я добавил 0.0.0.0/0 в разрешенные сети и снова начал работу с облачным сборщиком - на этот раз все прошло хорошо и после образ докера был создан, он был развернут в GKE. Хорошо.

Единственная проблема, которая остается в том, что я действительно не хочу, чтобы весь интернет мог получить доступ к моему мастеру Kubernetes - это плохая идея, не так ли?

Есть ли более элегантные решения для сужения доступа с помощью разрешенных мастер-сетей, а также возможность развертывания через облачную сборку?

Ответы

Ответ 1

В настоящее время невозможно добавить машины Cloud Build в VPC. Аналогичным образом, Cloud Build не объявляет диапазоны IP машин сборки. Таким образом, вы не можете сделать это сегодня, не создавая "экземпляр bustion ssh" или "прокси-экземпляр" на GCE внутри этого VPC.

Я подозреваю, что это скоро изменится. GCB существовал до того, как частные кластеры GKE и частные кластеры по-прежнему являются бета-функциями.

Ответ 2

В итоге мы сделали следующее:

1) Удалите шаг развертывания из cloudbuild.yaml

2) Установите Keel внутри частного кластера и предоставьте ему права на паб/субредактор в проекте Cloud Builder/Registry

Keel будет отслеживать изменения в изображениях и автоматически развертывать их в соответствии с вашими настройками.

Это отлично сработало, так как теперь мы получаем push-обновления хэшированных изображений, без добавления vms или каких-либо хостов с бастионами /ssh.