Provisi otomatis di Azure Data Explorer

Provisi otomatis adalah proses untuk menyebarkan dan mengonfigurasi sumber daya yang Anda butuhkan untuk menjalankan kluster Azure Data Explorer Anda dengan cepat. Ini adalah bagian penting dari alur kerja DevOps atau DataOps. Proses provisi tidak mengharuskan Anda untuk mengonfigurasi kluster secara manual, tidak memerlukan intervensi manusia, dan mudah disiapkan.

Anda dapat menggunakan provisi otomatis untuk menyebarkan kluster yang telah dikonfigurasi sebelumnya dengan data, sebagai bagian dari alur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Beberapa manfaat utama dari melakukannya termasuk kemampuan untuk:

  • Tentukan dan pertahankan beberapa lingkungan.
  • Lacak penyebaran dalam kontrol sumber.
  • Lebih mudah kembali ke versi sebelumnya.
  • Memfasilitasi pengujian otomatis dengan menyediakan lingkungan pengujian khusus.

Artikel ini memberikan gambaran umum tentang berbagai mekanisme untuk mengotomatiskan provisi lingkungan Azure Data Explorer, termasuk infrastruktur, entitas skema, dan penyerapan data. Ini juga memberikan referensi ke berbagai alat dan teknik yang digunakan untuk mengotomatiskan proses provisi.

Gambar yang menunjukkan alur umum penyebaran.

Menyebarkan infrastruktur

Penyebaran infrastruktur berkaitan dengan penyebaran sumber daya Azure, termasuk kluster, database, dan koneksi data. Ada beberapa jenis penyebaran infrastruktur yang berbeda, termasuk:

Templat ARM dan skrip Terraform adalah dua cara utama dan deklaratif untuk menyebarkan infrastruktur Azure Data Explorer.

Penyebaran templat ARM

Templat ARM adalah file JSON atau Bicep yang menentukan infrastruktur dan konfigurasi penyebaran. Anda dapat menggunakan templat untuk menyebarkan kluster, database, koneksi data, dan banyak komponen infrastruktur lainnya. Untuk informasi selengkapnya, lihat Membuat kluster dan database Azure Data Explorer dengan menggunakan templat Azure Resource Manager.

Anda juga dapat menggunakan templat ARM untuk menyebarkan skrip perintah, yang membantu Anda membuat skema database dan menentukan kebijakan. Untuk informasi selengkapnya, lihat Mengonfigurasi database dengan menggunakan skrip Bahasa Kueri Kusto.

Anda dapat menemukan contoh templat lainnya di situs Templat Mulai Cepat Azure.

Penyebaran Terraform

Terraform adalah alat perangkat lunak infrastruktur sebagai kode sumber terbuka. Ini menyediakan alur kerja CLI yang konsisten untuk mengelola layanan cloud. Terraform mengkodifikasi API cloud ke dalam file konfigurasi deklaratif.

Terraform menawarkan kemampuan yang sama dengan templat ARM. Anda dapat menggunakan Terraform untuk menyebarkan kluster, database, koneksi data, dan komponen infrastruktur lainnya.

Anda juga dapat menggunakan Terraform untuk menyebarkan skrip perintah, yang membantu Anda membuat skema database dan menentukan kebijakan.

Penyebaran imperatif

Anda juga dapat menyebarkan infrastruktur secara imperatif, dengan menggunakan salah satu platform yang didukung:

Menyebarkan entitas skema

Penyediaan entitas skema berkaitan dengan penyebaran tabel, fungsi, kebijakan, dan izin. Anda dapat membuat atau memperbarui entitas dengan menjalankan skrip yang terdiri dari perintah manajemen.

Anda dapat mengotomatiskan penyebaran entitas skema dengan menggunakan metode berikut:

  • Templat ARM
  • Skrip terraform
  • Kusto CLI
  • SDK
  • Alat
    • Sinkronkan Kusto. Gunakan alat pengembang interaktif ini untuk mengekstrak skema database atau skrip perintah manajemen. Anda kemudian dapat menggunakan skrip perintah konten yang diekstrak untuk penyebaran otomatis.
    • Delta Kusto: Panggil alat ini dalam alur CI/CD. Ini dapat membandingkan dua sumber, seperti skema database atau skrip perintah manajemen, dan menghitung skrip perintah manajemen delta. Anda kemudian dapat menggunakan skrip perintah konten yang diekstrak untuk penyebaran otomatis.
    • Tugas Azure DevOps untuk Azure Data Explorer.

Menyerap data

Terkadang Anda ingin menyerap data ke dalam kluster Anda. Misalnya, Anda mungkin ingin menyerap data untuk menjalankan pengujian atau membuat ulang lingkungan. Anda dapat menggunakan metode berikut untuk menyerap data:

Contoh penyebaran menggunakan alur CI/CD

Dalam contoh berikut, Anda menggunakan alur CI/CD Azure DevOps yang menjalankan alat untuk mengotomatiskan penyebaran infrastruktur, entitas skema, dan data. Ini adalah salah satu contoh alur yang menggunakan sekumpulan alat tertentu, tetapi Anda dapat menggunakan alat dan langkah lain. Misalnya, di lingkungan produksi, Anda mungkin ingin membuat alur yang tidak menyerap data. Anda juga dapat menambahkan langkah-langkah lebih lanjut ke alur, seperti menjalankan pengujian otomatis pada kluster yang dibuat.

Di sini, Anda menggunakan alat berikut:

Jenis penyebaran Alat Tugas
Infrastruktur Templat ARM Membuat kluster dan database
Entitas skema Kusto CLI Membuat tabel dalam database
Data LightIngest Menyerap data ke dalam satu tabel

Gambar yang menunjukkan alur contoh penyebaran.

Gunakan langkah-langkah berikut untuk membuat alur.

Langkah 1: Membuat koneksi layanan

Tentukan koneksi layanan jenis Azure Resource Manager. Arahkan koneksi ke grup langganan dan sumber daya tempat Anda ingin menyebarkan kluster. Perwakilan layanan Azure dibuat, dan Anda menggunakannya untuk menyebarkan templat ARM. Anda dapat menggunakan prinsipal yang sama untuk menyebarkan entitas skema dan menyerap data. Anda harus secara eksplisit meneruskan kredensial ke alat Kusto CLI dan LightIngest.

Langkah 2: Membuat alur

Tentukan alur (deploy-environ) yang akan Anda gunakan untuk menyebarkan kluster, membuat entitas skema, dan menyerap data.

Sebelum dapat menggunakan alur, Anda harus membuat variabel rahasia berikut:

Nama variabel Deskripsi
clusterName Nama kluster Azure Data Explorer.
serviceConnection Nama koneksi Azure DevOps yang digunakan untuk menyebarkan templat ARM.
appId ID klien dari perwakilan layanan yang digunakan untuk berinteraksi dengan kluster.
appSecret Rahasia perwakilan layanan.
appTenantId ID penyewa dari perwakilan layanan.
location Wilayah Azure tempat Anda akan menyebarkan kluster. Contohnya,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

Langkah 3: Buat templat ARM untuk menyebarkan kluster

Tentukan templat ARM (deploy-infra.json) yang akan Anda gunakan untuk menyebarkan kluster ke grup langganan dan sumber daya Anda.

{
    "$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
                    }
                }
            ]
        }
    ]
}

Langkah 4: Buat skrip KQL untuk membuat entitas skema

Tentukan skrip KQL (MyDatabase.kql) yang akan Anda gunakan untuk membuat tabel dalam database.

.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)

Langkah 5: Membuat skrip KQL untuk menyerap data

Buat file data CSV (customer.csv) untuk diserap.

customerName,customerAddress
Contoso Ltd,Paris
Datum Corporation,Seattle
Fabrikam,NYC

Cuplikan layar memperlihatkan eksekusi pekerjaan dari contoh alur.

Anda membuat kluster dengan menggunakan kredensial perwakilan layanan yang Anda tentukan dalam alur. Untuk memberikan izin kepada pengguna Anda, ikuti langkah-langkah dalam Mengelola izin database Azure Data Explorer.

Cuplikan layar memperlihatkan database yang disebarkan dengan dua tabelnya di antarmuka pengguna web Azure Data Explorer.

Anda dapat memverifikasi penyebaran dengan menjalankan kueri terhadap tabel Pelanggan . Anda akan melihat tiga rekaman yang diimpor dari file CSV.