Управляемая клиентом VPC (BYO-VPC) для AWS
1
Настройте существующую VPC
- Пометьте VPC тегом
clickhouse-byoc="true". - Выделите ровно 3 приватные подсети в 3 разных зонах доступности, которые будет использовать ClickHouse Cloud.
- Убедитесь, что каждая подсеть имеет минимальный CIDR-диапазон
/25(например, 10.0.0.0/25)./25поддерживает примерно 10 серверных узлов ClickHouse на зону доступности; для большинства развертываний рекомендуется/24, а для развертываний, которые вы предполагаете масштабировать, — более крупные подсети. IP-адреса подов выделяются из самой подсети, поэтому каждая реплика потребляет адреса подсети. - Добавьте в каждую подсеть теги
kubernetes.io/role/internal-elb=1иclickhouse-byoc="true", чтобы обеспечить корректную настройку балансировщика нагрузки.
2
Настройте конечную точку шлюза S3
Если в вашей VPC еще не настроена конечная точка шлюза S3, ее нужно создать, чтобы обеспечить безопасное приватное взаимодействие между вашей VPC и Amazon S3. Эта конечная точка позволяет сервисам ClickHouse обращаться к S3 без выхода в публичный интернет. Пример конфигурации приведен на снимке экрана ниже.
3
Убедитесь в наличии сетевой связности
Исходящий доступ в интернет
Ваша VPC должна как минимум разрешать исходящий доступ в интернет — напрямую или через NAT gateway. От этого зависят две вещи:
- Tailscale. Компоненты ClickHouse BYOC регистрируются в Tailscale control plane, которая обеспечивает безопасную zero-trust-сеть для приватных операций управления без необходимости входящего публичного доступа. Для первоначальной регистрации и настройки требуется доступ к публичному интернету.
- Образы контейнеров. Некоторые образы, используемые развертыванием, не зеркалируются в реестр BYOC, в том числе образы сообщества, и загружаются из их upstream-реестров.
4
Настройте учетную запись AWS
При первоначальной настройке BYOC создается привилегированная роль IAM (Замените
ClickHouseManagementRole), которая позволяет контроллерам BYOC из ClickHouse Cloud управлять вашей инфраструктурой. Это можно сделать с помощью шаблона CloudFormation или модуля Terraform (см. ниже).При развертывании в конфигурации BYO-VPC установите параметр IncludeVPCWritePermissions в значение false, чтобы ClickHouse Cloud не получил разрешения на изменение вашей управляемой клиентом VPC.Бакеты хранилища, Kubernetes-кластер и вычислительные ресурсы, необходимые для запуска ClickHouse, не входят в эту первоначальную настройку. Они будут подготовлены на следующем шаге. Хотя вы управляете своей VPC, ClickHouse Cloud по-прежнему нужны разрешения IAM для создания и управления Kubernetes-кластером, ролями IAM для service accounts, S3 бакетами и другими важными ресурсами в вашей учетной записи AWS.
Модуль Terraform
Если вы предпочитаете использовать Terraform вместо CloudFormation, используйте модуль terraform-byoc-onboarding:<version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.Модуль выводит clickhouse_management_role_arn. В стандартном сценарии с ним не нужно выполнять никаких действий — онбординг продолжается в консоли ClickHouse Cloud, — но держите его под рукой: ClickHouse запросит его, если ваша конфигурация отличается от значений по умолчанию (например, при согласованном пользовательском имени роли).Значение external_id генерируется консолью ClickHouse Cloud и используется всеми инфраструктурами BYOC в одном аккаунте AWS. Подробнее, включая устаревший заполнитель emptyid, см. в разделе Внешний ID AWS.Ранее модуль распространялся в виде tarball по адресу
https://s3.us-east-2.amazonaws.com/clickhouse-public-resources.clickhouse.cloud/tf/byoc.tar.gz. Этот URL по-прежнему доступен, но устарел — используйте указанный выше модуль GitHub.5
Настройте инфраструктуру BYOC
При нажатии Set up Infrastructure ClickHouse Cloud автоматически выполняет предварительную проверку перед подготовкой инфраструктуры. Если ваша пользовательская VPC или аккаунт не соответствуют требованиям, настройка будет остановлена с указанием конкретных проблем, которые необходимо устранить.
- В разделе VPC configuration выберите Use existing VPC.
- Введите свой VPC ID (например,
vpc-0bb751a5b888ad123). - Введите Private subnet IDs для 3 подсетей, которые вы настроили ранее.
- При необходимости введите Public subnet IDs, если в вашей конфигурации требуются общедоступные балансировщики нагрузки.
- Нажмите Set up Infrastructure, чтобы начать подготовку инфраструктуры.
Настройка нового региона может занять до 40 минут.
Общие подсети из другого аккаунта (AWS RAM)
Вы можете запускать BYOC в spoke-аккаунте на подсетях, предоставленных из hub-аккаунта через AWS Resource Access Manager (RAM) — это позволяет сохранить централизованное управление сетью. Настройка такая же, как описано выше, за двумя исключениями, которые следуют из особенностей работы общих ресурсов RAM:- Назначайте теги из spoke-аккаунта. У ресурсов, предоставленных через RAM, набор видимых тегов индивидуален для каждого аккаунта, поэтому теги, назначенные в hub-аккаунте, в spoke-аккаунте не видны. Назначьте тег
clickhouse-byoc="true"для VPC, аkubernetes.io/role/internal-elb=1вместе сclickhouse-byoc="true"— для каждой общей подсети, причём из spoke-аккаунта. Иначе предварительная проверка сообщит об отсутствующих тегах и подготовка завершится с ошибкой. - Маршрутизация остаётся за hub-аккаунтом. Таблицы маршрутизации общих подсетей по-прежнему принадлежат hub-аккаунту, а значит, именно он отвечает за NAT и исходящую маршрутизацию, а также за конечную точку шлюза S3, поскольку это ресурс уровня VPC. Убедитесь, что общие подсети по-прежнему удовлетворяют указанному выше требованию к исходящему подключению.
/25 на подсеть и настройка ClickHouseManagementRole в spoke-аккаунте, где работает инфраструктура BYOC.
Управляемые клиентом роли IAM
Для организаций с повышенными требованиями к безопасности или строгими требованиями соответствия вы можете предоставить собственные роли IAM вместо того, чтобы ClickHouse Cloud создавал их автоматически. Такой подход дает вам полный контроль над разрешениями IAM и позволяет применять политики безопасности вашей организации.Управляемые клиентом роли IAM находятся в стадии закрытой предварительной версии. Прежде чем выполнять приведенные ниже шаги, свяжитесь с ClickHouse Support, чтобы включить эту возможность для вашей организации.
- Заранее создаете IAM-роли для каждой инфраструктуры, которые иначе создал бы ClickHouse Cloud
- Убираете разрешения на запись в IAM у
ClickHouseManagementRole, используемой для межаккаунтного доступа - Сохраняете полный контроль над разрешениями ролей и отношениями доверия
external_id, сгенерированный в консоли ClickHouse Cloud; все инфраструктуры BYOC в одном аккаунте AWS используют один и тот же внешний ID. Подробнее, включая устаревший заполнитель emptyid, см. в разделе Внешний ID AWS.
1
Настройте роль управления без разрешений на запись в IAM
При выполнении первоначальной настройки BYOC отключите разрешения на запись в IAM для роли управления. В шаблоне CloudFormation установите параметр Замените
IncludeIAMWritePermissions в значение false. В модуле Terraform:<version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.2
Создайте IAM-роли для каждой инфраструктуры
Перед подготовкой каждой инфраструктуры BYOC создайте необходимые для нее IAM-роли (роли EKS Pod Identity, роль доступа ClickHouse к S3 и роль управления плоскостью данных) с помощью per-infra-модуля terraform-byoc-onboarding:Замените
<version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.3
Поддерживайте роли для каждой инфраструктуры в актуальном состоянии