Redigera

Dela via


Distribuera och använda appar med AKS aktiverat av Arc på Azure Stack HCI eller Windows Server

Azure Kubernetes Service (AKS)
Azure Stack HCI
Azure Arc
GitHub
Azure Pipelines

Informationen i den här artikeln innehåller rekommendationer för att skapa en appdistributionspipeline för containerbaserade appar i Azure Kubernetes Service som aktiveras av Azure Arc. Apparna kan köras på Azure Stack HCI eller Windows Server. Mer specifikt gäller vägledningen för distributioner som använder Azure Arc och GitOps.

Viktigt!

Informationen i den här artikeln gäller för AKS på Azure Stack HCI version 22H2 och AKS-HCI på Windows Server. Den senaste versionen av AKS körs på Azure Stack HCI 23H2. Mer information om den senaste versionen finns i dokumentationen om AKS på Azure Stack HCI version 23H2.

Arkitektur

Diagram som visar en arkitektur för AKS-kluster som körs på Azure Stack HCI eller Windows Server.

Ladda ned en Visio-fil med den här arkitekturen.

Arbetsflöde

Arkitekturen illustrerar en implementering som distribuerar containerbaserade program på AKS-kluster som körs på Azure Stack HCI eller Windows Server. Den använder GitOps för att hantera infrastrukturen som kod (IaC).

  1. En operatör konfigurerar en lokal infrastruktur på Azure Stack HCI eller på Windows Server-maskinvara som kan vara värd för ett AKS-kluster.
  2. Lokalt distribuerar en administratör ett AKS-kluster i Azure Stack HCI- eller Windows Server-infrastrukturen och ansluter klustret till Azure med hjälp av Azure Arc. För att aktivera GitOps distribuerar administratören även Flux-tillägget och dess konfiguration till AKS-klustret.
  3. GitOps-konfigurationer underlättar IaC. Dessa GitOps-konfigurationer representerar det önskade tillståndet för AKS-klustret och använder den information som tillhandahålls av den lokala administrationen. Den lokala administrationen avser de hanteringsverktyg, gränssnitt och metoder som tillhandahålls av AKS-klustret som distribueras på Azure Stack HCI eller Windows Server.
  4. Administratören skickar GitOps-konfigurationer till en Git-lagringsplats. Du kan också använda en Helm- eller Kustomize-lagringsplats. Flux-komponenterna i AKS-klustret övervakar lagringsplatsen för ändringar, identifierar och tillämpar uppdateringar efter behov.
  5. Flux-tillägget i AKS-klustret tar emot ett meddelande från GitOps-flödet när ändringar görs i konfigurationerna på lagringsplatserna. Den utlöser automatiskt distributionen av den önskade konfigurationen med hjälp av Helm-diagram eller Kustomize.
  6. Programändringar i form av ny eller uppdaterad konfiguration eller kod skickas till de avsedda lagringsplatserna, inklusive motsvarande uppdateringar av containeravbildningar. Dessa uppdateringar av containeravbildningar skickas till privata eller offentliga containerregister.
  7. Fluxoperatorn i AKS-klustret identifierar ändringar i lagringsplatserna och initierar distributionen till klustret.
  8. Ändringar implementeras löpande i klustret för att säkerställa minimal stilleståndstid och bevara det önskade tillståndet för klustret.

Komponenter

  • Azure Stack HCI är en lösning för hyperkonvergerad infrastruktur (HCI) som du kan använda för att köra virtualiserade arbetsbelastningar lokalt. Den använder en kombination av programvarudefinierade beräknings-, lagrings- och nätverkstekniker. Den bygger på Windows Server och integreras med Azure-tjänster för att tillhandahålla en hybridmolnupplevelse.
  • AKS på Azure Stack HCI gör det möjligt för utvecklare och administratörer att använda AKS för att distribuera och hantera containerbaserade appar i Azure Stack HCI.
  • Azure Arc är en hybridlösning för molnhantering som du kan använda för att hantera servrar, Kubernetes-kluster och program i lokala miljöer, multimoln och gränsmiljöer. Det ger en enhetlig hanteringsupplevelse genom att du kan styra resurser i olika miljöer med hjälp av Azure-hanteringstjänster som Azure Policy, Microsoft Defender för molnet och Azure Monitor.
  • Git-, Helm- och Bitbucket-lagringsplatser (offentliga och privata) kan vara värdar för GitOps-konfigurationer, inklusive Azure DevOps- och GitHub-lagringsplatser.
  • Containerregister (offentliga och privata), inklusive Azure Container Registry och Docker Hub, värdcontaineravbildningar.
  • Azure Pipelines är en tjänst för kontinuerlig integrering (CI) och kontinuerlig leverans (CD) som automatiserar uppdateringar till lagringsplatser och register.
  • Flux är ett GitOps-distributionsverktyg med öppen källkod som Azure Arc-aktiverade Kubernetes-kluster kan använda. Du kan använda Azure Arc-anslutningen för att implementera de klusterkomponenter som spårar ändringar i de Git-, Helm- eller Kustomize-lagringsplatser som du anger och tillämpar dem på det lokala klustret. Fluxoperatorn granskar regelbundet (eller baserat på en utlösare) den befintliga klusterkonfigurationen för att säkerställa att den matchar den på lagringsplatsen. Om det upptäcker skillnader åtgärdar Flux dem genom att tillämpa eller, om det gäller konfigurationsavvikelse, tillämpa den önskade konfigurationen igen.

Information om scenario

För att kunna köra containrar i stor skala krävs en orkestrering för att automatisera schemaläggning, distribution, nätverk, skalning, hälsoövervakning och containerhantering. Kubernetes är en vanlig orkestrerare för nya containerbaserade distributioner. När antalet Kubernetes-kluster och -miljöer växer kan det vara svårt att hantera dem individuellt. Att använda Azure Arc-aktiverade tjänster som Azure Arc-aktiverade Kubernetes, GitOps, Azure Monitor och Azure Policy minskar den administrativa bördan och hjälper dig att hantera den här utmaningen.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Well-Architected Framework innehåller vägledande principer som hjälper dig att utvärdera och optimera fördelarna med molnbaserade lösningar. Med tanke på den inneboende integreringen av lokala AKS-distributioner med Azure-tekniker är det lämpligt att tillämpa ramverksrekommendationer för din design och implementering av GitOps.

Tillförlitlighet

Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över tillförlitlighetspelare.

  • Använd kubernetes funktioner med hög tillgänglighet för att säkerställa hög tillförlitlighet i GitOps-baserade lösningar.
  • Använd Flux v2 för att ytterligare öka programtillgängligheten i distributioner som omfattar flera platser eller kluster.
  • Använd automatiserade distributioner för att minska risken för mänskliga fel.
  • Integrera en CI/CD-pipeline i din arkitektur för att förbättra effektiviteten i automatiserad testning.
  • Spåra alla kodändringar så att du snabbt kan identifiera och lösa problem. Om du vill spåra de här driftsändringarna använder du de inbyggda funktionerna i GitHub eller Azure DevOps. Du kan använda dessa verktyg för att implementera principer och automatisering för att se till att ändringarna spåras, följa lämplig godkännandeprocess och är underhållsbara.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

  • Förstå säkerhetsfördelarna med arkitekturen. Med Pipelines för Flux v2, Kustomize, GitOps och DevOps tillämpas driftändringar via automatisering. Du kan styra och granska koden som implementerar dessa operativa metoder genom att dra nytta av mekanismer som grenskydd, granskningar av pull-begäranden och oföränderlig historik. IaC-metoden tar bort behovet av att hantera behörigheter för åtkomst till infrastrukturen och stöder principen om lägsta behörighet. Flux-stöd för namnområdesbaserad konfigurationsomfång underlättar scenarier med flera klientorganisationer.

  • Förstå kryptering. För att säkerställa datasäkerhet lagrar klusterkonfigurationstjänsten Flux-konfigurationsresursdata i en Azure Cosmos DB-databas och krypterar dem i vila.

  • Överväg att använda privata slutpunkter. GitOps stöder Azure Private Link för anslutning till Azure Arc-relaterade tjänster.

Använda Azure-principer och Azure Arc

Azure Arc utökar omfånget för resurshantering bortom Azure. Det utökade omfånget ger en rad fördelar som gäller för fysiska och virtuella servrar. När det gäller AKS är följande fördelar:

  • Styrning. Azure Arc kan tillämpa körningsstyrning som påverkar AKS-kluster och deras poddar med hjälp av Azure Policy for Kubernetes och centraliserad rapportering av motsvarande principefterlevnad. Du kan använda den här funktionen för att till exempel framtvinga användningen av HTTPS för inkommande trafik som riktar sig mot Kubernetes-klustret, eller för att säkerställa att containrar endast lyssnar på specifika portar som du anger.
  • Förbättrade åtgärder. Azure Arc ger förbättrat stöd för automatiserad klusterkonfiguration via GitOps.

Azure Policy underlättar centraliserad GitOps-hantering via den inbyggda definitionen av distribuera GitOps till Kubernetes-klusterprincip . När du har tilldelat den här principen tillämpas automatiskt alla GitOps-baserade konfigurationer som du väljer för Azure Arc-aktiverade Kubernetes-kluster som du anger, om deras Azure Resource Manager-resurser ingår i tilldelningens omfång.

Kostnadsoptimering

Kostnadsoptimering handlar om att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

  • Använd den automatisering som GitOps tillhandahåller för att minimera dina hanterings- och underhållskostnader. Den förenklade driftsmodellen kräver mindre arbete för att underhålla och resulterar i minskade driftskostnader.

  • Använd AKS aktiverat av Arc. AKS Arc har inbyggt stöd för automatisk skalning av beräkningsresurserna och ökad arbetsbelastningstäthet som är inbyggd i containerindelningen. Autoskalning kan hjälpa dig att ändra storlek på din fysiska infrastruktur och påskynda konsolideringsinitiativen för datacenter, vilket kan hjälpa dig att spara pengar.

Driftsäkerhet

Driftskvalitet omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Översikt över grundpelare för driftskvalitet.

  • Använd GitOps-lagringsplatser för att tillhandahålla en enda sanningskälla som lagrar alla AKS-program- och klusterinfrastrukturdata. Dessa lagringsplatser kan fungera som den enda komponent som tillämpar ändringar i klustret.

  • Dra nytta av GitOps-integreringen med DevOps-metoden för infrastruktur för att förkorta den tid som krävs för att leverera nya programvaruversioner. Vi rekommenderar också att du använder Azure Resource Manager och Azure Arc för att skapa en konsekvent driftsmodell för molnbaserade och lokala containerbaserade arbetsbelastningar. Om du vill styra GitOps-konfigurationer på olika nivåer använder du Azure Policy tillsammans med funktionerna för Flux-operatorer. På så sätt kan du upprätta kontroll på företagsnivå, på nivån för ett enskilt AKS-kluster eller till och med på nivån för specifika namnområden i ett kluster.

  • Skapa GitOps-konfigurationer som är begränsade till ett kluster (eller till flera kluster) för att implementera en baslinje för komponenter i den containerbaserade infrastrukturen, till exempel ingresskontrollanter, tjänstnät, säkerhetsprodukter och övervakningslösningar. Om du gör det kan du se till att dina kluster uppfyller kraven för baslinjeinfrastrukturen.

  • Skapa GitOps-konfigurationer på namnområdesnivå som gör att du kan styra resurserna för dina arbetsbelastningar på en mer detaljerad nivå (till exempel poddar, tjänster och inkommande vägar) och se därför till att dina arbetsbelastningar uppfyller programstandarderna. Genom att följa dessa riktlinjer kan du se till att distributionen och hanteringen av AKS Arc-program förblir effektiv, effektiv och kostnadseffektiv.

Använda GitOps

GitOps är en bra matchning för hantering av AKS-kluster. Kubernetes baseras på den deklarativa modellen. Klustertillståndet och dess komponenter beskrivs i kod. GitOps lagrar koden på en Git-lagringsplats och använder den för att definiera målmiljöns önskade tillstånd.

Kodändringar omfattas av versionskontroll, granskning och valfria granskningar och godkännanden. Du kan använda granskningar och godkännanden för att automatiskt utlösa uppdateringar av AKS-infrastrukturen och containerbaserade arbetsbelastningar. GitOps använder en pull-modell där en specialiserad uppsättning klusterkomponenter avsöker lagringsplatsens status. När en ändring identifieras hämtar en AKS-värdbaserad GitOps-komponent och tillämpar den nya konfigurationen.

GitOps minimerar avsevärt behovet av direkt klusterhantering, vilket resulterar i en förenklad driftsmodell och även ökad säkerhet. GitOps stöder principen om lägsta behörighet. GitOps tar till exempel bort behovet av att ändra kluster manuellt via kubectl, så färre privilegier krävs. GitOps ger också tidig feedback om föreslagna principändringar. Tidig feedback är särskilt värdefull för utvecklare eftersom den hjälper dem att minska de risker och kostnader som är kopplade till buggar.

GitOps förenklar standardiseringen av klusterkonfigurationer i hela organisationen för att uppfylla efterlevnads- och styrningskrav. Du kan definiera en baslinjekonfiguration som du vill tillämpa på varje kluster och dess komponenter, till exempel nätverksprinciper, rollbindningar och poddsäkerhetsprinciper. Om du vill implementera den konfigurationen i alla Azure Arc-aktiverade kluster kan du använda Azure Policy för resursgrupper eller prenumerationer. Dessa principer gäller automatiskt för befintliga resurser och även för resurser som skapas efter principtilldelningen.

GitOps länkar klustret till en eller flera Git-lagringsplatser. Du kan använda varje lagringsplats för att beskriva olika aspekter av klusterkonfigurationen. Den resulterande deklarativa modellen underlättar automatisering av etablering och hantering av Kubernetes-resurser som namnområden eller distributioner via deras manifestfiler. Du kan också använda Helm-diagram, som tillsammans med Flux v2 och Kustomize underlättar automatisk distribution av containerbaserade program eller Kustomize-filer som beskriver miljöspecifika ändringar.

Använda flux

Flux implementeras som kubernetesoperator. Den använder en uppsättning kontrollanter och motsvarande deklarativa API:er. Kontrollanterna hanterar en uppsättning anpassade resurser som fungerar tillsammans för att leverera de avsedda funktionerna.

GitOps är aktiverat i ett Azure Arc-aktiverat Kubernetes-kluster som ett Microsoft.KubernetesConfiguration/extensions/microsoft.flux klustertillägg. När du har installerat microsoft.flux klustertillägget kan du skapa en eller flera fluxConfigurations resurser som synkroniserar innehållet i konfigurationskällorna till klustret och stämma av klustret till ett önskat tillstånd.

Som standard microsoft.flux installerar tillägget Flux-styrenheterna (Källa, Kustomize, Helm och Meddelande) och Anpassade FluxConfig-resursdefinitioner (CRD), fluxconfig-agentoch fluxconfig-controller. Du kan också välja vilka av dessa styrenheter som du vill installera och kan även installera Flux image-automation och image-reflector styrenheter, vilket underlättar uppdatering och hämtning av Docker-avbildningar.

När du skapar en fluxConfigurations resurs används de värden som du anger för parametrarna, till exempel Git-mållagringsplatsen, för att skapa och konfigurera Kubernetes-objekt som aktiverar GitOps-funktionerna i klustret.

När du distribuerar och konfigurerar Flux v2-klustertillägg tillhandahåller det följande komponenter och funktioner:

  • source-controller. Övervakar källor till anpassade konfigurationer, till exempel Git-lagringsplatser, Helm-lagringsplatser och molnlagringstjänster som S3-bucketar, och synkroniserar och auktoriserar mot dessa källor.
  • kustomize-controller. Övervakar anpassade resurser som baseras på kustomiserings-CRD:er, som innehåller Kubernetes-manifest och råa YAML-filer. Tillämpar manifesten och YAML-filerna på klustret.
  • helm-controller. Övervakar anpassade resurser som baseras på diagram och lagras i Helm-lagringsplatser som visas av source-controller.
  • notification-controller. Hanterar inkommande händelser som kommer från en Git-lagringsplats och utgående händelser, som de som riktar sig mot Microsoft Teams eller Slack.
  • FluxConfig CRD. Representerar anpassade resurser som definierar Flux-specifika Kubernetes-objekt.
  • fluxconfig-agent. Identifierar nya och uppdaterade Flux-konfigurationsresurser. Initierar motsvarande konfigurationsuppdateringar i klustret. Meddelar statusändringar till Azure.
  • fluxconfig-controller. fluxconfigs Övervakar anpassade resurser.

Version 2 av Flux innehåller följande ytterligare funktioner:

Kategori Funktion
Infrastruktur- och arbetsbelastningshantering Distributionsberoendehantering
Integrering med Rollbaserad åtkomstkontroll för Kubernetes (RBAC)
Hälsoutvärderingar för kluster och deras arbetsbelastningar
Automatiserade uppdateringar av containeravbildningar till Git, inklusive avbildningsgenomsökning och korrigering
Samverkan med kluster-API-leverantörer
Säkerhet och styrning Aviseringar till externa system (via webhook-avsändare)
Principdriven validering, inklusive stöd för Open Policy Agent Gatekeeper
Genomsökning och korrigering av containeravbildningar
Aviseringar till externa system (via webhook-avsändare)
Integrering med andra GitOps-flöden Integrering med en rad Git-leverantörer, inklusive GitHub, GitLab och Bitbucket
Samverkan med arbetsflödesleverantörer, inklusive GitHub Actions

Mer information finns i GitOps Flux v2-konfigurationer med AKS och Azure Arc-aktiverade Kubernetes.

Prestandaeffektivitet

Prestandaeffektivitet handlar om att effektivt skala arbetsbelastningen baserat på användarnas behov. Mer information finns i Översikt över grundpelare för prestandaeffektivitet.

Klusterarbetsbelastningar drar nytta av den skalbarhet och flexibilitet som ingår i Kubernetes-plattformen. Flux v2 ger ytterligare flexibilitet, vilket minskar den tid som krävs för leverans av programvara från slutpunkt till slutpunkt.

  • Optimera konfigurationen av Kubernetes-klustret och infrastrukturen för dina specifika arbetsbelastningar. Vi rekommenderar att du samarbetar med programutvecklaren för att fastställa vilka inställningar som krävs.
  • Använd funktionen autoskalning i Kubernetes. Mer information finns i Autoskalning av kluster i AKS som aktiveras av Azure Arc.
  • Lägg till en cache för att optimera programmet.
  • Upprätta en baslinje för prestanda. Jämför din arkitektur och använd mått och övervakningsverktyg för att identifiera eventuella problem eller flaskhalsar som påverkar prestanda.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Övriga medarbetare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg