Управляемая клиентом VPC (BYO-VPC) для AWS
Если вы хотите использовать существующую VPC для развертывания ClickHouse BYOC, а не поручать ClickHouse Cloud создание новой VPC, выполните приведенные ниже шаги. Такой подход дает больше контроля над конфигурацией сети и позволяет интегрировать ClickHouse BYOC в вашу существующую сетевую инфраструктуру.
Настройте существующую 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", чтобы обеспечить корректную настройку балансировщика нагрузки.


Настройте конечную точку шлюза S3
Если в вашей VPC еще не настроена конечная точка шлюза S3, ее нужно создать, чтобы обеспечить безопасное приватное взаимодействие между вашей VPC и Amazon S3. Эта конечная точка позволяет сервисам ClickHouse обращаться к S3 без выхода в публичный интернет. Пример конфигурации приведен на снимке экрана ниже.

Убедитесь в наличии сетевой связности
Исходящий доступ в интернет Ваша VPC должна как минимум разрешать исходящий доступ в интернет, чтобы компоненты ClickHouse BYOC могли взаимодействовать с Tailscale control plane. Tailscale используется для обеспечения безопасной zero-trust-сети для приватных операций управления. Для первоначальной регистрации и настройки Tailscale требуется доступ к публичному интернету — напрямую или через NAT gateway. Это подключение необходимо для сохранения как конфиденциальности, так и безопасности вашего развертывания BYOC.
Разрешение DNS Убедитесь, что в вашей VPC работает разрешение DNS и что стандартные DNS-имена не блокируются, не перехватываются и не переопределяются. ClickHouse BYOC использует DNS для разрешения адресов серверов управления Tailscale и конечных точек сервисов ClickHouse. Если DNS недоступен или настроен неправильно, сервисы BYOC могут не подключаться или работать некорректно.
Настройте учетную запись AWS
При первоначальной настройке BYOC создается привилегированная роль IAM (ClickHouseManagementRole), которая позволяет контроллерам BYOC из ClickHouse Cloud управлять вашей инфраструктурой. Это можно сделать с помощью шаблона CloudFormation или модуля Terraform (см. ниже).
При развертывании в конфигурации BYO-VPC установите параметр IncludeVPCWritePermissions в значение false, чтобы ClickHouse Cloud не получил разрешения на изменение вашей управляемой клиентом VPC.
Модуль Terraform
Если вы предпочитаете использовать Terraform вместо CloudFormation, используйте модуль terraform-byoc-onboarding:
module "clickhouse_onboarding" {
source = "github.com/ClickHouse/terraform-byoc-onboarding.git//modules/aws?ref=<version>"
external_id = "<external-id-provided-by-clickhouse>"
include_vpc_write_permissions = false
}Замените <version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.
Модуль выводит clickhouse_management_role_arn. В стандартном сценарии с ним не нужно выполнять никаких действий — онбординг продолжается в консоли ClickHouse Cloud, — но держите его под рукой: ClickHouse запросит его, если ваша конфигурация отличается от значений по умолчанию (например, при согласованном пользовательском имени роли).
Значение external_id генерируется консолью ClickHouse Cloud и используется всеми инфраструктурами BYOC в одном аккаунте AWS. Подробнее, включая устаревший заполнитель emptyid, см. в разделе Внешний ID AWS.
Настройте инфраструктуру BYOC
В консоли ClickHouse Cloud при настройке новой инфраструктуры укажите следующее:
- В разделе VPC configuration выберите Use existing VPC.
- Введите свой VPC ID (например,
vpc-0bb751a5b888ad123). - Введите Private subnet IDs для 3 подсетей, которые вы настроили ранее.
- При необходимости введите Public subnet IDs, если в вашей конфигурации требуются общедоступные балансировщики нагрузки.
- Нажмите Set up Infrastructure, чтобы начать подготовку инфраструктуры.

Управляемые клиентом роли IAM
Для организаций с повышенными требованиями к безопасности или строгими требованиями соответствия вы можете предоставить собственные роли IAM вместо того, чтобы ClickHouse Cloud создавал их автоматически. Такой подход дает вам полный контроль над разрешениями IAM и позволяет применять политики безопасности вашей организации.
С управляемыми клиентом ролями IAM вы:
- Заранее создаете IAM-роли для каждой инфраструктуры, которые иначе создал бы ClickHouse Cloud
- Убираете разрешения на запись в IAM у
ClickHouseManagementRole, используемой для межаккаунтного доступа - Сохраняете полный контроль над разрешениями ролей и отношениями доверия
Оба приведенных ниже модуля используют external_id, сгенерированный в консоли ClickHouse Cloud; все инфраструктуры BYOC в одном аккаунте AWS используют один и тот же внешний ID. Подробнее, включая устаревший заполнитель emptyid, см. в разделе Внешний ID AWS.
Настройте роль управления без разрешений на запись в IAM
При выполнении первоначальной настройки BYOC отключите разрешения на запись в IAM для роли управления. В шаблоне CloudFormation установите параметр IncludeIAMWritePermissions в значение false. В модуле Terraform:
module "clickhouse_onboarding" {
source = "github.com/ClickHouse/terraform-byoc-onboarding.git//modules/aws?ref=<version>"
external_id = "<external-id-provided-by-clickhouse>"
include_iam_write_permissions = false
}Замените <version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.
Создайте IAM-роли для каждой инфраструктуры
Перед подготовкой каждой инфраструктуры BYOC создайте необходимые для нее IAM-роли (роли EKS Pod Identity, роль доступа ClickHouse к S3 и роль управления плоскостью данных) с помощью per-infra-модуля terraform-byoc-onboarding:
module "clickhouse_per_infra_iam" {
source = "github.com/ClickHouse/terraform-byoc-onboarding.git//modules/aws-per-infra-iam?ref=<version>"
spoken_name = "<spoken-name-provided-by-clickhouse>"
region = "<aws-region-of-the-infrastructure>"
external_id = "<external-id-provided-by-clickhouse>"
}Замените <version> на последний тег со страницы релизов модуля — всегда используйте последний релиз.
Поддерживайте роли для каждой инфраструктуры в актуальном состоянии
Сведения о ролях IAM, которые ClickHouse Cloud создает по умолчанию, см. в справочнике по привилегиям BYOC.