Среды развертывания
Среды развертывания в dbt Cloud играют ключевую роль в развертывании задач dbt в производственной среде и использовании функций или интеграций, которые зависят от метаданных или результатов dbt. Для выполнения dbt среды определяют настройки, используемые во время выполнения задач, включая:
- Версию dbt Core, которая будет использоваться для выполнения вашего проекта
- Информацию о подключении к хранилищу данных (включая настройки целевой базы данных/схемы)
- Версию вашего кода для выполнения
Проект dbt Cloud может иметь несколько сред развертывания, предоставляя вам гибкость и возможность настройки выполнения задач dbt. Вы можете использовать среды развертывания для создания и планирования задач, включения непрерывной интеграции и других действий в зависимости от ваших конкретных нужд или требований.
Чтобы узнать о различных подходах к управлению средами dbt Cloud и получить рекомендации для уникальных нужд вашей организации, прочитайте лучшие практики для сред dbt Cloud.
Узнайте больше о средах разработки и развертывания в средах dbt Cloud.
Существует три типа сред развертывания:
- Производственная: Среда для преобразования данных и построения конвейеров для производственного использования.
- Промежуточная: Среда для работы с производственными инструментами с ограничением доступа к производственным данным.
- Общая: Среда общего назначения для разработки развертывания.
Мы настоятельно рекомендуем использовать тип среды Производственная
для окончательных, достоверных данных развертывания. Может быть только одна среда, отмеченная для окончательных производственных рабочих процессов, и мы не рекомендуем использовать Общую
среду для этой цели.
Создание среды развертывания
Чтобы создать новую среду развертывания dbt Cloud, перейдите в Deploy -> Environments и нажмите Create Environment. Выберите Deployment в качестве типа среды. Опция будет недоступна, если у вас уже есть среда разработки.
Установить как производственную среду
В dbt Cloud каждый проект может иметь одну назначенную среду развертывания, которая служит его производственной средой. Эта производственная среда необходима для использования таких функций, как dbt Explorer и перекрестные ссылки между проектами. Она действует как источник истины для производственного состояния проекта в dbt Cloud.
Семантический слой
Для клиентов, использующих семантический слой dbt, следующая секция настроек среды — это конфигурации семантического слоя. Руководство по настройке семантического слоя содержит самые актуальные инструкции по настройке.
Вы также можете использовать планировщик задач dbt для проверки ваших семантических узлов в задаче CI, чтобы убедиться, что изменения в коде dbt моделей не нарушают эти метрики.
Промежуточная среда
Используйте промежуточную среду, чтобы предоставить разработчикам доступ к рабочим процессам и инструментам развертывания, контролируя при этом доступ к производственным данным. Промежуточные среды позволяют достичь более детального контроля над разрешениями, подключениями к хранилищу данных и изоляцией данных — в рамках одного проекта в dbt Cloud.
Git-рабочий процесс
Вы можете подойти к этому несколькими способами, но самый простой — это настроить промежуточную среду с долгоживущей веткой (например, staging
), аналогичной, но отдельной от основной ветки (например, main
).
В этом сценарии рабочие процессы будут идеальным образом перемещаться вверх по потоку от среды разработки -> промежуточной среды -> производственной среды, с ветками разработчиков, питающимися в ветку staging
, а затем в конечном итоге сливающимися в main
. Во мн огих случаях ветки main
и staging
будут идентичны после слияния и останутся такими до следующей партии изменений из веток development
, готовых к повышению. Мы рекомендуем устанавливать правила защиты веток на staging
, аналогичные main
.
Некоторые клиенты предпочитают подключать разработку и промежуточную среду к своей ветке main
, а затем регулярно создавать ветки релизов (ежедневно или еженедельно), которые питаются в производственную среду.
Зачем использовать промежуточную среду
Основные причины использования промежуточной среды:
- Дополнительный уровень проверки перед развертыванием изменений в производственной среде. Вы можете развертывать, тестировать и исследовать ваши dbt модели в промежуточной среде.
- Четкая изоляция между рабочими процессами разработки и производственными данными. Это позволяет разработчикам работать с использованием метаданных, используя такие функции, как отложенное выполнение и перекрестные ссылки между проектами, без доступа к данным в производственных развертываниях.
- Предоставление разработчикам возможности создавать, редактировать и запускать произвольные задачи в промежуточной среде, при этом сохраняя производственную среду заблокированной с использованием разрешений на уровне среды.
Условная конфигурация источников позволяет вам указывать на "prod" или "non-prod" исходные данные в зависимости от среды, в которой вы работаете. Например, этот источник будет указывать на <DATABASE>.sensitive_source.table_with_pii
, где <DATABASE>
динамически разрешается на основе переменной среды.
sources:
- name: sensitive_source
database: "{{ env_var('SENSITIVE_SOURCE_DATABASE') }}"
tables:
- name: table_with_pii
Существует ровно один источник (sensitive_source
), и все downstream dbt модели выбирают из него как {{ source('sensitive_source', 'table_with_pii') }}
. Код в вашем проекте и форма DAG остаются последовательными во всех средах. Настраивая это таким образом, а не дублируя источники, вы получаете некоторые важные преимущества.
Перекрестные ссылки между проектами в dbt Mesh: Предположим, у вас есть Project B
, который является downstream от Project A
с настроенными перекрестными ссылками между проектами в моделях. Когда разработчики работают в IDE для Project B
, перекрестные ссылки будут разрешаться в промежуточную среду Project A
, а не в производственную. Вы получите те же результаты с этими ссылками, когда задачи выполняются в промежуточной среде. Только производственная среда будет ссылаться на производственные данные, сохраняя данные и доступ изолированными без необходимости в отдельных проектах.
Быстрая разработка с помощью отложенного выполнения: Если у Project B
также есть промежуточное развертывание, то ссылки на не построенные upstream модели в Project B
будут разрешаться в эту среду, используя отложенное выполнение, а не разрешаться в модели в производственной среде. Это экономит время разработчиков и затраты на хранилище, сохраняя при этом четкое разделение сред.
Наконец, промежуточная среда имеет свой собственный вид в dbt Explorer, предоставляя вам полный обзор ваших производственных и пред-производственных данных.
Создание промежуточной среды
В dbt Cloud перейдите в Deploy -> Environments и нажмите Create Environment. Выберите Deployment в качестве типа среды. Опция будет недоступна, если у вас уже есть среда разработки.
Следуйте шагам, описанным в учетных данных развертывания, чтобы завершить настройку среды.
Мы рекомендуем, чтобы учетные данные для хранилища данных были для выделенного пользователя или служебного принципала.
Подключение для развертывания
Подключения к хранилищу устанавливаются на уровне проекта для учетных записей dbt Cloud, и каждый проект может иметь одно подключение (учетная запись Snowflake, хост Redshift, проект Bigquery, хост Databricks и т.д.). Некоторые детали этого подключения (базы данных/схемы и т.д.) могут быть переопределены в этой секции настроек среды dbt Cloud.
Эта секция определяет точное местоположение в вашем хранилище, на которое dbt должен нацелиться при создании объектов хранилища! Эта секция будет выглядеть немного по-разному в зависимости от вашего поставщика хранилища.
Для всех хранилищ используйте расширенные атрибуты, чтобы переопределить отсутствующие или неактивные (серые) настройки.
- Postgres
- Redshift
- Snowflake
- Bigquery
- Spark
- Databricks
Эта секция не появится, если вы используете Postgres, так как все значения выводятся из подключения проекта. Используйте расширенные атрибуты, чтобы переопределить эти значения.
Эта секция не появится, если вы используете Redshift, так как все значения выводятся из подключения проекта. Используйте расширенные атрибуты, чтобы переопределить эти значения.
Редактируемые поля
- Роль: Роль Snowflake
- База данных: Целевая база данных
- Хранилище: Хранилище Snowflake
Эта секция не появится, если вы используете Bigquery, так как все значения выводятся из подключения проекта. Используйте расширенные атрибуты, чтобы переопределить эти значения.
Эта секция не появится, если вы используете Spark, так как все значения выводятся из подключения проекта. Используйте расширенные атрибуты, чтобы пере определить эти значения.
Редактируемые поля
- Каталог (необязательно): Пространство имен Unity Catalog
Учетные данные для развертывания
Эта секция позволяет ва м определить учетные данные, которые должны использоваться при подключении к вашему хранилищу. Методы аутентификации могут различаться в зависимости от хранилища и уровня dbt Cloud, на котором вы находитесь.
Для всех хранилищ используйте расширенные атрибуты, чтобы переопределить отсутствующие или неактивные (серые) настройки. Для учетных данных мы рекомендуем оборачивать расширенные атрибуты в переменные среды (password: '{{ env_var(''DBT_ENV_SECRET_PASSWORD'') }}'
), чтобы избежать отображения секретного значения в текстовом поле и журналах.
- Postgres
- Redshift
- Snowflake
- Bigquery
- Spark
- Databricks
Редактируемые поля
- Имя пользователя: Имя пользователя Postgres (скорее всего, учетная запись службы)
- Пароль: Пароль Postgres для указанного пользователя
- Схема: Целевая схема
Редактируемые поля
- Имя пользователя: Имя пользователя Redshift (скорее всего, учетная запись службы)
- Пароль: Пароль Redshift для указанного пользователя
- Схема: Целевая схема
Редактируемые поля
- Метод аутентификации: Определяет способ подключения dbt к вашему хранилищу
- Один из: [Имя пользователя и пароль, Парная ключевая аутентификация]
- Если Имя пользователя и пароль:
- Имя пользователя: Имя пользователя (скорее всего, учетная запись службы)
- Пароль: Пароль для указанного пользователя
- Если Парная ключевая аутентификация:
- Имя пользователя: Имя пользователя (скорее всего, учетная запись службы)
- Закрытый ключ: Значение закрытого SSH-ключа (необязательно)
- Пароль закрытого ключа: Значение пароля закрытого SSH-ключа (необязательно, только если требуется)
- Схема: Целевая схема для этой среды