Containerisatie is een veelgebruikte benadering van app-modernisering. U kunt overwegen Om Azure Kubernetes Service te gebruiken voor geavanceerde workloads of Azure Container Instances te gebruiken voor eenvoudige containerworkloads, zoals een eenvoudige webtoepassing. Dit artikel is gericht op het implementeren van serverloze automatisering op infrastructuurniveau voor Container Instances wanneer Application Gateway wordt gebruikt als firewall.
We beginnen met een gemeenschappelijk scenario. Als u Azure-containerinstanties wilt beveiligen, kunt u containergroepen gebruiken in Azure Container Instances. Met behulp van containergroepen kunt u Azure-containerinstanties implementeren in een virtueel netwerk, zodat de containers toegang hebben tot andere privé-resources of andere Azure-services via een privé-eindpunt van Azure. Voor klanten die webtoepassingen hosten, is het gebruikelijk om een webtoepassingsfirewall zoals Azure-toepassing Gateway te gebruiken voor binnenkomend verkeer terwijl Azure Container Instances als back-endpool wordt gebruikt. Dit artikel is een goed uitgangspunt: Een statisch IP-adres beschikbaar maken voor een containergroep.
Een mogelijke uitdaging bij deze benadering is het gebruik van een niet-statisch privé-IP-adres als back-endpool. Het privé-IP-adres kan tijdens onderhoud worden gedraaid, waardoor de cloudbeheerder de back-endpool handmatig opnieuw moet configureren. Als er nieuwe containers worden toegevoegd voor schalen, moet de beheerder ook de configuratie uitvoeren om ervoor te zorgen dat verkeer naar de juiste back-endpool wordt gerouteerd. En livenesstests en gereedheidstests worden niet ondersteund in containergroepen, waardoor het moeilijker wordt om downtime van workloads te identificeren.
In dit artikel worden verbeteringen besproken voor het oplossen van deze veelvoorkomende problemen door de acceptatie van Application Insights en Azure Monitor voor bewaking en het gebruik van Azure Functions om automatische rotatie van privé-IP-adressen uit te voeren. Deze aanpak verbetert de redundantie van de workload.
Potentiële gebruikscases
Deze architectuur werkt het beste voor:
- Serverloze implementatie.
- Minimale bewerking voor een cloudeigen workload met automatisering.
- Een eenvoudige containerworkload waarvoor geen geavanceerde containerindeling is vereist.
- Een zeer redundante, externe workload met geautomatiseerde herconfiguratie.
- Een containerworkload waarvoor toegang tot privéresources is vereist, zoals die worden weergegeven door privé-eindpunten van Azure.
Architectuur
Een Visio-bestand van deze architectuur downloaden.
Gegevensstroom
Deel 1: Typische verkeersstroom voor webtoepassingen
1a. Application Gateway heeft een web application firewall-mogelijkheid, wat ideaal is voor het fronten van openbaar verkeer voordat de back-endworkload wordt bereikt. Application Gateway maakt het openbare IP-adres beschikbaar, zodat Azure DDoS Protection een andere beveiligingslaag biedt.
1b. De back-endpool van Application Gateway is geconfigureerd met het privé-IP-adres van de Azure-containerinstantie in een containergroep. Azure-containerinstanties in containergroepen worden niet geleverd met FQDN's (Fully Qualified Domain Names), dus moet het IP-adres worden gebruikt.
1c. Containers in Azure Container Instances kunnen privé-resources, zoals Azure Cosmos DB, gebruiken via privékoppelingen.
Deel 2: Verbeteringen met automatisering
2a. Application Gateway bevat een meetwaarde voor het aantal hosts dat u kunt gebruiken als een livenesstest voor Azure-containerinstanties, aangezien containergroepen in Container Instances geen ondersteuning bieden voor liveness- of gereedheidstests.
2b. Application Insights wordt gebruikt in containers om andere metrische gegevens te verzamelen, waaronder heart beats, die kunnen worden verzonden naar Application Insights voor bewaking via een aangepaste thread.
2c. U kunt waarschuwingen configureren op basis van drempelwaarden die zijn gedefinieerd in stap 2a en 2b. Stel dat uw systeem drie containerinstanties heeft die worden uitgevoerd als een back-endpool. U kunt een waarschuwing configureren om te worden geactiveerd wanneer het aantal hosts in orde kleiner is dan 3. In een actiegroep met waarschuwingsregels kunt u een Azure-functie gebruiken als actietype om de aangepaste actie te activeren.
2d. In de Azure-functie wordt een Azure SDK gebruikt om de configuratie van bestaande containerinstanties op te halen en dezelfde exemplaren opnieuw te maken. Deze functie wordt geactiveerd door de waarschuwing die is gedefinieerd in stap 2c. Het kan lang duren voordat deze functie wordt uitgevoerd, afhankelijk van de complexiteit van de installatie. Azure-functies kunnen een time-out uitvoeren, zodat u Azure Durable Functions kunt gebruiken om langlopende processen af te handelen en statusupdates op te halen.
Onderdelen
Automation
- Azure Durable Functions: In tegenstelling tot Azure Functions is Durable Functions stateful en biedt ondersteuning voor verschillende stateful werkstroompatronen. In dit voorbeeld wordt het monitorpatroon gebruikt.
- Azure SDK's: Azure SDK's zijn verzamelingen bibliotheken die u kunt gebruiken om te communiceren met Azure-services in uw favoriete programmeertaal. De SDK's bieden u meer flexibiliteit voor het integreren van logica die automatisering uitvoert.
Controleren
- Metrische gegevens van Azure Monitor: deze functie van Azure Monitor verzamelt vooraf gedefinieerde numerieke gegevens van Azure-services.
- Actiegroepen: Een actiegroep is een verzameling meldingsvoorkeuren die zijn gedefinieerd door de resource-eigenaar. U kunt meldingskanalen en acties definiëren op basis van geactiveerde waarschuwingen.
Netwerken
- Azure DDoS Protection: Azure DDoS (Basic) Protection is gratis en ingeschakeld op alle openbare IP-adressen. Azure DDoS Network Protection biedt meer mogelijkheden, zoals het opnemen van logboeken naar andere locaties en de mogelijkheid om het DDoS Protection Rapid Response-team in te schakelen.
- Azure-toepassing Gateway: Azure Web Application Firewall biedt bescherming voor openbare toepassingen tegen aanvallen zoals SQL-injectie en XSS-aanvallen.
- Azure Private Link: Azure Private Link biedt toegang tot Azure PaaS-services via een privé-eindpunt op de Microsoft-backbone om de netwerktoegangsbeveiliging verder te verbeteren.
Toepassing
- Azure Container Instances: Azure Container Instances voert containerinstallatiekopieën naadloos uit zonder dat u een andere infrastructuur hoeft in te stellen. U moet Azure Kubernetes Service (AKS) overwegen voor geavanceerde containerindeling.
- Azure Cosmos DB: Azure Cosmos DB is een volledig beheerde NoSQL-database die ondersteuning biedt voor meerdere platforms, zoals SQL, Cassandra en MongoDB.
- Azure Key Vault: als best practice voor beveiliging slaan ontwikkelaars verbindingsreeks s niet op als duidelijke tekst in de broncode van de toepassing. Azure Key Vault fungeert als een centrale locatie voor het opslaan van geheimen met verbeterde beveiliging. Toepassingen kunnen de benodigde sleutels ophalen met verbeterde beveiliging.
Alternatieven
In het voorgaande scenario wordt een back-endpool bijgewerkt voor Application Gateway. Als alternatief kunt u een privé-DNS-zone van Azure gebruiken als doelback-end voor Application Gateway en Azure-functies gebruiken om een record bij te werken in plaats van wijzigingen aan te brengen in Application Gateway. Dit alternatief vermindert de implementatietijd. Aan de andere kant zouden metrische gegevens van Application Gateway het aantal hosts niet kunnen identificeren omdat deze door DNS worden geabstraheerd. Deze automatisering moet dus rechtstreeks worden geactiveerd via een oplossing voor toepassingsbewaking, zoals Application Insights of Azure Monitor.
Azure biedt meerdere opties voor het hosten van workloads op basis van containers, zoals Azure Kubernetes Service, Azure-app Service en Azure Container Apps.
Azure Kubernetes Service biedt geavanceerde containerindeling en netwerkmogelijkheden, zoals de serviceresource, die niet beschikbaar is in Container Instances. Deze referentiearchitectuur is gebaseerd op deze vereiste.
App Service kan ook containerworkloads hosten en Met App Service Environment kunnen ontwikkelaars App Service implementeren in Azure Virtual Network. De prijsstructuur van Container Instances, vergeleken met App Service, maakt het interessant voor kleine workloads.
Azure Container Apps is een serverloos containerplatform op basis van Kubernetes. Hiermee kunnen ontwikkelaars kubernetes-toepassingen bouwen die geen directe toegang nodig hebben tot alle systeemeigen Kubernetes-API's en clusterbeheer. Azure Container Apps biedt volledig beheerde ervaring op basis van best practices.
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 Frameworkvoor meer informatie.
Betrouwbaarheid
Betrouwbaarheid zorgt ervoor dat uw toepassing kan voldoen aan de toezeggingen die u aan uw klanten hebt gedaan. Zie Controlelijst ontwerpbeoordeling voor betrouwbaarheidvoor meer informatie.
Omdat liveness- en gereedheidstests niet worden ondersteund in containergroepen, raden we u aan om metrische gegevens van Azure Monitor en Azure-toepassing Insights te gebruiken voor bewaking. Containerstatus en uptime zijn geen deterministische benaderingen om te bepalen of een systeem end-to-end is.
Beveiliging
Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie voor meer informatie controlelijst ontwerpbeoordeling voor Security.
De mogelijkheid om PaaS te implementeren in een virtueel netwerk (VNet-injectie) verbetert de beveiliging niet als de configuratie niet juist is ingesteld. VNet-injectie biedt beheerders meer netwerkbeheer, wat voordelen biedt, zoals strakkere netwerkbeveiligingsgroepen en het gebruik van resources die niet openbaar worden gemaakt.
Private Link projecteert een privé-eindpunt in het virtuele netwerk, waardoor de toepassing rechtstreeks via een privé-IP-adres toegang heeft tot Azure PaaS. Tegelijkertijd kunnen beheerders verder bepalen wie toegang heeft tot de relevante Azure PaaS.
Als u containerinstallatiekopieën opslaat in Azure Container Registry, kunt u Microsoft Defender inschakelen voor containerregisters om beveiligingsscans voor containerinstallatiekopieën uit te voeren.
Kostenoptimalisatie
Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie controlelijst ontwerpbeoordeling voor kostenoptimalisatievoor meer informatie.
Gebruik de Azure-prijscalculator om de kosten voor Azure-resources te schatten.
Zie dit voorbeeld van de voorgaande implementatie.
Operationele uitmuntendheid
Operational Excellence behandelt de operationele processen die een toepassing implementeren en deze in productie houden. Zie controlelijst ontwerpbeoordeling voor Operational Excellencevoor meer informatie.
Azure Durable Functions wordt gebruikt om de infrastructuur opnieuw te configureren als er een fout optreedt in Container Instances of als het privé-IP-adres van een containergroep wordt gewijzigd. Zoals vermeld in de documentatie, duurt het inrichtingsproces iets langer. Gebruikers ondervinden mogelijk minimale downtime als de containers niet op tijd gereed zijn.
Deze architectuur voegt een tolerantielaag toe. Maar we raden u nog steeds aan om bewaking in de toepassing te configureren en de Azure-status te controleren op platformfouten.
Prestatie-efficiëntie
Prestatie-efficiëntie is de mogelijkheid van uw workload om te schalen om te voldoen aan de eisen die gebruikers op een efficiënte manier stellen. Zie controlelijst ontwerpbeoordeling voor prestatie-efficiëntievoor meer informatie.
CPU- en geheugenvereisten worden gedefinieerd wanneer containers worden gemaakt, zodat u niet rechtstreeks verticaal schalen kunt uitvoeren. U kunt containers toevoegen aan de containergroep om horizontaal te schalen. Houd er echter rekening mee dat elke container in de containergroep één privé-IP-adres verbruikt, dus de limiet is de ingerichte subnetgrootte.
Een andere belangrijke overweging voor het schalen is de status van de toepassing. De toepassing moet de status, lokaal of met behulp van externe services zoals Azure Cache voor Redis, afhandelen om ervoor te zorgen dat het schalen op aanvraag geen gegevensverlies in de toepassing veroorzaakt.
Medewerkers
Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.
Hoofdauteur:
- Marcus Tee | Technische strategie en roadmap
Volgende stappen
- Moderne toepassingen ontwerpen in Azure
- Netwerkbeveiliging implementeren in Azure
- Azure Serverless Computing Cookbook (Handleiding voor serverloze computing met Azure)
Verwante resources
Blader door onze architecturen:
Verwante richtlijnen: