Арго с несколькими проектами GCP

Я смотрел на Argo как на систему компакт-дисков в стиле Gitops. Смотрится действительно аккуратно. Тем не менее, я не понимаю, как использовать Argo в нескольких проектах GCP. В частности, план состоит в том, чтобы иметь проекты, зависящие от среды (например, prod, stage dev). Кажется, что Argo не предназначен для организации развертывания в кластерах, зависящих от среды, или нет?

1 ответ

Решение

Ваш вопрос в основном касается управления безопасностью. У вас есть несколько возможностей и несколько точек зрения / уровней безопасности.

1. Разделение проектов

Самый простой и безопасный способ - запустить Argo в каждом проекте без связи / моста между каждой средой. Нет риска для безопасности или для развертывания в неправильном проекте. Разделение проекта по умолчанию (роль VPC и IAM) достаточно.

Но это подразумевает развертывание и поддержку одного и того же приложения на нескольких кластерах и оплату нескольких кластеров (Dev, Staging и prod CD не используются с одинаковой частотой).

С точки зрения безопасности, вы можете использовать для авторизации учетную запись службы Compute Engine по умолчанию или полагаться на удостоверение рабочей нагрузки (предпочтительный способ).

2. Разделение пространства имен

Другой способ - иметь только один проект с развернутым на нем кластером и пространство имен kubernetes для каждого проекта доставки. Кстати, вы можете повторно использовать один и тот же кластер для всех проектов в вашей компании.

Вам по-прежнему нужно обновлять и поддерживать Argo в каждом пространстве имен, но администрирование кластера проще, потому что узлы такие же.

С точки зрения безопасности, вы можете использовать идентификатор рабочей нагрузки для каждого пространства имен (и, таким образом, иметь 1 учетную запись службы на каждое пространство имен, авторизованное в проекте доставки) и сохранять отдельные разрешения

Здесь компромисс - частный IP-доступ. Если вашему развертыванию требуется доступ к частному IP внутри проекта доставки (для целей тестирования или для доступа к частному мастеру K8S), вам необходимо настроить пиринг VPC (и вы ограничены до 25 пирингов на проект) или настроить общий VPC.

3. Разделение служебных аккаунтов.

Последнее решение не рекомендуется, но его проще всего поддерживать. У вас есть только один кластер GKE для всей среды и только 1 пространство имен с развернутым на нем Argo. По конфигурации вы можете сказать Argo использовать определенную учетную запись службы для доступа к проекту доставки (с ключевыми файлами учетной записи службы (не рекомендуемое решение), хранящимися в секретах GKE или в секретном менеджере, или (лучше) с использованием олицетворения учетной записи службы).

Здесь также у вас есть 1 сервисный аккаунт, авторизованный для каждого проекта доставки. И проблема пиринга такая же в случае частного IP-доступа, необходимого в проекте доставки.

Другие вопросы по тегам