Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services poskytuje nástroje pro spolupráci pro vývoj, jako jsou vysoce výkonné kanály, bezplatné privátní úložiště Git, konfigurovatelné panely Kanbanu a rozsáhlé možnosti automatizovaného a průběžného testování. Azure Pipelines je funkce Azure DevOps, která umožňuje spravovat CI/CD a nasazovat kód pomocí vysoce výkonných kanálů, které fungují s libovolným jazykem, platformou a cloudem. Azure Data Explorer – Pipeline nástroje je úloha Azure Pipelines, která umožňuje vytvářet release pipeline a nasazovat změny v databázi do vašich Azure Data Explorer databází. Je k dispozici zdarma na webu Visual Studio Marketplace. Rozšíření zahrnuje následující základní úlohy:
Příkaz Azure Data Exploreru – Spuštění příkazů správce v clusteru Azure Data Exploreru
Dotaz Azure Data Exploreru – Spouštění dotazů na cluster Azure Data Exploreru a analýza výsledků
Brána dotazovacího serveru Azure Data Explorer – Úloha bez potřeby agenta pro kontrolu uvolnění v závislosti na výsledku dotazu
Tento dokument popisuje jednoduchý příklad použití úlohy Azure Data Explorer - Pipeline Tools k nasazení změn schématu do vaší databáze. Kompletní kanály CI/CD najdete v dokumentaci k Azure DevOps.
Požadavky
- Předplatné Azure. Vytvořte bezplatný účet Azure.
- Cluster a databáze Azure Data Exploreru. Vytvořte cluster a databázi.
- Nastavení clusteru Azure Data Exploreru:
- Vytvořte aplikaci Microsoft Entra zřízením aplikace Microsoft Entra.
- Udělte přístup k aplikaci Microsoft Entra v databázi Azure Data Exploreru tím, že spravujete oprávnění databáze Azure Data Exploreru.
- Nastavení Azure DevOps:
- Instalace rozšíření:
Pokud jste vlastníkem instance Azure DevOps, nainstalujte rozšíření z Marketplace, jinak se obraťte na vlastníka instance Azure DevOps a požádejte ho, aby ho nainstaloval.
Příprava obsahu na vydání
Pomocí následujících metod můžete spouštět příkazy správce v clusteru v rámci úlohy:
Pomocí vzoru vyhledávání můžete získat více souborů příkazů z místní složky agenta (zdroje sestavení nebo artefakty vydané verze). Možnost s jedním řádkem podporuje více souborů s jedním příkazem na jeden soubor.
Napište příkazy na řádek.
Zadejte cestu k souboru pro získání souborů příkazů přímo ze správy zdrojového kódu Gitu (doporučeno).
V úložišti Git vytvořte následující ukázkové složky (Funkce, Zásady, Tabulky). Zkopírujte soubory z úložiště ukázek do příslušných složek a potvrďte změny. Ukázkové soubory jsou k dispozici pro provedení následujícího pracovního postupu.
Tip
Při vytváření vlastního pracovního postupu doporučujeme vytvořit idempotentní kód. Například použijte
.create-merge tablemísto.create tablea použijte funkci.create-or-altermísto funkce.create.
Vytvoření kanálu verze
Přihlaste se ke své organizaci Azure DevOps.
V nabídce vlevo vyberte Verze kanálů> a pak vyberte Nový kanál.
Otevře se okno New release pipeline. Na kartě Kanály v podokně Vybrat šablonu vyberte Prázdnou úlohu.
Vyberte tlačítko Fáze . V podokně Fáze přidejte Název fáze a pak vyberte Uložit, abyste uložili své potrubí.
Vyberte Tlačítko Přidat artefakt . V podokně Přidat artefakt vyberte úložiště, ve kterém kód existuje, vyplňte relevantní informace a vyberte Přidat. Vyberte Uložit pro uložení svého potrubí.
Na kartě Proměnné vyberte + Přidat a vytvořte proměnnou pro adresu URL koncového bodu použitou v úloze. Zadejte název a hodnotu koncového bodu a pak vyberte Uložit a kanál uložte.
Pokud chcete najít adresu URL koncového bodu, přejděte na stránku přehledu clusteru Azure Data Exploreru na webu Azure Portal a zkopírujte identifikátor URI clusteru. Sestavte URI proměnné v následujícím formátu
https://<ClusterURI>?DatabaseName=<DBName>. Například https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB
Vytvořte úlohu nasazení složek
Na kartě Potrubí vyberte 1 úkol, 0 úkolů pro přidání úkolů.
Opakováním následujících kroků vytvořte úlohy příkazů pro nasazení souborů ze složek Tabulky, Funkce a Zásady :
Na kartě Úlohy vyberte + podle úlohy agenta a vyhledejte Azure Data Explorer.
V části Spustit příkaz Azure Data Exploreru vyberte Přidat.
Vyberte příkaz Kusto a aktualizujte úlohu následujícími informacemi:
Zobrazovaný název: Název úkolu. Například
Deploy <FOLDER>, kde<FOLDER>je název složky pro úlohu nasazení, kterou vytváříte.Cesta k souboru: Pro každou složku zadejte cestu, kde
*/<FOLDER>/*.csl<FOLDER>je příslušná složka úkolu.Adresa URL koncového bodu: Zadejte proměnnou vytvořenou
EndPoint URLv předchozím kroku.Použít koncový bod služby: Vyberte tuto možnost.
Koncový bod služby: Vyberte existující koncový bod služby nebo vytvořte nový (+ Nový) a v okně Přidat připojení služby Azure Data Exploreru zadejte následující informace:
Nastavení Navrhovaná hodnota Metoda ověřování Nastavte federované identitní přihlašovací údaje (doporučeno) nebo zvolte ověřování služebního subjektu (SPA). Název připojení Zadejte název pro identifikaci tohoto koncového bodu služby. Adresa URL clusteru Hodnotu najdete v části přehledu clusteru Azure Data Exploreru na webu Azure Portal. ID instančního objektu Zadejte ID aplikace Microsoft Entra (vytvořené jako předpoklad). Klíč aplikace principála služby Zadejte klíč aplikace Microsoft Entra (vytvořený jako předpoklad). ID tenanta Microsoft Entra Zadejte tenanta Microsoft Entra (například microsoft.com nebo contoso.com).
Zaškrtněte políčko Povolit všem kanálům používat toto připojení a pak vyberte OK.
Pokud jsou příkazy správce dlouhotrvající asynchronní operace, zaškrtněte políčko Počkat na dokončení dlouhých asynchronních příkazů správce. Pokud je tato možnost povolená, úloha se dotazuje na stav operace,
.show operationsdokud se příkaz neskončí.
Vyberte Uložit a potom na kartě Úlohy ověřte, že existují tři úlohy: Nasazení tabulek, nasazení funkcí a zásady nasazení.
Vytvořte úlohu dotazu
V případě potřeby vytvořte úlohu, která spustí dotaz na cluster. Spouštění dotazů v build nebo release pipeline se dá použít k ověření datové sady a určení, zda krok uspěje nebo selže na základě výsledků dotazu. Kritéria úspěchu úkolů můžou být založená na prahové hodnotě počtu řádků nebo jedné hodnotě v závislosti na tom, co dotaz vrátí.
Na kartě Úlohy vyberte + podle úlohy agenta a vyhledejte Azure Data Explorer.
V části Spustit dotaz Azure Data Exploreru vyberte Přidat.
Vyberte Kusto Query a aktualizujte úlohu následujícími informacemi:
- Zobrazený název: Název úkolu. Například cluster dotazů.
- Typ: Vyberte Inline.
- Dotaz: Zadejte dotaz, který chcete spustit.
-
Adresa URL koncového bodu: Zadejte dříve vytvořenou proměnnou
EndPoint URL. - Použijte koncový bod služby: Vyberte tuto možnost.
- Koncový bod služby: Vyberte koncový bod služby.
V části Výsledky úkolů vyberte kritéria úspěchu úkolu na základě výsledků dotazu následujícím způsobem:
Pokud dotaz vrátí řádky, vyberte Počet řádků a zadejte kritéria, která požadujete.
Pokud dotaz vrátí hodnotu, vyberte Jednu hodnotu a zadejte očekávaný výsledek.
Vytvořte úlohu Brány dotazovacího serveru
V případě potřeby vytvořte úlohu, která spustí dotaz na cluster a omezuje průběh vydání na základě počtu řádků výsledků dotazu. Úloha brány dotazů serveru je úloha bez agenta, což znamená, že dotaz běží přímo na Azure DevOps Serveru.
Na kartě Úlohy vyberte + podle úlohy bez agenta a vyhledejte Azure Data Explorer.
V části Spustit bránu dotazovacího serveru Azure Data Exploreru vyberte Přidat.
Vyberte bránu serveru Kusto Query a pak vyberte test brány serveru.
Nakonfigurujte úlohu s následujícími informacemi:
- Zobrazovaný název: Název brány.
- Koncový bod služby: Vyberte koncový bod služby.
- Název databáze: Zadejte název databáze.
- Typ: Vyberte vložený dotaz.
- Dotaz: Zadejte dotaz, který chcete spustit.
- Maximální prahová hodnota: Zadejte maximální počet řádků pro kritéria úspěchu dotazu.
Poznámka:
Při spuštění vydané verze by se měly zobrazit výsledky podobné následujícímu.
Spusťte verzi
Vyberte + Uvolnit>Vytvořit uvolnění, abyste mohli začít s vydáním.
Na kartě Protokoly zkontrolujte, jestli je stav nasazení úspěšný.
Vytvoření pipeliny pro vydání pro nasazení do předprodukčního prostředí je teď hotové.
Podpora ověřování bez klíčů pro úlohy DevOps v Azure Data Exploreru
Rozšíření podporuje ověřování bez klíčů pro clustery Azure Data Exploreru. Ověřování bez klíčů umožňuje ověřování v clusterech Azure Data Exploreru bez použití klíče. Správa je bezpečnější a jednodušší.
Poznámka:
Adresy URL clusteru Kusto Fabric nejsou podporované pro Workload Identity Federation (WIF) a ověřování spravované identity.
Použijte ověřování pomocí federovaných identit (FIC) v připojení ke službě Azure Data Explorer.
Poznámka:
Počínaje rozšířením 4.0.x koncový bod služby Azure Data Explorer podporuje kromě ověřování instančního objektu také ověřování WIF (Workload Identity Federation).
V instanci DevOps přejděte do Projektová nastavení>Propojení služeb>Nové propojení služby>Azure Data Explorer.
Vyberte Přihlašovací údaje federované identity a zadejte ID instančního objektu služby, ID tenanta, název spojení služby, adresu URL clusteru a pak vyberte Uložit.
V Azure portálu otevřete aplikaci Microsoft Entra pro zadaný hlavní služba.
V části Certifikáty a tajné kódy vyberte federované přihlašovací údaje.
Vyberte Přidat přihlašovací údaje a pak pro případ federovaných přihlašovacích údajů vyberte Jiný vystavitel a vyplňte nastavení pomocí následujících informací:
Vystavitel:
<https://vstoken.dev.azure.com/{System.CollectionId}>kde{System.CollectionId}je ID kolekce vaší organizace Azure DevOps. ID kolekce najdete následujícími způsoby:- V release pipeline Azure DevOps classic vyberte Inicializovat úlohu. ID kolekce se zobrazí v protokolech.
Identifikátor subjektu:
<sc://{DevOps_Org_name}/{Project_Name}/{Service_Connection_Name}>kde{DevOps_Org_name}je název organizace Azure DevOps,{Project_Name}je název projektu a{Service_Connection_Name}je název připojení služby, který jste vytvořili dříve.Poznámka:
Pokud je v názvu připojení k službě mezera, můžete ji použít s mezerou v poli. Například:
sc://MyOrg/MyProject/My Service Connection.Název: Zadejte název přihlašovacích údajů.
Vyberte Přidat.
Použití přihlašovacích údajů federované identity nebo spravované identity v připojení ke službě Azure Resource Manager (ARM)
V instanci DevOps přejděte na Nastavení projektu>Připojení služeb>Nové připojení služby>Správce zdrojů Azure.
V části Metoda ověřování vyberte Federaci identit úloh (automatická) a pokračujte. Můžete také použít ruční možnost Federace identit úloh (manuálně) k určení detailů Federace identit úloh nebo možnost Spravované identity. Přečtěte si další informace o nastavení spravované identity pomocí správy prostředků Azure v připojeních služeb Azure Resource Manageru (ARM).
Vyplňte požadované podrobnosti, vyberte Ověřit a pak vyberte Uložit.
Konfigurace kanálu YAML
Úlohy můžete nakonfigurovat pomocí webového uživatelského rozhraní Azure DevOps nebo kódu YAML v rámci schématu kanálu.
Rozšíření poskytuje tři úlohy kanálu, které jsou přístupné prostřednictvím YAML:
-
Příkaz Azure Data Exploreru (
ADXAdminCommand@5) – Spuštění příkazů správce a řízení v clusteru ADX - Dotaz Azure Data Exploreru – Spouštění dotazů na cluster ADX a analýza výsledků
- Brána dotazovacího serveru Azure Data Explorer – úloha bez agenta pro řízení vydání v závislosti na výsledku dotazu
Tip
Pro lepší zabezpečení použijte federaci identit úloh nebo ověřování pomocí spravované identity prostřednictvím připojení služby Azure Resource Manager, namísto ukládání přihlašovacích údajů přímo do kanálu. Tyto metody ověřování bez klíčů jsou doporučeným osvědčeným postupem.
Ukázka příkazu správce – interní příkazy
Následující příklad spustí přímo vložený příkaz správce pomocí servisního připojení Azure Resource Manager (ARM), které podporuje federaci identit pracovních zátěží (WIF) a ověřování prostřednictvím spravovaných identit:
steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
displayName: 'Run inline ADX admin command'
inputs:
clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
databaseName: '<DatabaseName>'
commandsSource: 'inline'
inlineCommands: |
.create-merge table MyTable (Id:int, Name:string, Timestamp:datetime)
.create-or-alter function MyFunction() { MyTable | take 10 }
azureSubscription: '<ARM Service Connection Name>'
continueOnError: true
Ukázka příkazu správce – příkazy založené na souborech
Následující ukázka spustí příkazy správce ze souborů odpovídajících vzoru globu pomocí ověřování registrace aplikace AAD:
steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
displayName: 'Deploy schema from files'
inputs:
clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
databaseName: '<DatabaseName>'
commandsSource: 'files'
commandFilesPattern: '**/*.csl'
aadAppId: '$(AAD_APP_ID)'
aadAppKey: '$(AAD_APP_KEY)'
aadTenantId: '$(AAD_TENANT_ID)'
continueOnError: true
Můžete také použít **/*.kql jako vzor globu v závislosti na konvenci pojmenování souboru.
Ukázka příkazu správce – připojení služby Azure Resource Manager
Následující ukázka používá připojení služby Azure Resource Manager, které podporuje federaci identit úloh (WIF) a spravovanou identitu pro ověřování bez klíčů:
steps:
- task: Azure-Kusto.ADXAdminCommands.PublishToADX.ADXAdminCommand@5
displayName: 'Deploy schema via ARM service connection'
inputs:
clusterUri: 'https://<ClusterName>.<Region>.kusto.windows.net'
databaseName: '<DatabaseName>'
commandsSource: 'files'
commandFilesPattern: '**/*.csl'
azureSubscription: '<ARM Service Connection Name>'
continueOnError: true
condition: ne(variables['ProductVersion'], '')
Vstupní parametry úkolu
Následující tabulka popisuje klíčové vstupní parametry pro ADXAdminCommand@5 úlohu:
| Parametr | Description |
|---|---|
clusterUri |
Základní identifikátor URI pro cluster Kusto (například https://<ClusterName>.<Region>.kusto.windows.net) |
databaseName |
Název cílové databáze |
commandsSource |
Zdroj příkazů: inline pro vložené příkazy KQL nebo files pro příkazy založené na souborech |
inlineCommands |
Vložené příkazy KQL ke spuštění (používá se, pokud commandsSource je inline) |
commandFilesPattern |
Vzor globu pro soubory skriptu (používá se, pokud commandsSource je files), například **/*.csl**/*.kql |
aadAppId |
ID aplikace Microsoft Entra (služba principal) pro ověřování aplikace AAD |
aadAppKey |
Klíč nebo tajný klíč aplikace Microsoft Entra pro ověřování aplikací AAD |
aadTenantId |
ID tenanta Microsoft Entra pro ověřování aplikací AAD |
azureSubscription |
Název připojení služby Azure Resource Manager pro ověřování na základě ARM (podporuje WIF a spravovanou identitu) |
Metody ověřování
Rozšíření podporuje následující metody ověřování:
-
Registrace aplikace Azure Active Directory (AAD) – Použijte
aadAppId,aadAppKeyaaadTenantIda ověřte se pomocí služebního principála. Uložte přihlašovací údaje jako zabezpečené proměnné kanálu. - Ověřování na základě certifikátu – Pro ověřování hlavní služby použijte certifikát místo klíče aplikace. Uložte podrobnosti o certifikátu jako zabezpečené proměnné kanálu.
-
Spravovaná identita – Použijte připojení služby Azure Resource Manager nakonfigurované se spravovanou identitou. Nastavte vstup
azureSubscriptionna název připojení služby. -
Federace identit úloh (WIF) – Použijte připojení služby Azure Resource Manager k federaci identit úloh (automatické nebo ruční). Toto je doporučený přístup bez klíčů. Nastavte vstup
azureSubscriptionna název připojení ke službě.
Poznámka:
Federace pracovních identit (WIF) je novějším přírůstkem do rozšíření. Umožňuje ověřování bez tajných kódů a je doporučeným přístupem pro nové kanály. Pokyny k nastavení najdete v tématu Použití přihlašovacích údajů federované identity nebo spravované identity v připojení ke službě Azure Resource Manager (ARM).
Ukázka dotazu
steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@5
displayName: '<Task Display Name>'
inputs:
targetType: 'inline'
script: |
let badVer=
RunnersLogs | where Timestamp > ago(30m)
| where EventText startswith "$$runnerresult" and Source has "ShowDiagnostics"
| extend State = extract(@"Status='(.*)', Duration.*",1, EventText)
| where State == "Unhealthy"
| extend Reason = extract(@'"NotHealthyReason":"(.*)","IsAttentionRequired.*',1, EventText)
| extend Cluster = extract(@'Kusto.(Engine|DM|CM|ArmResourceProvider).(.*).ShowDiagnostics',2, Source)
| where Reason != "Merge success rate past 60min is < 90%"
| where Reason != "Ingestion success rate past 5min is < 90%"
| where Reason != "Ingestion success rate past 5min is < 90%, Merge success rate past 60min is < 90%"
| where isnotempty(Cluster)
| summarize max(Timestamp) by Cluster,Reason
| order by max_Timestamp desc
| where Reason startswith "Differe"
| summarize by Cluster
;
DimClusters | where Cluster in (badVer)
| summarize by Cluster , CmConnectionString , ServiceConnectionString ,DeploymentRing
| extend ServiceConnectionString = strcat("#connect ", ServiceConnectionString)
| where DeploymentRing == "$(DeploymentRing)"
kustoUrls: 'https://<ClusterName>.kusto.windows.net?DatabaseName=<DatabaseName>'
authType: 'kustoserviceconn'
connectedServiceName: '<connection service name>'
minThreshold: '0'
maxThreshold: '10'
continueOnError: true