GitOps Flux v2-konfigurationer med AKS och Azure Arc-aktiverade Kubernetes

Azure tillhandahåller funktioner för konfigurationshantering med hjälp av GitOps i Azure Kubernetes Service (AKS) och Azure Arc-aktiverade Kubernetes-kluster. Du kan enkelt aktivera och använda GitOps i dessa kluster.

Med GitOps deklarerar du önskat tillstånd för dina Kubernetes-kluster i filer i Git-lagringsplatser. Git-lagringsplatserna kan innehålla följande filer:

Eftersom dessa filer lagras på en Git-lagringsplats är de versionshanterade och ändringar mellan versioner spåras enkelt. Kubernetes-kontrollanter körs i klustren och synkroniserar kontinuerligt klustertillståndet med önskat tillstånd som deklarerats i Git-lagringsplatsen. De här operatorerna hämtar filerna från Git-lagringsplatserna och tillämpar önskat tillstånd på klustren. Operatorerna säkerställer också kontinuerligt att klustret förblir i önskat tillstånd.

GitOps på Azure Arc-aktiverade Kubernetes eller Azure Kubernetes Service använder Flux, en populär verktygsuppsättning med öppen källkod. Flux har stöd för vanliga filkällor (Git- och Helm-lagringsplatser, bucketar, Azure Blob Storage) och malltyper (YAML, Helm och Kustomize). Flux har även stöd för hantering av flera klientorganisationer och distributionsberoenden, bland andra funktioner.

Flux-klustertillägg

Diagram som visar installationen av Flux-tillägget för Azure Arc-aktiverat Kubernetes-kluster.

Diagram som visar installationen av Flux-tillägget för Azure Kubernetes Service kluster.

GitOps är aktiverat i ett Azure Arc-aktiverat Kubernetes- eller AKS-kluster som en Microsoft.KubernetesConfiguration/extensions/microsoft.fluxklustertilläggsresurs . Tillägget microsoft.flux måste installeras i klustret innan en eller flera fluxConfigurations kan skapas. Tillägget installeras automatiskt när du skapar det första Microsoft.KubernetesConfiguration/fluxConfigurations i ett kluster, eller så kan du installera det manuellt med hjälp av portalen, Azure CLI (az k8s-extension create --extensionType=microsoft.flux), ARM-mall eller REST API.

Versionsstöd

Den senaste versionen av Flux v2-tillägget och de två tidigare versionerna (N-2) stöds. Vi rekommenderar vanligtvis att du använder den senaste versionen av tillägget.

Kontrollanter

Tillägget microsoft.flux installerar som standard Flux-kontrollanterna (Källa, Kustomize, Helm, Meddelande) och FluxConfig CRD, fluxconfig-agent och fluxconfig-controller. Du kan styra vilka av dessa styrenheter som är installerade och du kan även installera Flux-avbildningsautomatiserings- och avbildningsreflektorkontrollanterna, som tillhandahåller funktioner för att uppdatera och hämta Docker-avbildningar.

  • Flux-källkontrollant: Bevakar source.toolkit.fluxcd.io anpassade resurser. Hanterar synkroniseringen mellan Git-lagringsplatserna, Helm-lagringsplatserna, bucketarna och Azure Blob Storage. Hanterar auktorisering med källan för privata Git-, Helm-lagringsplatser och Azure Blob Storage-konton. Visar de senaste ändringarna i källan via en tar-arkivfil.

  • Flux Kustomize-kontrollant: Bevakar de kustomization.toolkit.fluxcd.io anpassade resurserna. Använder Kustomize- eller YAML-råfiler från källan till klustret.

  • Flux Helm-kontrollant: Bevakar de helm.toolkit.fluxcd.io anpassade resurserna. Hämtar det associerade diagrammet från Helm-lagringsplatsens källa som visas av källkontrollanten. Skapar den HelmChart anpassade resursen HelmRelease och tillämpar värdena med angiven version, namn och kunddefinierad på klustret.

  • Flux Notification Controller: Bevakar de notification.toolkit.fluxcd.io anpassade resurserna. Tar emot meddelanden från alla Flux-styrenheter. Skickar meddelanden till användardefinierade webhook-slutpunkter.

  • Anpassade resursdefinitioner för flux:

    • kustomizations.kustomize.toolkit.fluxcd.io
    • imagepolicies.image.toolkit.fluxcd.io
    • imagerepositories.image.toolkit.fluxcd.io
    • imageupdateautomations.image.toolkit.fluxcd.io
    • alerts.notification.toolkit.fluxcd.io
    • providers.notification.toolkit.fluxcd.io
    • receivers.notification.toolkit.fluxcd.io
    • buckets.source.toolkit.fluxcd.io
    • gitrepositories.source.toolkit.fluxcd.io
    • helmcharts.source.toolkit.fluxcd.io
    • helmrepositories.source.toolkit.fluxcd.io
    • helmreleases.helm.toolkit.fluxcd.io
    • fluxconfigs.clusterconfig.azure.com
  • FluxConfig CRD: Anpassad resursdefinition för fluxconfigs.clusterconfig.azure.com anpassade resurser som definierar FluxConfig Kubernetes-objekt.

  • fluxconfig-agent: Ansvarar för att övervaka Azure för nya eller uppdaterade fluxConfigurations resurser och för att starta den associerade Flux-konfigurationen i klustret. Ansvarar också för att skicka fluxstatusändringar i klustret tillbaka till Azure för varje fluxConfigurations resurs.

  • fluxconfig-controller: Bevakar de fluxconfigs.clusterconfig.azure.com anpassade resurserna och svarar på ändringar med ny eller uppdaterad konfiguration av GitOps-maskiner i klustret.

Anteckning

Tillägget microsoft.flux installeras i flux-system namnområdet och har klusteromfattande omfång. Alternativet för att installera det här tillägget i namnområdesomfånget är inte tillgängligt och försök att installera i namnområdesomfånget misslyckas med 400-fel.

Fluxkonfigurationer

Diagram som visar installationen av en Flux-konfiguration i ett Azure Arc-aktiverat Kubernetes- eller Azure Kubernetes Service-kluster.

Du skapar Flux-konfigurationsresurser (Microsoft.KubernetesConfiguration/fluxConfigurations) för att aktivera GitOps-hantering av klustret från dina Git-lagringsplatser, bucketkällor eller Azure Blob Storage. När du skapar en fluxConfigurations resurs används de värden som du anger för parametrarna, till exempel Git-målplatsen, för att skapa och konfigurera Kubernetes-objekt som aktiverar GitOps-processen i klustret. För att säkerställa datasäkerhet fluxConfigurations lagras resursdata krypterade i vila i en Azure Cosmos DB-databas av klusterkonfigurationstjänsten.

Agenterna fluxconfig-agent och fluxconfig-controller som installeras med microsoft.flux tillägget hanterar GitOps-konfigurationsprocessen.

fluxconfig-agent ansvarar för:

  • Avsöker Kubernetes Configurations dataplanstjänst efter nya eller uppdaterade fluxConfigurations resurser.
  • Skapar eller uppdaterar FluxConfig anpassade resurser i klustret med konfigurationsinformationen.
  • Bevakar FluxConfig anpassade resurser och skickar tillbaka statusändringar till associerade Azure fluxConfiguration-resurser.

fluxconfig-controller ansvarar för:

  • Bevakar statusuppdateringar för anpassade Flux-resurser som skapats av den hanterade fluxConfigurations.
  • Skapar ett privat/offentligt nyckelpar som finns under livslängden fluxConfigurationsför . Den här nyckeln används för autentisering om URL:en är SSH-baserad och om användaren inte anger sin egen privata nyckel när konfigurationen skapas.
  • Skapar en anpassad autentiseringshemlighet baserat på privat nyckel/http basic-auth/known-hosts/no-auth data.
  • Konfigurerar RBAC (tjänstkontot har etablerats, rollbindningen har skapats/tilldelats, rollen har skapats/tilldelats).
  • Skapar GitRepository eller Bucket anpassade resurser och Kustomization anpassade resurser från informationen i den anpassade resursen FluxConfig .

Varje fluxConfigurations resurs i Azure associeras i ett Kubernetes-kluster med en Flux GitRepository eller Bucket anpassad resurs och en eller flera Kustomization anpassade resurser. När du skapar en fluxConfigurations resurs anger du bland annat URL:en till källan (Git-lagringsplats, Bucket eller Azure Blob Storage) och synkroniseringsmålet i källan för varje Kustomization. Du kan konfigurera beroenden mellan Kustomization anpassade resurser för att styra distributionens sekvensering. Du kan också skapa flera namnområdesbegränsade fluxConfigurations resurser i samma kluster för olika program och appteam.

Anteckning

Övervakarna fluxconfig-agent för nya eller uppdaterade fluxConfiguration resurser i Azure. Agenten kräver anslutning till Azure för att det önskade tillståndet fluxConfiguration för ska tillämpas på klustret. Om agenten inte kan ansluta till Azure uppstår en fördröjning i att göra ändringarna i klustret tills agenten kan ansluta. Om klustret är frånkopplat från Azure i mer än 48 timmar kommer begäran till klustret att överskrida tidsgränsen och ändringarna måste tillämpas på nytt i Azure.

Känsliga kundindata som privat nyckel och token/lösenord lagras i mindre än 48 timmar i Kubernetes-konfigurationstjänsten. Om du uppdaterar något av dessa värden i Azure kontrollerar du att dina kluster ansluter till Azure inom 48 timmar.

Om du har lagt till stöd för privat länk till ett Azure Arc-aktiverat Kubernetes-klustermicrosoft.flux fungerar tillägget direkt med kommunikation tillbaka till Azure. För anslutningar till din Git-lagringsplats, Helm-lagringsplats eller andra slutpunkter som behövs för att distribuera Kubernetes-manifesten måste du etablera dessa slutpunkter bakom brandväggen eller visa dem i brandväggen så att Flux-källkontrollanten kan nå dem.

Dataplacering

Azure GitOps-tjänsten (Azure Kubernetes Configuration Management) lagrar/bearbetar kunddata. Som standard replikeras kunddata till den länkade regionen. För regionerna Singapore, Asien, östra och Brasilien, södra lagras och bearbetas alla kunddata i regionen.

Tillämpa Flux-konfigurationer i stor skala

Eftersom Azure Resource Manager hanterar dina konfigurationer kan du automatisera skapandet av samma konfiguration för alla Azure Kubernetes Service- och Azure Arc-aktiverade Kubernetes-resurser med hjälp av Azure Policy, inom omfånget för en prenumeration eller en resursgrupp. Den här skalningsåtgärden säkerställer att specifika konfigurationer tillämpas konsekvent i hela grupper av kluster.

Lär dig hur du använder de inbyggda principerna för Flux v2.

Nästa steg

Gå vidare till nästa självstudie och lär dig hur du aktiverar GitOps i dina AKS- eller Azure Arc-aktiverade Kubernetes-kluster: