Управляемая клиентом 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 должна как минимум разрешать исходящий доступ в интернет, чтобы компоненты ClickHouse BYOC могли взаимодействовать с Tailscale control plane. Tailscale используется для обеспечения безопасной zero-trust-сети для приватных операций управления. Для первоначальной регистрации и настройки Tailscale требуется доступ к публичному интернету — напрямую или через NAT gateway. Это подключение необходимо для сохранения как конфиденциальности, так и безопасности вашего развертывания BYOC.Разрешение DNS
Убедитесь, что в вашей VPC работает разрешение DNS и что стандартные DNS-имена не блокируются, не перехватываются и не переопределяются. ClickHouse BYOC использует DNS для разрешения адресов серверов управления Tailscale и конечных точек сервисов ClickHouse. Если DNS недоступен или настроен неправильно, сервисы BYOC могут не подключаться или работать некорректно.
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 минут.
Управляемые клиентом роли 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
Поддерживайте роли для каждой инфраструктуры в актуальном состоянии