Rekommendationer för att aktivera automatisering
Gäller för denna checklista för Azure Well-Architected Framework Operation Excellence:
OE:10 | Utforma och implementera automatisering i förväg för åtgärder som livscykelproblem, start och tillämpning av skyddsmekanismer för styrning och efterlevnad. Försök inte att eftermontera automatisering senare. Välj automatiseringsfunktioner som din plattform tillhandahåller. |
---|
Den här guiden beskriver rekommendationerna för att utforma och implementera din arbetsbelastning för att aktivera automatisering. Utforma din arbetsbelastning med automatisering i åtanke för att säkerställa att rutinuppgifter som etablering av resurser, skalning och distributioner utförs snabbt och tillförlitligt. Automation förenklar underhållsaktiviteter och gör att du kan uppdatera, korrigera och uppgradera dina system mer effektivt.
Viktiga designstrategier
Utforma arbetsbelastningskomponenter som stöd för automatisering
Du kan utforma din arbetsbelastning för att stödja automatisering från idéfasen till den pågående förbättringsfasen. Överväg först hur du vill tillämpa automatisering i din arbetsbelastning för att säkerställa att du placerar de nödvändiga delarna på plats. Tänk på din arbetsbelastning när det gäller grundpelarna för välarkitekterat ramverk för att planera för de typer av automatisering som du ska använda. Du kan automatisera många funktioner för säkerhet, tillförlitlighet, prestanda, åtgärder och kostnadskontroll.
Utforma med automatisering i åtanke för att minimera refaktorisering när arbetsbelastningen har körts. Tänk på dina arbetsbelastningskrav när du bestämmer vilka automatiseringsverktyg som ska användas. Det kan finnas färdiga automatiseringsverktyg som ditt team redan är bekant med. Att använda dessa verktyg kan göra vägen mot att automatisera din arbetsbelastning enklare, men tänk på deras begränsningar och kompatibilitet med din molnplattform. Vissa automatiseringsverktyg kan till exempel integreras väl med Azure CLI-verktyg, medan andra kan kräva REST-gränssnitt. Undersök alltid de verktyg som din molnplattform tillhandahåller för att säkerställa att de är kompatibla och tillhandahålla de funktioner du behöver. Exempel på sätt som du proaktivt kan planera för automatisering är:
Distribution: Automatisera program- och infrastrukturdistributioner för att säkerställa en förutsägbar standard. Planera för automatiserad distribution genom att utveckla distributionsstandarder, träna ditt team på de verktyg som du ska använda och implementera nödvändig infrastruktur.
Validering: Verifiera efterlevnadskrav automatiskt mot din arbetsbelastning med hjälp av orkestrerings- eller principverktyg. Identifiera lämpligt valideringsverktyg för din arbetsbelastning och planera för att implementera de system som krävs, till exempel orkestreringsservrar.
Automatisk skalning: Använd automatisk skalning i hela infrastrukturen för att hjälpa dig att uppnå dina krav på tillförlitlighet och prestanda. Du bör allokera IP-adressutrymme och undernät i arbetsbelastningen i förväg för att ta hänsyn till skalningsåtgärder, förutom att planera för redundans och naturlig tillväxt.
Kompromiss: När du utformar din arbetsbelastning för att aktivera automatisering bör du överväga vilken kontroll du vill behålla jämfört med den effektivitet du kan få genom automatisering. I vissa fall kanske din arbetsbelastning inte är tillräckligt mogen för att automatisera vissa funktioner eller så kanske du behöver en flexibilitetsnivå som automatiseringen inte tillhandahåller.
Tänk också på kompetensuppsättningen för ditt team när du utformar din arbetsbelastning. Om en hög grad av automatisering kräver verktyg som ditt team inte har stöd för kan du behöva använda en mindre omfattande design som ett mellanliggande steg.
Gå tillbaka till automatiseringsdesignen under livscykeln
När arbetsbelastningen körs i molnet är det viktigt att prioritera kontinuerliga förbättringar. Observera din arbetsbelastning i praktiken, analysera användningsmönster och granska kundens beteende som är relaterat till din arbetsbelastning för att identifiera områden där du kan förbättra automatiseringen. Leta efter sätt att förbättra befintlig automatisering eller introducera ny automatisering för att förbättra din kundupplevelse. Du kan till exempel ha automatisk skalning aktiverat, men arbetsbelastningsökningen är kortvarig. Du kan integrera inskalningsautomatisering för att minska CPU-användningen när belastningen sjunker under tröskelvärdet.
Följande avsnitt i den här guiden ger rekommendationer om specifika automatiseringsområden som kan hjälpa dig med din arbetsbelastningsdesign och implementering.
Automatisera bootstrapping
Bootstrapping refererar till konfigurationsuppdateringarna till en resurs som måste göras när den har etablerats, men innan den är tillgänglig som en del av arbetsbelastningspoolen. Bootstrapping är ofta associerat med virtuella datorer (VM), men många andra resurser måste konfigureras som en del av distributionsprocessen, inklusive PaaS-tekniker (plattform som en tjänst) och containervärdtekniker som Azure Kubernetes Service (AKS).
Din molnplattform kan tillhandahålla bootstrappinglösningar åt dig, som du bör använda där det är möjligt. Du kan till exempel använda VM-tillägg i Azure för att göra fördefinierade konfigurationsändringar under distributionsprocessen och anpassa dina konfigurationsändringar genom att mata in PowerShell-skript.
Införliva automatisering i åtkomsthantering
Ta hänsyn till automatisering när du utformar din autentiserings- och auktoriseringsstrategi. Det är viktigt att upprätthålla den högsta säkerhetsnivån i produktionsarbetsbelastningar, men det kan påverka automatiseringen. Användningen av biometrisk autentisering eller multifaktorautentisering ger till exempel komplexitet som måste beaktas i din automatiseringsdesign. Använd icke-mänskliga, säkra konton för automatiserad autentisering, till exempel hanterade identiteter, arbetsbelastningsidentiteter eller certifikat. Se till att du har inkluderat hantering av hemligheter och nycklar i automatiseringen för ökad autentiseringssäkerhet.
Designvariationer i din arbetsbelastning
Undvik att distribuera ny infrastruktur i onödan när små ändringar görs genom att skapa flexibilitet i artefakterna. I stället för att distribuera om infrastrukturen när en funktionsflagga ändras kan du till exempel använda parametrar som är inställda på att uppdatera komponenter som appkonfigurationer. Se till att tydligt definiera och dokumentera hur variabilitet används för att undvika överanvändning och konfigurationsavvikelse.
Skapa ett kontrollplan
Ett kontrollplan är serverdelssystemet eller en uppsättning verktyg som du använder för att hantera programmet och dess beroenden via ett enhetligt gränssnitt. Skapa kontrollplanet som ett REST-gränssnitt, CLI eller webhook för att stödja automatisering av externa verktyg.
Exponera underhållsåtgärder via kontrollplanet som gör att du kan samordna arbetsbelastningskomponenter, till exempel ordnad säkerhetskopiering och återställning, bootstrapping, konfiguration, import/export och batchbearbetningsåtgärder. Var noga med att välja rätt detaljnivå när du bestämmer vilka åtgärder som ska exponeras via kontrollplanet.
Anta en datadriven metod för att utveckla automatisering
Utveckla en övervakningsstrategi för att samla in mått som driver den typ av automatisering du behöver. Använd strukturerad loggning och anpassade mått för att tillhandahålla den information som krävs av automatisering i ett format som är lätt att känna igen med automatiseringsverktyg. De mått som du samlar in bör paras ihop med tröskelvärden som definieras i övervakningssystemet som utlöser aviseringar och automatiserade åtgärder, t.ex. meddelanden eller självåterställningsmekanismer, när det är lämpligt. Mer information finns i Rekommendationer för självåterställning och självbevarande.
Automatisera användarlivscykelhändelser
Utforma ditt program och din infrastruktur för att möjliggöra automatisk registrering och avregistrering av användare, för enskilda användare eller kunder med flera klientorganisationer. Planera för automatiska databasuppdateringar via skript, infrastrukturetablering och avetablering samt hantering av autentiseringsuppgifter och hemligheter.
Automatisera önskad tillståndskonfiguration
Som en del av din kontinuerliga arbetsbelastningshantering kan du automatisera DSC (Desired State Configuration) i dina resurser för att säkerställa att de uppfyller efterlevnads- och affärskraven. DSC-automatisering hjälper till att säkerställa att konfigurationsavvikelsen fångas upp och åtgärdas snabbt. Du kan automatisera DSC med orkestreringsverktyg eller verktyg för principhantering. Tänk på orkestreringsverktyg som Azure DevOps-tjänster eller Jenkins som push-baserade mekanismer. Med orkestreringsverktyg kan konfigurationsuppdateringar skickas ut via en arbetsflödeshändelse, till exempel en manuell eller automatiserad distribution. Dessa uppdateringar körs som en del av en aktivitetssekvens som definierats i distributionsskriptet. Principhanteringsverktyg använder pull-baserade mekanismer, vilket innebär att ett system körs på den grundläggande nivån för din arbetsbelastning som regelbundet avsöker arbetsbelastningen för att kontrollera dess tillstånd mot din definierade DSC. Om avsökningen identifierar en feljustering eller konfigurationsavvikelse vidtar verktyget korrigerande åtgärder. Tänk på följande faktorer när du bestämmer dig för mellan orkestrerings- och principhanteringsverktyg:
Orkestreringsverktyg har inte inbyggda funktioner för att proaktivt avsöka din arbetsbelastning efter konfigurationsavvikelse. Orkestreringsverktygen bör integreras i ci/CD-pipelinen (kontinuerlig integrering och kontinuerlig leverans) för att upprätthålla en standard för distribution och hantering av infrastruktur som kod (IaC). En fördel med att använda orkestreringsverktyg är att resurser alltid är fullständigt konfigurerade när de distribueras.
Med verktyg för principhantering kan du definiera principer som påverkar en eller flera grupper av resurser. Dessa principer tillämpas när resursen checkar in med principhanteringssystemet. En fördel med att använda principhantering är att dessa system inte är koddrivna, så de kan vara enklare för operatörer i ditt team att införa.
När du bestämmer dig för mellan orkestrerings- eller principverktyg bör du överväga om de konfigurationsuppdateringar som du planerar att göra på nya resurser måste göras vid tidpunkten för distributionen. Tänk också på om definitionen av uppdateringar i kod passar dina operativa metoder och hur många resurstyper du planerar att distribuera. Om det finns många olika konfigurationer mellan resurstyper kan principverktyg vara ett enklare sätt att hantera uppdateringar.
Azure-underlättande
Principhantering
Azure Policy: Med Azure Policy kan du tillämpa standarder och utvärdera efterlevnad i stor skala. Azure Policy ger en aggregerad vy för att utvärdera det övergripande tillståndet för arbetsbelastningsmiljön på instrumentpanelen för efterlevnad. Du kan också använda Azure Policy för att utvärdera varje resurs och princip på detaljerad nivå. Du kan också använda Azure Policy för att åtgärda nya resurser automatiskt eller åtgärda befintliga resurser i grupp.
Kompromiss: Om du avlastar automatisering från din CI/CD-pipeline till plattformsverktyg eller -tjänster, till exempel Azure Policy, kan du förenkla din pipeline, men det finns nackdelar som den extra hanteringsbördan med att använda flera system. Till exempel fångas inte körningsfel i en plattformstjänst i pipelineloggarna och måste matas in på din observerbarhetsplattform på ett intelligent sätt så att lämpliga parter meddelas.
Bootstrap-automatisering
Azure Virtual Machines-tillägg: Tillägg för virtuella datorer är små paket som kör konfiguration och automatisering efter distributionen på virtuella datorer. Flera tillägg är tillgängliga för olika konfigurationsuppgifter, till exempel att köra skript, konfigurera lösningar mot skadlig kod och konfigurera loggningslösningar. Installera och kör dessa tillägg på virtuella datorer med hjälp av en Azure Resource Manager-mall, Azure CLI, Azure PowerShell-modul eller Azure Portal. Varje virtuell dator har en VM-agent installerad som hanterar tilläggets livscykel.
Vanligtvis använder VM-tillägg ett anpassat skripttillägg för att installera programvara, köra kommandon och utföra konfigurationer på en virtuell dator eller Azure Virtual Machine Scale Sets. Du kan konfigurera dessa tillägg så att de körs som en del av IaC-distributioner så att de körs på nya virtuella datorer med hjälp av Azure VM-agenten. Tillägg kan också köras utanför en Azure-distribution med hjälp av Azure CLI, PowerShell-modulen eller Azure Portal.
Cloud-init: Cloud-init är ett branschverktyg för att konfigurera virtuella Linux-datorer vid första starten. Precis som med anpassade Azure-skripttillägg kan du med cloud-init installera paket och köra kommandon på virtuella Linux-datorer. Du kan använda cloud-init för programinstallation, systemkonfiguration och mellanlagring av innehåll. Azure innehåller många moln-init-aktiverade VM-avbildningar i välkända Linux-distributioner. En fullständig lista finns i cloud-init-stöd för virtuella datorer i Azure.
Azure-distributionsskriptresurs: När du distribuerar med Azure kan du behöva köra godtycklig kod för att starta hanteringen av användarkonton, Kubernetes-poddar eller köra frågor mot data från ett system som inte är Azure. Eftersom ingen av dessa åtgärder är tillgängliga via Azure-kontrollplanet krävs en separat mekanism. Mer information finns i Microsoft.Resources deploymentScripts. Precis som andra Azure-resurser är distributionsskriptresursen:
Kan användas i en Azure Resource Manager-mall.
Innehåller Azure Resource Manager-mallberoenden i andra resurser.
Förbrukar indata och genererar utdata.
Använder en användartilldelad hanterad identitet för autentisering.
När distributionen distribueras kör distributionsskriptet PowerShell- eller Azure CLI-kommandon och -skript. Skriptkörningar och loggning kan observeras i Azure Portal eller med Azure CLI- och PowerShell-modulen. Du kan anpassa variablerna för körningsmiljön, tidsgränsalternativ och resurshantering efter ett skriptfel.
Bootstrap AKS-kluster med GitOps: Du kan starta ett nyligen etablerat AKS-kluster med GitOps och Flux v2-klustertillägget genom att deklarera konfigurationsinställningarna i GitHub-lagringsplatser. Eftersom AKS-klusterfiler lagras på en GitHub-lagringsplats är de versionshanterade och ändringar mellan versioner spåras enkelt. Kubernetes-kontrollanter körs i klustren och avstäm kontinuerligt klustertillståndet med önskat tillstånd som deklarerats i Git-lagringsplatsen genom att hämta filerna från lagringsplatsen. Mer information finns i REFERENSarkitektur för AKS-baslinje.
Konfigurationshantering
Azure Automation State Configuration är ett DSC-hanteringsverktyg som hanteras av azure policy-gästkonfigurationsfunktionen som du kan använda för att skriva, hantera och kompilera PowerShell DSC-konfigurationer för noder i alla molnbaserade eller lokala datacenter. Du kan också använda det här verktyget för att importera DSC-resurser och tilldela konfigurationer till målnoder.
Azure App Configuration är en tjänst som du kan använda för att centralt hantera programinställningar och funktionsflaggor. Det fungerar med Azure Key Vault så att du på ett säkert sätt kan hantera en mängd olika programkonfigurationer i din miljö.
Ändringsspårning och inventering
Ändringsspårning och inventering med Hjälp av Azure Monitoring Agent spårar operativsystemets konfigurationsavvikelse på både virtuella Azure-datorer och Arc-aktiverade virtuella datorer. Detta automatiserar identifieringen av drift, inventeringen som kör tjänster och installerade paket på de virtuella datorerna i din arbetsbelastning. Objekt som spåras av ändringsspårning och inventering är:
- Windows- och Linux-programvara har installerats
- Viktiga Windows- och Linux-filer
- Windows-registernycklar
- Windows-tjänster och Linux-daemoner
Relaterade länkar
- Referensarkitektur för AKS-baslinje
- Azure App Configuration
- Azure Automation State Configuration
- Azure Policy
- Cloud-init-stöd för virtuella datorer i Azure
- GitOps Flux v2-konfigurationer med AKS och Azure Arc-aktiverade Kubernetes
- Microsoft.Resources deploymentScripts
- Rekommendationer för självåterställning och självbevarelsedrift
Checklista för driftskvalitet
Se den fullständiga uppsättningen rekommendationer.