In dit scenario consolideert een organisatie meerdere API's intern met behulp van Azure API Management geïmplementeerd in een virtueel netwerk.
Architectuur
Een Visio-bestand van deze architectuur downloaden.
Het voorgaande diagram omvat een volledige levenscyclus van interne API's die door de externe gebruikers worden gebruikt.
Gegevensstroom
De gegevens stromen als volgt:
- Ontwikkelaars checken code in bij een GitHub-opslagplaats die is verbonden met een CI/CD-pijplijnagent die is geïnstalleerd op een Azure-VM.
- De agent pusht de build naar de API-toepassing die wordt gehost in ILB App Service Environment.
- Azure API Management gebruikt de voorgaande API's via HOST-headers die zijn opgegeven in API Management-beleid.
- API Management gebruikt de DNS-naam van de App Service Environment voor alle API's.
- Application Gateway maakt de API Management-ontwikkelaars- en API-portal beschikbaar.
- Azure Privé-DNS wordt gebruikt om het verkeer intern te routeren tussen App Service Environment, API Management en Application Gateway.
- Externe gebruikers maken gebruik van de weergegeven ontwikkelaarsportal om de API's te gebruiken via het openbare IP-adres van Application Gateway.
Onderdelen
- Met Azure Virtual Network kunnen Azure-resources veilig communiceren met elkaar, internet en on-premises netwerken.
- Met Azure Privé-DNS kunnen domeinnamen worden omgezet in een virtueel netwerk zonder dat u een aangepaste DNS-oplossing hoeft toe te voegen.
- Met Azure API Management kunnen organisaties API's publiceren naar externe, partner- en interne ontwikkelaars om hun gegevens en services te gebruiken.
- Application Gateway is een load balancer voor webverkeer waarmee u verkeer naar uw webtoepassingen kunt beheren.
- Interne load balancer App Service Environment is een Azure App Service--functie die een volledig geïsoleerde en toegewezen omgeving biedt voor het veilig uitvoeren van App Service-apps op grote schaal.
- Azure DevOps is een service voor het beheren van uw ontwikkelingslevenscyclus en bevat functies voor planning en projectbeheer, codebeheer, build en release.
- Application Insights is een uitbreidbare APM-service (Application Performance Management) voor webontwikkelaars op meerdere platforms.
- Azure Cosmos DB is de wereldwijd gedistribueerde databaseservice voor meerdere modellen van Microsoft.
Alternatieven
- In een azure lift-and-shift-scenario dat is geïmplementeerd in een virtueel Azure-netwerk, kunnen back-endservers rechtstreeks worden aangepakt via privé-IP-adressen.
- Als u on-premises resources gebruikt, kan het API Management-exemplaar privé teruggaan naar de interne service via een Azure VPN-gateway en een IPSec-verbinding (Internet Protocol Security) of ExpressRoute die een hybride Azure- en on-premises scenario maakt.
- Bestaande of opensource-DNS-providers kunnen worden gebruikt in plaats van de Op Azure gebaseerde DNS-service.
- Interne API's die buiten Azure zijn geïmplementeerd, kunnen nog steeds profiteren door de API's beschikbaar te maken via API Management Service.
Scenariodetails
In dit scenario host een organisatie meerdere API's met behulp van Azure-toepassing Service Environment (ILB App Service Environment) en willen ze deze API's intern consolideren met behulp van Azure API Management (APIM) die in een virtueel netwerk zijn geïmplementeerd. Het interne API Management-exemplaar kan ook worden blootgesteld aan externe gebruikers om het volledige potentieel van de API's mogelijk te maken. Deze externe blootstelling kan worden bereikt met behulp van Azure-toepassing Gateway-doorstuuraanvragen naar de interne API Management-service, die op zijn beurt de API's verbruikt die zijn geïmplementeerd in de App Service Environment.
- De web-API's worden gehost via een beveiligd HTTPS-protocol en maken gebruik van een TLS-certificaat.
- De toepassingsgateway is ook geconfigureerd via poort 443 voor beveiligde en betrouwbare uitgaande aanroepen.
- De API Management-service is geconfigureerd voor het gebruik van aangepaste domeinen met behulp van TLS-certificaten.
- Bekijk de voorgestelde netwerkconfiguratie voor App Service-omgevingen
- Er moet een expliciete vermelding zijn over poort 3443, zodat API Management kan worden beheerd via Azure Portal of PowerShell.
- Gebruik beleidsregels in APIM om een HOST-header toe te voegen voor de API die wordt gehost in App Service Environment. Dit zorgt ervoor dat de Load Balancer van de App Service Environment de aanvraag correct doorstuurt.
- Api Management accepteert de DNS-vermelding app serviceomgeving voor alle apps die worden gehost onder App Service Environments. Voeg een APIM-beleid toe om expliciet de HOST-header in te stellen zodat de Load Balancer van App Service Environment onderscheid kan maken tussen apps in de App Service-omgeving.
- Overweeg om te integreren met Azure-toepassing Insights, waarmee ook metrische gegevens worden weergegeven via Azure Monitor voor bewaking.
- Als u CI/CD-pijplijnen gebruikt voor het implementeren van interne API's, kunt u overwegen om uw eigen gehoste agent te bouwen op een VIRTUELE machine in het virtuele netwerk.
Potentiële gebruikscases
- Synchroniseer klantadresgegevens intern nadat de klant een wijziging heeft aangebracht.
- Trek ontwikkelaars aan op uw platform door unieke gegevensassets weer te geven.
Overwegingen
Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.
Betrouwbaarheid
Betrouwbaarheid zorgt ervoor dat uw toepassing kan voldoen aan de toezeggingen die u aan uw klanten hebt gedaan. Zie Overzicht van de betrouwbaarheidspijler voor meer informatie.
Beschikbaarheid
U kunt de Azure API Management-service implementeren als een implementatie met meerdere regio's voor hogere beschikbaarheid en ook om latentie te verminderen. Deze functie is alleen beschikbaar in de Premium-modus. De API Management-service in dit specifieke scenario verbruikt API's van App Service Environments. U kunt APIM ook gebruiken voor API's die worden gehost op de interne on-premises infrastructuur.
App Service Environments kan gebruikmaken van Traffic Manager-profielen om het verkeer dat wordt gehost in App Service Environments te distribueren voor een hogere schaal en beschikbaarheid.
Tolerantie
Hoewel in dit voorbeeldscenario meer wordt gesproken over configuratie, moeten de API's die worden gehost in de App Service Environments flexibel genoeg zijn om fouten in de aanvragen af te handelen, die uiteindelijk worden beheerd door de API Management-service en Application Gateway. Overweeg patronen voor opnieuw proberen en circuitonderbrekers in het API-ontwerp. Zie Tolerante toepassingen ontwerpen voor Azure voor algemene richtlijnen voor het ontwerpen van flexibele oplossingen.
Beveiliging
Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.
Omdat het voorgaande voorbeeldscenario volledig wordt gehost op een intern netwerk, worden API Management en App Service Environment al geïmplementeerd op beveiligde infrastructuur (Azure Virtual Network). U kunt Application Gateways integreren met Microsoft Defender voor Cloud om een naadloze manier te bieden om bedreigingen voor de omgeving te voorkomen, te detecteren en erop te reageren. Zie de Documentatie voor Azure-beveiliging voor algemene richtlijnen voor het ontwerpen van beveiligde oplossingen.
Kostenoptimalisatie
Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.
API Management wordt aangeboden in vier lagen: ontwikkelaar, basic, standard en premium. U vindt hier gedetailleerde richtlijnen over het verschil in deze lagen in de prijsrichtlijnen voor Azure API Management.
Klanten kunnen de schaal van API Management aanpassen door eenheden toe te voegen of te verwijderen. De capaciteit van elke eenheid is afhankelijk van de bijbehorende laag.
Notitie
U kunt de developer-laag gebruiken voor evaluatie van de API Management-functies. U moet de developer-laag niet gebruiken voor productie.
Als u de verwachte kosten wilt bekijken en wilt aanpassen aan uw implementatiebehoeften, kunt u het aantal schaaleenheden en App Service-exemplaren wijzigen in de Azure-prijscalculator.
Op dezelfde manier vindt u de prijsrichtlijnen voor App Service Environments.
U kunt de prijzen van Application Gateway configureren, afhankelijk van de vereiste laag en resources.
Prestatie-efficiëntie
Prestatie-efficiëntie is de mogelijkheid om op efficiënte wijze uw werkbelasting te schalen om te voldoen aan de vereisten die gebruikers eraan stellen. Zie overzicht van de pijler Prestatie-efficiëntie voor meer informatie.
Schaalbaarheid
U kunt API Management-exemplaren uitschalen , afhankelijk van een aantal factoren, zoals het aantal en de frequentie van gelijktijdige verbindingen, het soort en aantal geconfigureerde beleidsregels, aanvraag- en antwoordgrootten en back-endlatenties voor de API's. De opties voor het uitschalen van exemplaren zijn beschikbaar in de Basic-, Standard- en Premium-lagen, maar zijn gebonden aan een bovengrens voor basic- en Standard-lagen. De exemplaren worden eenheden genoemd en kunnen worden geschaald tot maximaal twee eenheden in de Basic-laag, vier eenheden in de Standard-laag en een willekeurig aantal eenheden in de Premium-laag. Opties voor automatisch schalen zijn ook beschikbaar om uitschalen in te schakelen op basis van regels.
App Service Environments zijn ontworpen voor schaalaanpassing met limieten op basis van de prijscategorie. U kunt de apps die worden gehost onder de App Service Environments configureren om uit te schalen (aantal exemplaren) of omhoog schalen (instantiegrootte) afhankelijk van de vereisten van de toepassing.
Azure-toepassing gateway automatisch schalen is beschikbaar als onderdeel van de zoneredundante SKU in alle globale Azure-regio's. Zie de openbare preview-functie met betrekking tot automatisch schalen van App Gateway.
Dit scenario implementeren
Vereisten en aannames
- U moet een aangepaste domeinnaam aanschaffen.
- U hebt een TLS-certificaat nodig (we hebben een jokertekencertificaat van Azure Certificates Service gebruikt) om er een te gebruiken voor al onze aangepaste domeinen. U kunt ook een zelfondertekend certificaat aanschaffen voor Dev Test-scenario's.
- Deze specifieke implementatie maakt gebruik van de domeinnaam contoso.org en een TLS-certificaat met jokertekens voor het domein.
- De implementatie maakt gebruik van de resourcenamen en adresruimten die worden vermeld in de sectie Implementatie. U kunt de resourcenamen en adresruimten configureren.
Implementatie en het samenstellen van de onderdelen
U moet de onderdelen die zijn geïmplementeerd, als volgt configureren met behulp van de voorgaande Resource Manager-sjabloon:
Virtueel netwerk met de volgende configuraties:
- Naam:
ase-internal-vnet
- Adresruimte voor virtueel netwerk: 10.0.0.0/16
- Vier subnetten
-
backendSubnet
voor DNS-service: 10.0.0.0/24 -
apimsubnet
voor interne API Management-service: 10.0.1.0/28 -
asesubnet
voor ILB App Service Environment: 10.0.2.0/24 - VMSubnet voor test-VM's en interne vm met devOps-hostagent: 10.0.3.0/24
-
- Naam:
Privé-DNS service (openbare preview) omdat het toevoegen van een DNS-service vereist dat het virtuele netwerk leeg is.
- Raadpleeg de implementatierichtlijnen voor meer informatie
Optie App Service Environment met interne load balancer (ILB):
aseinternal
(DNS:aseinternal.contoso.org
). Zodra de implementatie is voltooid, uploadt u het wildcardcertificaat voor de ILBApp Service-plan met App Service Environment als locatie
Een API-app (App Service voor het gemak) -
srasprest
(URL:https://srasprest.contoso.org
) – ASP.NET web-API op basis van Model-View-Controller (MVC). Na de implementatie configureert u:- Web-app voor het gebruik van het TLS-certificaat
- Application Insights voor de voorgaande apps:
api-insights
- Maak een Azure Cosmos DB-service voor web-API's die intern naar virtueel netwerk worden gehost:
noderestapidb
- DNS-vermeldingen maken in de Azure Privé-DNS-zone die is gemaakt
- U kunt Azure Pipelines gebruiken om de agents op virtuele machines te configureren voor het implementeren van de code voor web-app in een intern netwerk
- Voor het intern testen van de API-app maakt u een test-VM binnen het subnet van het virtuele netwerk
API Management-service maken:
apim-internal
Configureer de service om verbinding te maken met een intern virtueel netwerk in subnet:
apimsubnet
. Nadat de implementatie is voltooid, voert u de volgende extra stappen uit:- Aangepaste domeinen configureren voor APIM Services met behulp van TLS
- API-portal (
api.contoso.org
) - Ontwikkelaarsportal (
portal.contoso.org
) - Configureer in de sectie API's de App Service Environment-apps met behulp van de DNS-naam van app Service Environment toegevoegd beleid voor hostheader voor de web-app
- Gebruik de eerder gemaakte test-VM om de INTERNE API Management-service in het virtuele netwerk te testen
- API-portal (
Notitie
Het testen van de APIM-API's vanuit Azure Portal werkt niet, omdat
api.contoso.org
het niet openbaar kan worden omgezet.*- Aangepaste domeinen configureren voor APIM Services met behulp van TLS
Configureer de toepassingsgateway voor toegang tot de API-service:
apim-gateway
op poort 80. Voeg TLS-certificaten toe aan de toepassingsgateway en bijbehorende statustests en HTTP-instellingen. Configureer ook de regels en listeners voor het gebruik van het TLS-certificaat.
Zodra de voorgaande stappen zijn voltooid, configureert u de DNS-vermeldingen in de CNAME-vermeldingen van de webregistrar van api.contoso.org
en portal.contoso.org
met de openbare DNS-naam van Application Gateway: ase-appgtwy.westus.cloudapp.azure.com
. Controleer of u de Dev-portal kunt bereiken vanuit openbaar en of u de API's van APIM-services kunt testen met behulp van Azure Portal.
Notitie
Het is geen goed idee om dezelfde URL te gebruiken voor interne en externe eindpunten voor de APIM-services.
Medewerkers
Dit artikel wordt onderhouden door Microsoft. Het is oorspronkelijk geschreven door de volgende inzender.
Hoofdauteur:
- Srikant Sarwa | Senior klanttechnicus
Andere Inzenders:
- Shawn Kupfer | Technische schrijver
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.
Volgende stappen
- Zelfstudie: Uw eerste API importeren en publiceren
- Zelfstudie: Een product maken en publiceren
- Zelfstudie: Meerdere versies van uw API publiceren