Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автоматическая подготовка позволяет быстро развертывать и настраивать ресурсы, требуемые для выполнения кластера Azure Data Explorer. Это важнейшая часть рабочего процесса DevOps или DataOps. Процесс подготовки избавляет вас от настройки кластера вручную, не требует вмешательства оператора и легко выполняется.
Вы можете использовать автоматическую подготовку для развертывания предварительно настроенного кластера с данными в рамках конвейера непрерывной интеграции и непрерывной доставки (CI/CD). Вот лишь некоторые из важнейших преимуществ такого подхода:
- возможность определять и поддерживать несколько сред;
- отслеживание развертываний в системе управления версиями;
- упрощение отката к предыдущим версиям;
- упрощение автоматического тестирования благодаря наличию специализированных тестовых сред.
В этой статье представлено обобщенное описание нескольких механизмов автоматической подготовки к работе сред Azure Data Explorer, включая инфраструктуру, сущности схемы и прием данных. Также здесь есть ссылки на разные средства и технологии, используемые для автоматизации процесса подготовки к работе.
Развертывание инфраструктуры
Развертывание инфраструктуры относится к развертыванию ресурсов Azure, включая кластеры, базы данных и подключения к данным. Различают несколько типов развертываний инфраструктуры, в частности:
- Развертывание шаблонов Azure Resource Manager (ARM)
- Развертывание Terraform
- Императивное развертывание
Шаблоны ARM и скрипты Terraform — это два основных декларативных способа развертывания инфраструктуры Azure Data Explorer.
Развертывание шаблона ARM
Шаблоны ARM — это файлы JSON или Bicep, которые определяют инфраструктуру и конфигурацию развертывания. С их помощью можно развертывать кластеры, базы данных, подключения к данным и многие другие компоненты инфраструктуры. Подробнее см. статью Создание кластера и базы данных Azure Data Explorer с помощью шаблона Azure Resource Manager.
Вы также можете использовать шаблоны ARM для развертывания командных скриптов, которые помогут вам создать схему базы данных и определить политики. Дополнительные сведения см. в статье Настройка базы данных с помощью скрипта языка запросов Kusto.
Дополнительные примеры шаблонов можно найти на сайте шаблонов быстрого запуска Azure.
Развертывание Terraform
Terraform — это программное средство IaC (инфраструктура как код) с открытым кодом. Оно предоставляет последовательный рабочий процесс CLI для управления облачными службами. Terraform кодирует облачные API в декларативные файлы конфигурации.
Terraform предлагает те же возможности, что и шаблоны ARM. С помощью Terraform можно развертывать кластеры, базы данных, подключения к данным и другие компоненты инфраструктуры.
Вы также можете использовать Terraform для развертывания командных скриптов, которые помогут вам создать схему базы данных и определить политики.
Императивное развертывание
Вы также можете развернуть инфраструктуру в принудительном порядке, используя любую из поддерживаемых платформ:
Развертывание сущностей схемы
Подготовка сущностей схемы относится к развертыванию таблиц, функций, политик и разрешений. Вы можете создавать или обновлять сущности, выполняя скрипты, состоящие из команд управления.
Для автоматизации развертывания сущностей схемы можно применять следующие методы:
- Шаблоны ARM
- Скрипты Terraform
- Интерфейс командной строки Kusto
- Пакеты SDK
- Инструменты
- Sync Kusto. Используйте это интерактивное средство разработчика для извлечения схемы базы данных или скрипта команды управления. Извлеченное содержимое можно затем использовать для автоматического развертывания.
- Delta Kusto — вызовите это средство в конвейере CI/CD. Он может сравнить два источника, например схему базы данных или скрипт команды управления, и вычислить скрипт команды разностного управления. Извлеченное содержимое можно затем использовать для автоматического развертывания.
- Задача Azure DevOps для Azure Data Explorer.
Прием данных
Иногда вам потребуется принимать в кластер данные. Например, это могут быть данные для выполнения тестов или повторного создания среды. Для приема данных вы можете использовать следующие методы:
- Пакеты SDK
- Средство CLI LightIngest
- Активация конвейера Фабрики данных Azure
Пример развертывания с помощью конвейера CI/CD
В следующем примере показано, как использовать конвейер Azure DevOps CI/CD со средствами для автоматического развертывания инфраструктуры, сущностей схемы и данных. Это один из примеров конвейера, который использует определенный набор средств, но можно использовать и другие средства и шаги. Например, в рабочей среде можно создать конвейеры, которые не выполняют прием данных. Вы можете добавить в этот конвейер любые шаги по своему усмотрению, например автоматические тесты в созданном кластере.
Можно использовать следующие средства.
| Тип развертывания | Средство | Задача |
|---|---|---|
| Инфраструктура | Шаблоны ARM | Создание кластера и базы данных |
| Сущности схемы | Интерфейс командной строки Kusto | Создание таблиц в базе данных |
| Data | LightIngest | Прием данных в одну таблицу |
Ниже приведена процедура создания конвейера.
Шаг 1. Создание подключения к службе
Определите подключение службы типа Azure Resource Manager. Укажите подключение к подписке и группе ресурсов, в которой вы хотите развернуть свой кластер. Будет создан субъект-служба Azure, который вы затем примените для развертывания шаблона ARM. Тот же субъект-службу можно использовать и для развертывания сущностей схемы, и для приема данных, достаточно лишь явным образом передать учетные данные в CLI Kusto или средство LightIngest.
Шаг 2. Создание конвейера
Определите конвейер (deploy-environ), который будет использоваться для развертывания кластера, создания сущностей схемы и приема данных.
Но прежде, чем использовать этот конвейер, необходимо создать следующие переменные секретов:
| Имя переменной | Description |
|---|---|
clusterName |
Имя кластера Azure Data Explorer. |
serviceConnection |
Имя подключения Azure DevOps, которое используется для развертывания шаблона ARM. |
appId |
Идентификатор клиента для субъекта-службы, который используется для взаимодействия с кластером. |
appSecret |
Секрет субъекта-службы. |
appTenantId |
Идентификатор арендатора субъекта-службы. |
location |
Регион Azure, в котором будет развернут кластер. Например, eastus. |
resources:
- repo: self
stages:
- stage: deploy_cluster
displayName: Deploy cluster
variables: []
clusterName: specifyClusterName
serviceConnection: specifyServiceConnection
appId: specifyAppId
appSecret: specifyAppSecret
appTenantId: specifyAppTenantId
location: specifyLocation
jobs:
- job: e2e_deploy
pool:
vmImage: windows-latest
variables: []
steps:
- bash: |
nuget install Microsoft.Azure.Kusto.Tools -Version 5.3.1
# Rename the folder (including the most recent version)
mv Microsoft.Azure.Kusto.Tools.* kusto.tools
displayName: Download required Kusto.Tools Nuget package
- task: AzureResourceManagerTemplateDeployment@3
displayName: Deploy Infrastructure
inputs:
deploymentScope: 'Resource Group'
# subscriptionId and resourceGroupName are specified in the serviceConnection
azureResourceManagerConnection: $(serviceConnection)
action: 'Create Or Update Resource Group'
location: $(location)
templateLocation: 'Linked artifact'
csmFile: deploy-infra.json
overrideParameters: "-clusterName $(clusterName)"
deploymentMode: 'Incremental'
- bash: |
# Define connection string to cluster's database, including service principal's credentials
connectionString="https://$(clusterName).$(location).kusto.windows.net/myDatabase;Fed=true;AppClientId=$(appId);AppKey=$(appSecret);TenantId=$(appTenantId)"
# Execute a KQL script against the database
kusto.tools/tools/Kusto.Cli $connectionString -script:MyDatabase.kql
displayName: Create Schema Entities
- bash: |
connectionString="https://ingest-$(CLUSTERNAME).$(location).kusto.windows.net/;Fed=true;AppClientId=$(appId);AppKey=$(appSecret);TenantId=$(appTenantId)"
kusto.tools/tools/LightIngest $connectionString -table:Customer -sourcePath:customers.csv -db:myDatabase -format:csv -ignoreFirst:true
displayName: Ingest Data
Шаг 3. Создание шаблона ARM для развертывания кластера
Определите шаблон ARM (deploy-infra.json), который будет использоваться для развертывания кластера в подписке и группе ресурсов.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterName": {
"type": "string",
"minLength": 5
}
},
"variables": {
},
"resources": [
{
"name": "[parameters('clusterName')]",
"type": "Microsoft.Kusto/clusters",
"apiVersion": "2021-01-01",
"location": "[resourceGroup().location]",
"sku": {
"name": "Dev(No SLA)_Standard_E2a_v4",
"tier": "Basic",
"capacity": 1
},
"resources": [
{
"name": "myDatabase",
"type": "databases",
"apiVersion": "2021-01-01",
"location": "[resourceGroup().location]",
"dependsOn": [
"[resourceId('Microsoft.Kusto/clusters', parameters('clusterName'))]"
],
"kind": "ReadWrite",
"properties": {
"softDeletePeriodInDays": 365,
"hotCachePeriodInDays": 31
}
}
]
}
]
}
Шаг 4. Создание скрипта KQL для создания сущностей схемы
Определите скрипт KQL (MyDatabase.kql), который будет использоваться для создания таблиц в базах данных.
.create table Customer(CustomerName:string, CustomerAddress:string)
// Set the ingestion batching policy to trigger ingestion quickly
// This is to speedup reaction time for the sample
// Do not do this in production
.alter table Customer policy ingestionbatching @'{"MaximumBatchingTimeSpan":"00:00:10", "MaximumNumberOfItems": 500, "MaximumRawDataSizeMB": 1024}'
.create table CustomerLogs(CustomerName:string, Log:string)
Шаг 5. Создание скрипта KQL для приема данных
Создайте файл в формате CSV (customer.csv) с данными для приема.
customerName,customerAddress
Contoso Ltd,Paris
Datum Corporation,Seattle
Fabrikam,NYC
Вы создадите кластер с использованием учетных данных субъекта-службы, которые вы указали в конвейере. Чтобы предоставить разрешения пользователям, выполните шаги из статьи Управление разрешениями баз данных Azure Data Explorer.
Чтобы проверить новое развертывание, попробуйте выполнить запрос по таблице Customer. Вы увидите три записи, которые ранее импортировали из CSV-файла.
Связанный контент
- Создайте кластер и базу данных с помощью шаблона Azure Resource Manager.
- Настройте базу данных с помощью скрипта KQL.