Перейти к основному содержимому

Настройка PrivateLink для самостоятельно размещённого облачного VCS Enterprise +

Доступно для определённых Enterprise-тарифов

Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:

  • Business Critical
  • Virtual Private

Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.

AWS PrivateLink обеспечивает приватное подключение от dbt к вашей самостоятельно размещённой облачной системе управления версиями (VCS), направляя запросы через вашу виртуальную частную сеть (VPC). Такой тип подключения не требует публичного раскрытия конечной точки ваших VCS‑репозиториев и не предполагает прохождения запросов через публичный интернет, что обеспечивает максимально возможный уровень безопасности. AWS рекомендует использовать подключение через PrivateLink в рамках своего Well-Architected Framework и подробно описывает этот паттерн в разделе Shared Services документа AWS PrivateLink whitepaper.

Вы узнаете, на высоком уровне, какие ресурсы необходимы для реализации этого решения. Облачные среды и процессы развертывания сильно различаются, поэтому информация из этого руководства может потребовать адаптации под ваши требования.

Обзор архитектуры dbt и AWS PrivateLink для VCS на высоком уровнеОбзор архитектуры dbt и AWS PrivateLink для VCS на высоком уровне

Необходимые ресурсы для создания соединения

Создание соединения Interface VPC PrivateLink требует создания нескольких ресурсов AWS в вашем аккаунте AWS и частной сети, содержащей самоуправляемый экземпляр VCS. Вы несете ответственность за развертывание и обслуживание этих ресурсов. После развертывания информация о соединении и разрешения передаются в dbt Labs для завершения соединения, что позволяет прямое частное подключение VPC к VPC.

Этот подход отличается от других и не требует настраивать VPC peering между вашими аккаунтами AWS и dbt.

1. Развертывание ресурсов AWS

Создание соединения Interface VPC PrivateLink требует создания нескольких ресурсов AWS в аккаунте, содержащем или подключенном к вашему самоуправляемому облачному VCS. Эти ресурсы могут быть созданы через AWS Console, AWS CLI или Infrastructure-as-Code, такие как Terraform или AWS CloudFormation.

  • Security Group (только для размещенных в AWS) — Если вы подключаетесь к существующей установке VCS, это, вероятно, уже существует, однако, возможно, вам потребуется добавить или изменить правила Security Group для принятия трафика от Network Load Balancer (NLB), созданного для этой Endpoint Service.
  • Target Group(s) - Target Group прикрепляется к Listener на NLB и отвечает за маршрутизацию входящих запросов к здоровым целям в группе. Если подключение к системе VCS осуществляется как по SSH, так и по HTTPS, необходимо создать две Target Groups.
    • Тип цели (выберите наиболее подходящий):
      • Instance/ASG: Выберите существующие экземпляры EC2, на которых работает система VCS, или группу автоматического масштабирования (ASG) для автоматического подключения любых экземпляров, запущенных из этой ASG.
      • Application Load Balancer (ALB): Выберите ALB, который уже имеет прикрепленные экземпляры VCS EC2 (только HTTP/S трафик).
      • IP Addresses: Выберите IP-адрес(а) экземпляров EC2, на которых установлена система VCS. Имейте в виду, что IP-адрес экземпляра EC2 может измениться, если экземпляр будет перезапущен по какой-либо причине.
    • Протокол/Порт: Выберите одну пару протокол/порт для каждой Target Group, например:
      • TG1 - SSH: TCP/22
  • TG2 — HTTPS: TCP/443 или TLS, если вы хотите прикрепить сертификат для расшифровки TLS‑соединений (подробнее).
    • VPC: Выберите VPC, в котором будут созданы VPC Endpoint Service и NLB.
    • Health checks: Цели должны зарегистрироваться как healthy, чтобы NLB начал перенаправлять запросы. Настройте проверку состояния, подходящую для вашего сервиса и протокола Target Group (подробнее).
    • Register targets: Зарегистрируйте цели (см. выше) для сервиса VCS (подробнее). Крайне важно убедиться, что цели находятся в состоянии healthy, прежде чем пытаться установить соединение со стороны dbt.
  • Network Load Balancer (NLB) — требуется создать Listener, который будет привязан к только что созданным Target Group для порта 443 и/или 22, в зависимости от конфигурации.
    • Scheme: Internal
    • IP address type: IPv4
    • Network mapping: Выберите VPC, в котором разворачиваются VPC Endpoint Service и NLB, и выберите подсети как минимум в двух зонах доступности (Availability Zones).
    • Security Groups: Network Load Balancer (NLB), связанный с VPC Endpoint Service, либо не должен иметь привязанных Security Group, либо Security Group должна содержать правило, разрешающее запросы из соответствующих private CIDR(s) dbt. Обратите внимание, что это отличается от статических публичных IP‑адресов, перечисленных на странице dbt Access, Regions, & IP addresses. Корректные private CIDR(s) могут быть предоставлены службой поддержки dbt по запросу. При необходимости временное добавление разрешающего правила 10.0.0.0/8 позволит обеспечить подключение до тех пор, пока правило не будет уточнено до меньшего диапазона CIDR, предоставленного dbt.
    • Listeners: Создайте по одному Listener для каждой Target Group, который сопоставляет соответствующий входящий порт с соответствующей Target Group (подробнее).
  • Endpoint Service — VPC Endpoint Service обеспечивает VPC‑to‑VPC подключение, маршрутизируя входящие запросы к настроенному балансировщику нагрузки.
    • Load balancer type: Network.
    • Load balancer: Подключите NLB, созданный на предыдущем шаге.
    • Acceptance required (recommended): При включении требует, чтобы каждый новый запрос на подключение к VPC Endpoint Service был принят клиентом перед тем, как будет разрешена связность (подробнее).
Балансировка нагрузки между зонами (Cross-Zone Load Balancing)

Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или Target Group; для некоторых подключений она может быть обязательной. Балансировка между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Учтите, что межзональная связность может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt они должны быть минимальными.

2. Предоставление доступа аккаунту AWS dbt к VPC Endpoint Service

После развертывания этих ресурсов необходимо предоставить доступ аккаунту AWS dbt Labs для создания VPC Endpoint в нашей VPC. На развернутом VPC Endpoint Service нажмите вкладку Allow principals. Нажмите Allow principals, чтобы предоставить доступ. Введите ARN следующей роли IAM в соответствующем производственном аккаунте AWS и сохраните изменения (подробности).

  • Principal: arn:aws:iam::346425330055:role/MTPL_Admin
Введите ARNВведите ARN

3. Получение имени VPC Endpoint Service

После того как VPC Endpoint Service будет создан и настроен, найдите имя сервиса в консоли AWS, перейдя в раздел VPCEndpoint Services и выбрав соответствующий endpoint service. Скопируйте значение поля service name и укажите его в обращении в службу поддержки dbt.

Получите значение поля имени сервисаПолучите значение поля имени сервиса
Настройка пользовательского DNS

Если для подключения к сервису VCS требуется пользовательский домен и/или URL для TLS, команда dbt Labs Infrastructure может настроить private hosted zone в частной сети dbt. Например:

  • Private hosted zone: examplecorp.com
  • DNS record: github.examplecorp.com

4. Добавьте необходимую информацию в шаблон ниже и отправьте запрос в dbt Support:

Subject: New Multi-Tenant PrivateLink Request
- Type: VCS Interface-type
- VPC Endpoint Service Name:
- Custom DNS (if HTTPS)
- Private hosted zone:
- DNS record:
- VCS install AWS Region (for example, us-east-1, eu-west-2):
- dbt AWS multi-tenant environment (US, EMEA, AU):

dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.

5. Принятие запроса на соединение

Когда вы получите уведомление о том, что ресурсы развернуты в среде dbt, вам необходимо принять подключение к endpoint (если только VPC Endpoint Service не настроен на автоматическое принятие запросов на подключение). Запросы можно принять через консоль AWS, как показано ниже, или с помощью AWS CLI.

Принять запрос на соединениеПринять запрос на соединение

После того как вы примете запрос на подключение к endpoint, вы сможете использовать PrivateLink endpoint в dbt.

Настройка в dbt

После того как dbt подтвердит, что интеграция PrivateLink завершена, вы можете использовать ее в новой или существующей конфигурации git.

Чтобы настроить новую git‑интеграцию с PrivateLink:

  1. Нажмите на имя своей учетной записи в нижнем левом меню и перейдите в Account settings > Projects.
  2. Нажмите New project.
  3. Задайте имя проекта и настройте среду разработки.
  4. В разделе Set up repository нажмите Git clone.
  5. В качестве типа подключения выберите PrivateLink Endpoint.
    Настроенные интеграции появятся в выпадающем списке.
  6. Выберите настроенный endpoint из выпадающего списка.
  7. Нажмите Save.

Чтобы настроить существующую git‑интеграцию с PrivateLink:

  1. Щёлкните имя своей учётной записи в нижнем левом меню и перейдите в Account settings > Integrations.
  2. В разделе Gitlab выберите PrivateLink Endpoint в качестве типа подключения. Настроенные интеграции появятся в выпадающем меню.
  3. Выберите настроенную конечную точку из выпадающего списка.
  4. Нажмите Save.

Устранение неполадок

Если эндпоинт PrivateLink был создан и настроен в dbt, но соединение по‑прежнему не работает, проверьте следующие элементы сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно маршрутизироваться между dbt и базовым сервисом.

Конфигурация

Начните с конфигурации:

 1. Группа безопасности NLB

Сетевой балансировщик нагрузки (Network Load Balancer, NLB), связанный с VPC Endpoint Service, либо не должен иметь привязанной Security Group, либо Security Group должна содержать правило, разрешающее запросы из соответствующих приватных CIDR-диапазонов dbt. Обратите внимание, что это отличается от статических публичных IP-адресов, указанных на странице dbt Connection. Служба поддержки dbt может предоставить корректные приватные CIDR-диапазоны по запросу.

  • Note*: Чтобы проверить, является ли это причиной проблемы, можно временно добавить правило разрешения 10.0.0.0/8 — это должно обеспечить соединение до тех пор, пока правило не будет уточнено до более узкого CIDR-диапазона.
 2. Слушатель NLB и целевая группа

Проверьте, что к NLB подключён Listener, который соответствует порту, к которому пытается подключиться dbt. У этого Listener должно быть настроено действие, перенаправляющее трафик в Target Group с таргетами, указывающими на ваш бэкенд‑сервис. По крайней мере один (а лучше — все) из этих таргетов должен иметь статус Healthy. Нездоровые (Unhealthy) таргеты могут указывать на то, что сам бэкенд‑сервис действительно находится в некорректном состоянии, либо на то, что сервис защищён Security Group, которая не разрешает запросы от NLB.

 3. Балансировка нагрузки между зонами

Убедитесь, что для вашего NLB включена опция Cross-zone load balancing (проверьте вкладку Attributes у NLB в консоли AWS). Если она отключена, а зоны, к которым подключён dbt, не совпадают с зонами, в которых запущен сервис, запросы могут маршрутизироваться некорректно. Включение cross-zone load balancing также делает соединение более устойчивым в случае отказа одной из зон. При использовании cross-zone connectivity могут взиматься дополнительные платы за передачу данных, однако для запросов от dbt они, как правило, будут минимальными.

 4. Таблицы маршрутизации и ACL

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

Мониторинг

Чтобы помочь изолировать проблемы с подключением по PrivateLink от dbt, можно использовать несколько источников мониторинга для проверки активности запросов. Для того чтобы в мониторинге появились данные, запросы сначала должны быть отправлены на endpoint. Обратитесь в службу поддержки dbt, чтобы узнать, когда выполнялось тестирование подключения, или запросить новые попытки подключения. Используйте это время, чтобы сопоставить его с активностью в следующих источниках мониторинга.

 Мониторинг сервиса конечной точки VPC

В консоли AWS перейдите в VPC -> Endpoint Services. Выберите тестируемый сервис конечной точки и нажмите вкладку Monitoring. Обновите временной интервал, чтобы включить время, когда были отправлены попытки тестового подключения. Если есть активность в графиках New connections и Bytes processed, значит, запросы были получены сервисом конечной точки, что предполагает, что конечная точка dbt маршрутизируется правильно.

 Мониторинг NLB

В консоли AWS перейдите в EC2 -> Load Balancers. Выберите тестируемый сетевой балансировщик нагрузки (NLB) и нажмите вкладку Monitoring. Обновите временной интервал, чтобы включить время, когда были отправлены попытки тестового подключения. Если есть активность в графиках New flow count и Processed bytes, значит, запросы были получены NLB от сервиса конечной точки, что предполагает, что слушатель NLB, целевая группа и группа безопасности настроены правильно.

 Логи потоков VPC

Логи потоков VPC могут предоставить различную полезную информацию о запросах, маршрутизируемых через ваши VPC, хотя иногда их может быть сложно найти и интерпретировать. Логи потоков могут записываться либо в S3, либо в CloudWatch Logs, поэтому определите доступность этих логов для вашей VPC и запросите их соответствующим образом. Логи потоков записывают идентификатор сетевого интерфейса (ENI), исходный и целевой IP и порт, а также информацию о том, был ли запрос принят или отклонен группой безопасности и/или сетевым ACL. Это может быть полезно для понимания, прибыл ли запрос на определенный сетевой интерфейс и был ли этот запрос принят, что может выявить чрезмерно ограничительные правила. Для получения дополнительной информации о доступе и интерпретации логов потоков VPC см. соответствующую документацию AWS.

Нашли ошибку?

0
Loading