Azure Veri Gezgini'de otomatik sağlama

Otomatik sağlama, Azure Veri Gezgini kümenizi çalıştırmak için ihtiyacınız olan kaynakları hızla dağıtmaya ve yapılandırmaya yönelik bir işlemdir. DevOps veya DataOps iş akışının kritik bir parçasıdır. Sağlama işlemi, kümeyi el ile yapılandırmanızı gerektirmez, insan müdahalesi gerektirmez ve kurulumu kolaydır.

Sürekli tümleştirme ve sürekli teslim (CI/CD) işlem hattının bir parçası olarak verilerle önceden yapılandırılmış bir küme dağıtmak için otomatik sağlamayı kullanabilirsiniz. Bunu yapmanın temel avantajlarından bazıları şunlardır:

  • Birden çok ortam tanımlayın ve koruyun.
  • Dağıtımları kaynak denetiminde takip edin.
  • Önceki sürümlere daha kolay geri dönün.
  • Ayrılmış test ortamları sağlayarak otomatik testi kolaylaştırma.

Bu makalede altyapı, şema varlıkları ve veri alımı gibi Azure Veri Gezgini ortamlarının sağlanmasını otomatikleştirmeye yönelik farklı mekanizmalara genel bir bakış sağlanmaktadır. Ayrıca, sağlama sürecini otomatikleştirmek için kullanılan farklı araçlara ve tekniklere başvurular sağlar.

Dağıtım genel akışını gösteren görüntü.

Altyapı dağıtımı

Altyapı dağıtımı, kümeler, veritabanları ve veri bağlantıları gibi Azure kaynaklarının dağıtımıyla ilgilidir. Aşağıdakiler de dahil olmak üzere birkaç farklı altyapı dağıtımı türü vardır:

ARM şablonları ve Terraform betikleri, Azure Veri Gezgini altyapısını dağıtmanın iki ana, bildirim temelli yoludır.

ARM şablonu dağıtımı

ARM şablonları, bir dağıtımın altyapısını ve yapılandırmasını tanımlayan JSON veya Bicep dosyalarıdır. Kümeleri, veritabanlarını, veri bağlantılarını ve diğer birçok altyapı bileşenini dağıtmak için şablonları kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Resource Manager şablonu kullanarak Azure Veri Gezgini kümesi ve veritabanı oluşturma.

Veritabanı şeması oluşturmanıza ve ilkeleri tanımlamanıza yardımcı olan komut betiklerini dağıtmak için ARM şablonlarını da kullanabilirsiniz. Daha fazla bilgi için bkz. Kusto Sorgu Dili betiği kullanarak veritabanı yapılandırma.

Azure Hızlı Başlangıç Şablonları sitesinde daha fazla örnek şablon bulabilirsiniz.

Terraform dağıtımı

Terraform, açık kaynak kod olarak altyapı yazılım aracıdır. Bulut hizmetlerini yönetmek için tutarlı bir CLI iş akışı sağlar. Terraform, bulut API'lerini bildirim temelli yapılandırma dosyaları olarak birleştirir.

Terraform, ARM şablonlarıyla aynı özellikleri sunar. Terraform'ı kullanarak kümeleri, veritabanlarını, veri bağlantılarını ve diğer altyapı bileşenlerini dağıtabilirsiniz.

Terraform'u, veritabanı şeması oluşturmanıza ve ilkeleri tanımlamanıza yardımcı olan komut betiklerini dağıtmak için de kullanabilirsiniz.

Kesinlik temelli dağıtım

Desteklenen platformlardan herhangi birini kullanarak altyapıyı kesin olarak dağıtabilirsiniz:

Şema varlıklarını dağıtma

Şema varlıkları sağlama, tabloları, işlevleri, ilkeleri ve izinleri dağıtmayla ilgili. Yönetim komutlarından oluşan betikleri çalıştırarak varlık oluşturabilir veya güncelleştirebilirsiniz.

Aşağıdaki yöntemleri kullanarak şema varlıkları dağıtımını otomatikleştirebilirsiniz:

Verileri alma

Bazen verileri kümenize almak istersiniz. Örneğin, testleri çalıştırmak veya bir ortamı yeniden oluşturmak için verileri almak isteyebilirsiniz. Verileri almak için aşağıdaki yöntemleri kullanabilirsiniz:

CI/CD işlem hattı kullanan örnek dağıtım

Aşağıdaki örnekte altyapı, şema varlıkları ve verilerin dağıtımını otomatikleştirmek için araçlar çalıştıran bir Azure DevOps CI/CD işlem hattı kullanırsınız. Bu, belirli bir araç kümesini kullanan bir işlem hattı örneğidir, ancak diğer araçları ve adımları kullanabilirsiniz. Örneğin, bir üretim ortamında veri almayan bir işlem hattı oluşturmak isteyebilirsiniz. Oluşturulan kümede otomatikleştirilmiş testler çalıştırma gibi işlem hattına başka adımlar da ekleyebilirsiniz.

Burada aşağıdaki araçları kullanırsınız:

Dağıtım türü Araç Görev
Altyapı ARM şablonları Küme ve veritabanı oluşturma
Şema varlıkları Kusto CLI Veritabanında tablo oluşturma
Veri LightIngest Verileri tek bir tabloya alma

Dağıtım örneği akışını gösteren görüntü.

İşlem hattı oluşturmak için aşağıdaki adımları kullanın.

1. Adım: Hizmet bağlantısı oluşturma

Azure Resource Manager türünde bir hizmet bağlantısı tanımlayın. Kümenizi dağıtmak istediğiniz aboneliğe ve kaynak grubuna bağlantıyı işaret edin. Bir Azure hizmet sorumlusu oluşturulur ve ARM şablonunu dağıtmak için bunu kullanırsınız. Şema varlıklarını dağıtmak ve verileri almak için aynı sorumluyu kullanabilirsiniz. Kimlik bilgilerini Kusto CLI ve LightIngest araçlarına açıkça geçirmeniz gerekir.

2. Adım: İşlem hattı oluşturma

Kümeyi dağıtmak, şema varlıkları oluşturmak ve verileri almak için kullanacağınız işlem hattını (deploy-environ) tanımlayın.

İşlem hattını kullanabilmeniz için önce aşağıdaki gizli dizi değişkenlerini oluşturmanız gerekir:

Değişken adı Açıklama
clusterName Azure Veri Gezgini kümesinin adı.
serviceConnection ARM şablonunu dağıtmak için kullanılan Azure DevOps bağlantısının adı.
appId Kümeyle etkileşime geçmek için kullanılan hizmet sorumlusunun istemci kimliği.
appSecret Hizmet sorumlusunun gizli dizisi.
appTenantId Hizmet sorumlusunun kiracı kimliği.
location Kümeyi dağıtabileceğiniz Azure bölgesi. Örneğin, 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. Adım: Kümeyi dağıtmak için ARM şablonu oluşturma

Kümeyi aboneliğinize ve kaynak grubunuz için dağıtmak için kullanacağınız ARM şablonunu (deploy-infra.json) tanımlayın.

{
    "$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. Adım: Şema varlıklarını oluşturmak için KQL betiği oluşturma

Veritabanlarında tablo oluşturmak için kullanacağınız KQL betiğini (MyDatabase.kql) tanımlayın.

.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. Adım: Verileri almak için KQL betiği oluşturma

Almak için CSV veri dosyasını (customer.csv) oluşturun.

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

Örnek akışın iş çalıştırmasını gösteren ekran görüntüsü.

kümeyi, işlem hattında belirttiğiniz hizmet sorumlusu kimlik bilgilerini kullanarak oluşturursunuz. Kullanıcılarınıza izin vermek için Azure Veri Gezgini veritabanı izinlerini yönetme makalesindeki adımları izleyin.

Azure Veri Gezgini web kullanıcı arabirimindeki iki tablosuyla dağıtılan veritabanını gösteren ekran görüntüsü.

Customer tablosunda bir sorgu çalıştırarak dağıtımı doğrulayabilirsiniz. CSV dosyasından içeri aktarılan üç kaydı görmeniz gerekir.