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.
Nasazení služby Azure API Management pomocí Service Fabric je pokročilý scénář. Služba API Management je užitečná, když potřebujete publikovat rozhraní API s bohatou sadou pravidel směrování pro back-endové služby Service Fabric. Cloudové aplikace obvykle potřebují vstupní bránu, která poskytuje jediný bod přístupu pro uživatele, zařízení nebo jiné aplikace. V Service Fabric může být brána libovolná bezstavová služba navržená pro příchozí přenos dat, jako je například aplikace ASP.NET Core, Event Hubs, IoT Hub nebo Azure API Management.
V tomto článku se dozvíte, jak nastavit Azure API Management s Service Fabric tak, aby směrovat provoz do back-endové služby v Service Fabric. Po dokončení jste nasadili službu API Management do virtuální sítě a nakonfigurovali operaci rozhraní API tak, aby odesílala provoz do back-endových bezstavových služeb. Další informace o scénářích služby Azure API Management pomocí Service Fabric najdete v článku s přehledem .
Poznámka:
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Dostupnost
Důležité
Tato funkce je dostupná na úrovních Premium a Developer služby API Management kvůli požadované podpoře virtuální sítě.
Požadavky
Než začnete:
- Pokud ještě předplatné Azure nemáte, vytvořte si bezplatný účet.
- Nainstalujte Azure PowerShell nebo Azure CLI.
- Vytvořte zabezpečený cluster s Windows ve skupině zabezpečení sítě.
- Pokud nasadíte cluster s Windows, nastavte vývojové prostředí Windows. Nainstalujte sadu Visual Studio 2019 a pracovní zátěže pro vývoj pro Azure, ASP.NET a webový vývoj a multiplatformní vývoj .NET Core. Pak nastavte vývojové prostředí .NET.
Síťová topologie
Teď, když máte zabezpečený cluster s Windows v Azure, nasaďte službu API Management do virtuální sítě v podsíti a skupině zabezpečení sítě určené pro službu API Management. V tomto článku je šablona Resource Manageru pro API Management předem nakonfigurována tak, aby používala názvy VNET, podsítě a NSG, které jste nastavili v kurzu pro Windows cluster. Tento článek nasazuje následující topologii do Azure, ve které jsou API Management a Service Fabric v podsítích stejné virtuální sítě.
Přihlaste se k Azure a vyberte své předplatné.
Před spuštěním příkazů Azure se přihlaste ke svému účtu Azure a vyberte své předplatné.
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>
az login
az account set --subscription <guid>
Nasazení back-endové služby Service Fabric
Před konfigurací služby API Management pro směrování provozu do back-endové služby Service Fabric nejprve potřebujete spuštěnou službu pro příjem požadavků.
Vytvořte základní bezstavovou službu ASP.NET Core Reliable Service pomocí výchozí šablony projektu webového rozhraní API. Tím se pro vaši službu vytvoří koncový bod HTTP, který zveřejníte prostřednictvím služby Azure API Management.
Spusťte Visual Studio jako správce a vytvořte službu ASP.NET Core:
V sadě Visual Studio vyberte Soubor –> Nový projekt.
V části Cloud vyberte šablonu aplikace Service Fabric a pojmenujte ji ApiApplication.
Vyberte bezstavovou šablonu služby ASP.NET Core a pojmenujte projekt WebApiService.
Vyberte šablonu projektu webového rozhraní API ASP.NET Core 2.1.
Po vytvoření projektu otevřete
PackageRoot\ServiceManifest.xmla z konfigurace koncového bodu odeberte atributPort.<Resources> <Endpoints> <Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" /> </Endpoints> </Resources>Odebráním portu umožníte službě Service Fabric dynamicky určit port z rozsahu portů aplikace, který se otevře prostřednictvím skupiny zabezpečení sítě v šabloně Správce prostředků clusteru, což umožní tok provozu do něj ze služby API Management.
Stisknutím klávesy F5 v sadě Visual Studio ověřte, že je webové rozhraní API dostupné místně.
Otevřete Service Fabric Explorer a přejděte k podrobnostem konkrétní instance služby ASP.NET Core, abyste viděli základní adresu, na které služba naslouchá. Přidejte
/api/valuesk základní adrese a otevřete ji v prohlížeči, který vyvolá metodu Get na ValuesController v šabloně webového rozhraní API. Vrátí výchozí odpověď, která je poskytována šablonou, pole JSON obsahující dva řetězce:["value1", "value2"]`Toto je koncový bod, který zveřejňujete prostřednictvím služby API Management v Azure.
Nakonec nasaďte aplikaci do clusteru v Azure. V sadě Visual Studio klikněte pravým tlačítkem na projekt aplikace a vyberte Publikovat. Zadejte koncový bod clusteru (například
mycluster.southcentralus.cloudapp.azure.com:19000) pro nasazení aplikace do clusteru Service Fabric v Azure.
V clusteru Service Fabric v Azure by teď měla běžet bezstavová služba fabric:/ApiApplication/WebApiService ASP.NET Core.
Stažení a pochopení šablon Resource Manageru
Stáhněte a uložte následující šablony a soubor parametrů Resource Manageru:
Šablona network-apim.json nasadí novou podsíť a skupinu zabezpečení sítě ve virtuální síti, ve které je nasazen cluster Service Fabric.
Následující části popisují prostředky definované šablonouapim.json . Další informace najdete v odkazech na referenční dokumentaci k šabloně v každé části. Konfigurovatelné parametry definované v souboru parametrů apim.parameters.json jsou nastaveny dále v tomto článku.
Microsoft.ApiManagement/service
Microsoft.ApiManagement/služba popisuje instanci služby API Management: název, skladovou položku nebo úroveň, umístění skupiny prostředků, informace o vydavateli a virtuální síť.
Microsoft.ApiManagement/service/certificates
Microsoft.ApiManagement/service/certificates konfiguruje zabezpečení služby API Management. Služba API Management se musí ověřit v clusteru Service Fabric kvůli zjišťování služeb pomocí klientského certifikátu, který má přístup k vašemu clusteru. Tento článek používá stejný certifikát zadaný dříve při vytváření clusteru s Windows, který se ve výchozím nastavení dá použít pro přístup ke clusteru.
Tento článek používá stejný certifikát pro ověřování klientů a zabezpečení mezi uzly clusteru. Pokud máte nakonfigurovaný přístup ke clusteru Service Fabric, můžete použít samostatný klientský certifikát. Zadejte název, heslo a data (řetězec s kódováním base-64) souboru privátního klíče (.pfx) certifikátu clusteru, který jste zadali při vytváření clusteru Service Fabric.
Microsoft.ApiManagement/service/backends
Microsoft.ApiManagement/service/back-ends popisuje back-endovou službu, do které se předává provoz.
V případě back-endů Service Fabric je cluster Service Fabric back-endem místo konkrétní služby Service Fabric. To umožňuje jednomu pravidlu směrovat na více než jednu službu v clusteru. Toto pole adresy URL je plně kvalifikovaný název služby ve vašem clusteru, do kterého se všechny požadavky směrují ve výchozím nastavení, pokud v zásadách back-endu není zadaný žádný název služby. Pokud nemáte v úmyslu mít náhradní službu, můžete použít falešný název služby, například fabric:/fake/service. ResourceId určuje koncový bod správy clusteru. clientCertificateThumbprint a serverCertificateThumbprints identifikují certifikáty používané k ověření v clusteru.
Microsoft.ApiManagement/service/products
Microsoft.ApiManagement/service/products vytvoří produkt. Ve službě Azure API Management obsahuje produkt jedno nebo více rozhraní API a také kvótu využití a podmínky použití. Po publikování produktu se můžou vývojáři přihlásit k odběru produktu a začít používat rozhraní API produktu.
Zadejte popisný zobrazovaný název a popis produktu. V tomto článku se vyžaduje předplatné, ale schválení správcem není potřeba. Tento stav produktu je "publikovaný" a je viditelný pro předplatitele.
Microsoft.ApiManagement/service/apis
Microsoft.ApiManagement/service/apis vytvoří rozhraní API. Rozhraní API ve službě API Management představuje sadu operací, které mohou být vyvolány klientskými aplikacemi. Po přidání operací se rozhraní API přidá do produktu a dá se publikovat. Jakmile je rozhraní API publikované, můžete ho přihlásit k odběru a používat vývojáři.
- displayName může být libovolný název vašeho rozhraní API. Pro účely tohoto článku použijte "Service Fabric App".
- Název poskytuje jedinečný a popisný název rozhraní API, například "service-fabric-app". Zobrazí se na portálech pro vývojáře a vydavatele.
- serviceUrl odkazuje na službu HTTP, která implementuje rozhraní API. Služba API Management předává požadavky na tuto adresu. U back-endů Service Fabric se tato hodnota adresy URL nepoužívá. Sem můžete vložit libovolnou hodnotu. Pro tento článek, například "http://servicefabric".
- cesta se přidá k základní adrese URL služby API Management. Základní adresa URL je společná pro všechna rozhraní API hostovaná instancí služby API Management. Služba API Management rozlišuje rozhraní API podle jejich přípony, a proto musí být pro každé rozhraní API daného vydavatele jedinečná.
- protokoly určují, které protokoly je možné použít pro přístup k rozhraní API. Pro účely tohoto článku uveďte http a https.
- path je přípona rozhraní API. Pro účely tohoto článku použijte myapp.
Microsoft.ApiManagement/služba/api/operace
Microsoft.ApiManagement/service/apis/operations Než bude možné použít rozhraní API ve službě API Management, je nutné do rozhraní API přidat operace. Externí klienti používají operaci ke komunikaci s bezstavovou službou ASP.NET Core běžící v clusteru Service Fabric.
Pokud chcete přidat operaci rozhraní API front-endu, vyplňte hodnoty:
- displayName a popis popisují operaci. Pro účely tohoto článku použijte hodnoty.
- metoda určuje příkaz HTTP. Pro účely tohoto článku zadejte get.
-
UrlTemplate je připojen k základní adrese URL rozhraní API a identifikuje jednu operaci HTTP. Pro účely tohoto článku použijte
/api/values, pokud jste přidali back-endovou službu .NET nebogetMessagejste přidali back-endovou službu Java. Ve výchozím nastavení je zde zadaná cesta URL odeslána do služby Service Fabric na pozadí. Pokud zde použijete stejnou cestu URL, kterou vaše služba používá, například /api/values, operace funguje bez dalších úprav. Tady můžete také zadat cestu URL, která se liší od cesty URL používané vaší back-endovou službou Service Fabric. V takovém případě musíte také zadat cestu, která se v zásadách operací později přepíše.
Microsoft.ApiManagement/service/apis/policies
Microsoft.ApiManagement/service/apis/policies vytvoří back-endovou zásadu, která spojuje všechno dohromady. Tady nakonfigurujete back-endovou službu Service Fabric, do které se směrují požadavky. Tuto zásadu můžete použít na jakoukoli operaci rozhraní API. Další informace najdete v tématu Přehled zásad.
Konfigurace back-endu pro Service Fabric poskytuje následující ovládací prvky směrování požadavků:
- Výběr instance služby zadáním názvu instance služby Service Fabric, buď pevně zakódovaného (například
"fabric:/myapp/myservice") nebo vygenerovaného z požadavku HTTP (například"fabric:/myapp/users/" + context.Request.MatchedParameters["name"]). - Řešení particionování vytvořením klíče pro particionování za použití libovolného schématu dělení Service Fabric.
- Výběr replik pro stavové služby
- Podmínky opakování řešení, které umožňují zadat podmínky pro opětovné určení umístění služby a opětovné odeslání požadavku.
policyContent je obsah zásad ve formátu XML, který je escapován do JSON. Pro účely tohoto článku vytvořte zásadu back-endu pro směrování požadavků přímo do bezstavové služby .NET nebo Javy nasazené dříve. Přidejte zásadu set-backend-service v rámci příchozích zásad. Hodnotu sf-service-instance-name nahraďte hodnotou fabric:/ApiApplication/WebApiService, pokud jste dříve nasadili back-endovou službu .NET, nebo hodnotou fabric:/EchoServerApplication/EchoServerService, pokud jste nasadili službu Java.
backend-id odkazuje na backendový prostředek, v tomto případě na prostředek definovaný v šabloně Microsoft.ApiManagement/service/backends.
id back-endu může také odkazovat na jiný back-endový prostředek vytvořený pomocí rozhraní API API Management. V tomto článku nastavte back-end id na hodnotu parametru service_fabric_backend_name .
<policies>
<inbound>
<base/>
<set-backend-service
backend-id="servicefabric"
sf-service-instance-name="service-name"
sf-resolve-condition="@(context.LastError?.Reason == "BackendConnectionFailure")" />
</inbound>
<backend>
<base/>
</backend>
<outbound>
<base/>
</outbound>
</policies>
Úplnou sadu atributů back-endových zásad Service Fabric najdete v back-endové dokumentaci ke službě API Management.
Nastavení parametrů a nasazení služby API Management
Do apim.parameters.json pro vaše nasazení vyplňte následující prázdné parametry.
| Parametr | Hodnota |
|---|---|
| apimInstanceName | sf-apim |
| apimPublisherEmail | myemail@contosos.com |
| apimSku | Developer |
| serviceFabricCertificateName | sfclustertutorialgroup320171031144217 |
| heslo k certifikátu | q6D7nN%6ck@6 |
| serviceFabricCertificateThumbprint (otisk certifikátu Service Fabric) | C4C1E541AD512B8065280292A8BA6079C3F26F10 |
| certifikát Jádra Služeb | <Kódovaný řetězec base-64> |
| cesta URL | /api/values |
| koncový bod správy HTTP clusteru | https://mysfcluster.southcentralus.cloudapp.azure.com:19080 |
| příchozí politika | <Řetězec XML> |
certificatePassword a serviceFabricCertificateThumbprint musí odpovídat certifikátu clusteru použitému k nastavení clusteru.
serviceFabricCertificate je certifikát jako řetězec kódovaný jako base-64, který lze vygenerovat pomocí následujícího skriptu:
$bytes = [System.IO.File]::ReadAllBytes("C:\mycertificates\sfclustertutorialgroup220171109113527.pfx");
$b64 = [System.Convert]::ToBase64String($bytes);
[System.Io.File]::WriteAllText("C:\mycertificates\sfclustertutorialgroup220171109113527.txt", $b64);
V inbound_policy nahraďte hodnotu sf-service-instance-name hodnotou fabric:/ApiApplication/WebApiService, pokud jste dříve nasadili back-endovou službu .NET, nebo hodnotou fabric:/EchoServerApplication/EchoServerService, pokud jste nasadili službu Java.
backend-id odkazuje na backendový prostředek, v tomto případě na prostředek definovaný v šabloně Microsoft.ApiManagement/service/backends.
id back-endu může také odkazovat na jiný back-endový prostředek vytvořený pomocí rozhraní API API Management. V tomto článku nastavte back-end id na hodnotu parametru service_fabric_backend_name .
<policies>
<inbound>
<base/>
<set-backend-service
backend-id="servicefabric"
sf-service-instance-name="service-name"
sf-resolve-condition="@(context.LastError?.Reason == "BackendConnectionFailure")" />
</inbound>
<backend>
<base/>
</backend>
<outbound>
<base/>
</outbound>
</policies>
K nasazení šablony Resource Manageru a souborů parametrů pro API Management použijte následující skript:
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"
$templatepath="C:\clustertemplates"
New-AzResourceGroupDeployment -ResourceGroupName $groupname -TemplateFile "$templatepath\network-apim.json" -TemplateParameterFile "$templatepath\network-apim.parameters.json" -Verbose
New-AzResourceGroupDeployment -ResourceGroupName $groupname -TemplateFile "$templatepath\apim.json" -TemplateParameterFile "$templatepath\apim.parameters.json" -Verbose
ResourceGroupName="sfclustertutorialgroup"
az deployment group create --name ApiMgmtNetworkDeployment --resource-group $ResourceGroupName --template-file network-apim.json --parameters @network-apim.parameters.json
az deployment group create --name ApiMgmtDeployment --resource-group $ResourceGroupName --template-file apim.json --parameters @apim.parameters.json
Otestujte ho
Teď můžete zkusit odeslat požadavek do back-endové služby v Service Fabric prostřednictvím služby API Management přímo z webu Azure Portal.
Ve službě API Management vyberte rozhraní API.
V rozhraní Service Fabric App API, které jste vytvořili v předchozích krocích, vyberte kartu Test a pak operaci Hodnoty .
Kliknutím na tlačítko Odeslat odešlete testovací požadavek do back-endové služby. Měla by se zobrazit podobná odpověď HTTP:
HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Type: application/json; charset=utf-8 Vary: Origin Ocp-Apim-Trace-Location: https://apimgmtstodhwklpry2xgkdj.blob.core.windows.net/apiinspectorcontainer/PWSQOq_FCDjGcaI1rdMn8w2-2?sv=2015-07-08&sr=b&sig=MhQhzk%2FEKzE5odlLXRjyVsgzltWGF8OkNzAKaf0B1P0%3D&se=2018-01-28T01%3A04%3A44Z&sp=r&traceId=9f8f1892121e445ea1ae4d2bc8449ce4 Date: Sat, 27 Jan 2018 01:04:44 GMT ["value1", "value2"]
Uklidit zdroje
Kromě samotného prostředku clusteru se cluster skládá z dalších prostředků Azure. Nejjednodušší způsob, jak odstranit cluster a všechny prostředky, které využívá, je odstranit skupinu prostředků.
Přihlaste se k Azure a vyberte ID předplatného, pomocí kterého chcete cluster odebrat. ID předplatného najdete přihlášením k webu Azure Portal. Pomocí rutinyRemove-AzResourceGroup odstraňte skupinu prostředků a všechny prostředky clusteru.
$ResourceGroupName = "sfclustertutorialgroup"
Remove-AzResourceGroup -Name $ResourceGroupName -Force
ResourceGroupName="sfclustertutorialgroup"
az group delete --name $ResourceGroupName
Další kroky
Přečtěte si další informace o používání služby API Management.
Pomocí webu Azure Portal můžete také vytvářet a spravovat back-endy Service Fabric pro službu API Management.