Automatizované zřizování v Azure Data Exploreru

Automatizované zřizování je proces pro rychlé nasazení a konfiguraci prostředků, které potřebujete ke spuštění clusteru Azure Data Exploreru. Je to důležitá součást pracovního postupu DevOps nebo DataOps. Proces zřizování nevyžaduje ruční konfiguraci clusteru, nevyžaduje zásah člověka a je snadné ho nastavit.

Automatizované zřizování můžete použít k nasazení předkonfigurovaného clusteru s daty v rámci kanálu kontinuální integrace a průběžného doručování (CI/CD). Mezi klíčové výhody, které je potřeba udělat, patří:

  • Definujte a udržujte více prostředí.
  • Sledujte nasazení ve správě zdrojového kódu.
  • Snadněji se vraťte k předchozím verzím.
  • Usnadnění automatizovaného testování zřízením vyhrazených testovacích prostředí

Tento článek obsahuje přehled různých mechanismů pro automatizaci zřizování prostředí Azure Data Exploreru, včetně infrastruktury, entit schémat a příjmu dat. Poskytuje také odkazy na různé nástroje a techniky používané k automatizaci procesu zřizování.

Obrázek znázorňující obecný tok nasazení

Nasazení infrastruktury

Nasazení infrastruktury se týká nasazení prostředků Azure, včetně clusterů, databází a datových připojení. Existuje několik různých typů nasazení infrastruktury, mezi které patří:

Šablony ARM a skripty Terraformu jsou dva hlavní a deklarativní způsoby nasazení infrastruktury Azure Data Exploreru.

Nasazení šablony ARM

Šablony ARM jsou soubory JSON nebo Bicep , které definují infrastrukturu a konfiguraci nasazení. Šablony můžete použít k nasazení clusterů, databází, datových připojení a mnoha dalších komponent infrastruktury. Další informace najdete v tématu Vytvoření clusteru a databáze Azure Data Exploreru pomocí šablony Azure Resource Manageru.

Šablony ARM můžete použít také k nasazení skriptů příkazů, které vám pomůžou vytvořit schéma databáze a definovat zásady. Další informace naleznete v tématu Konfigurace databáze pomocí dotazovací jazyk Kusto skriptu.

Další ukázkové šablony najdete na webu Šablony pro rychlý start Azure.

Nasazení Terraformu

Terraform je opensourcový softwarový nástroj typu infrastruktura jako kód. Poskytuje konzistentní pracovní postup rozhraní příkazového řádku pro správu cloudových služeb. Terraform kodifikuje cloudová rozhraní API do deklarativních konfiguračních souborů.

Terraform nabízí stejné funkce jako šablony ARM. Terraform můžete použít k nasazení clusterů, databází, datových připojení a dalších komponent infrastruktury.

Terraform můžete použít také k nasazení skriptů příkazů, které vám pomůžou vytvořit schéma databáze a definovat zásady.

Imperativní nasazení

Infrastrukturu můžete nasadit imperativním způsobem pomocí kterékoli z podporovaných platforem:

Nasazení entit schématu

Zřizování entit schématu se týká nasazení tabulek, funkcí, zásad a oprávnění. Entity můžete vytvářet nebo aktualizovat spuštěním skriptů, které se skládají z příkazů pro správu.

Nasazení entit schématu můžete automatizovat pomocí následujících metod:

Ingestace dat

Někdy chcete ingestovat data do clusteru. Můžete například chtít ingestovat data ke spuštění testů nebo opětovnému vytvoření prostředí. K ingestování dat můžete použít následující metody:

Příklad nasazení s využitím kanálu CI/CD

V následujícím příkladu použijete kanál CI/CD Azure DevOps, který spouští nástroje pro automatizaci nasazení infrastruktury, entit schématu a dat. Toto je jeden z příkladů kanálu, který používá určitou sadu nástrojů, ale můžete použít jiné nástroje a kroky. V produkčním prostředí můžete například chtít vytvořit kanál, který neingestuje data. Do kanálu můžete také přidat další kroky, například spuštění automatizovaných testů na vytvořeném clusteru.

Tady použijete následující nástroje:

Typ nasazení Nástroj Úloha
Infrastruktura Šablony ARM Vytvoření clusteru a databáze
Entity schématu Rozhraní příkazového řádku Kusto Vytvoření tabulek v databázi
Data LightIngest Ingestování dat do jedné tabulky

Obrázek znázorňující ukázkový tok nasazení

Pomocí následujícího postupu vytvořte kanál.

Krok 1: Vytvoření připojení služby

Definujte připojení služby typu Azure Resource Manager. Nasměrujte připojení k předplatnému a skupině prostředků, do které chcete cluster nasadit. Vytvoří se instanční objekt Azure a použijete ho k nasazení šablony ARM. Stejný objekt zabezpečení můžete použít k nasazení entit schématu a ingestování dat. Přihlašovací údaje musíte explicitně předat nástroji Kusto CLI a LightIngest.

Krok 2: Vytvoření kanálu

Definujte kanál (deploy-environ), který použijete k nasazení clusteru, vytvoření entit schématu a ingestování dat.

Než budete moct kanál použít, musíte vytvořit následující tajné proměnné:

Název proměnné Popis
clusterName Název clusteru Azure Data Exploreru
serviceConnection Název připojení Azure DevOps, které se používá k nasazení šablony ARM.
appId ID klienta instančního objektu použitého k interakci s clusterem.
appSecret Tajný kód instančního objektu.
appTenantId ID tenanta instančního objektu.
location Oblast Azure, do které nasadíte cluster. Například 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

Krok 3: Vytvoření šablony ARM pro nasazení clusteru

Definujte šablonu ARM (deploy-infra.json), kterou použijete k nasazení clusteru do vašeho předplatného a skupiny prostředků.

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

Krok 4: Vytvoření skriptu KQL pro vytvoření entit schématu

Definujte skript KQL (MyDatabase.kql), který použijete k vytvoření tabulek v databázích.

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

Krok 5: Vytvoření skriptu KQL pro příjem dat

Vytvořte datový soubor CSV (customer.csv) pro příjem.

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

Snímek obrazovky znázorňující spuštění úlohy ukázkového toku

Cluster vytvoříte pomocí přihlašovacích údajů instančního objektu, které jste zadali v kanálu. Pokud chcete uživatelům udělit oprávnění, postupujte podle pokynů v tématu Správa oprávnění databáze Azure Data Exploreru.

Snímek obrazovky znázorňující nasazenou databázi se dvěma tabulkami ve webovém uživatelském rozhraní Azure Data Exploreru

Nasazení můžete ověřit spuštěním dotazu na tabulku Zákazník . Měly by se zobrazit tři záznamy importované ze souboru CSV.