Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure biedt een mogelijkheid voor geautomatiseerde implementaties van toepassingen door middel van GitOps die werkt met Azure Kubernetes Service (AKS) en Kubernetes-clusters met Azure Arc. De belangrijkste voordelen die worden geboden door GitOps te implementeren voor het implementeren van toepassingen in Kubernetes-clusters zijn onder andere:
- Continu inzicht in de status van toepassingen die worden uitgevoerd op clusters.
 - Scheiding van zorgen tussen teams voor toepassingsontwikkeling en infrastructuurteams. Toepassingsteams hoeven geen ervaring te hebben met Kubernetes-implementaties. Platformengineeringsteams maken doorgaans een zelfbedieningsmodel voor toepassingsteams, waardoor ze implementaties met een hoger vertrouwen kunnen uitvoeren.
 - Mogelijkheid om clusters opnieuw te maken met dezelfde gewenste status in het geval van een crash of om uit te schalen.
 - Mogelijkheid om toepassingen op schaal te implementeren via Azure Policy.
 
Met GitOps declareert u de gewenste status van uw Kubernetes-clusters in bestanden in Git-opslagplaatsen. De Git-opslagplaatsen kunnen de volgende bestanden bevatten:
- Met YAML opgemaakte manifesten waarin Kubernetes-resources worden beschreven (zoals naamruimten, geheimen, implementaties en andere)
 - Helm-grafieken voor het implementeren van toepassingen
 - Kustomize-bestanden om omgevingsspecifieke wijzigingen te beschrijven
 
Omdat deze bestanden worden opgeslagen in een Git-opslagplaats, zijn ze voorzien van versiebeheer en kunnen wijzigingen tussen versies eenvoudig worden bijgehouden. Kubernetes-controllers worden uitgevoerd in de clusters en stemmen de clusterstatus voortdurend af met de gewenste status die is gedeclareerd in de Git-opslagplaats. Deze operators halen de bestanden op uit de Git-opslagplaatsen en passen de gewenste status toe op de clusters. De operators zorgen er ook continu voor dat het cluster de gewenste status heeft.
GitOps in Kubernetes met Azure Arc of Azure Kubernetes Service maakt gebruik van Flux, een populaire opensource-hulpprogrammaset. Flux biedt ondersteuning voor algemene bestandsbronnen (Git- en Helm-opslagplaatsen, Buckets, Azure Blob Storage) en sjabloontypen (YAML, Helm en Kustomize). Flux biedt ook ondersteuning voor multitenancy - en implementatieafhankelijkheidsbeheer, onder andere functies.
Flux wordt rechtstreeks op het cluster geïmplementeerd en het besturingsvlak van elk cluster wordt logisch gescheiden. Hierdoor kan het goed worden geschaald naar honderden en duizenden clusters. Flux maakt pure implementaties van gitOps-toepassingen op basis van pull mogelijk. Er is geen toegang tot clusters nodig voor de bronopslagplaats of een ander cluster.
Belangrijk
Er worden geen kosten in rekening gebracht voor Flux-implementaties in Azure Kubernetes Service (AKS), AKS Edge Essentials of AKS die zijn ingeschakeld door Azure Arc op Azure Local. Voor andere Kubernetes-distributies die zijn verbonden via Kubernetes met Azure Arc, worden er geen kosten in rekening gebracht voor Flux-implementaties op de eerste zes vCPU's in uw abonnement. Er worden vervolgens kosten in rekening gebracht op basis van het aantal vCPU's per cluster. Zie Prijzen voor Azure Arc voor meer informatie.
Flux-clusterextensie
GitOps is ingeschakeld in een Kubernetes- of AKS-cluster met Azure Arc als clusterextensieresource Microsoft.KubernetesConfiguration/extensions/microsoft.flux.  De microsoft.flux extensie moet worden geïnstalleerd in het cluster voordat een of meer fluxConfigurations kunnen worden gemaakt. De extensie wordt automatisch geïnstalleerd wanneer u de eerste Microsoft.KubernetesConfiguration/fluxConfigurations in een cluster maakt of u kunt deze handmatig installeren met behulp van de portal, de Azure CLI (az k8s-extension create --extensionType=microsoft.flux), de ARM-sjabloon of REST API.
Besturingssystemen
              microsoft.flux De extensie installeert standaard de Flux-controllers (Bron, Kustomize, Helm, Notification), de FluxConfig Custom Resource Definition (CRD), fluxconfig-agent, en fluxconfig-controller. Optioneel kunt u ook de Flux image-automation en image-reflector controllers installeren, die functionaliteit bieden voor het bijwerken en ophalen van Docker-afbeeldingen.
Flux-broncontroller: houdt toezicht op de
source.toolkit.fluxcd.ioaangepaste resources. Hiermee wordt synchronisatie tussen de Git-opslagplaatsen, Helm-opslagplaatsen, Buckets en Azure Blob Storage afgehandeld. Regelt autorisatie met de bron voor private Git-, Helm-repositories en accounts voor Azure-blobopslag. Hiermee worden de meest recente wijzigingen in de bron via een tar-archiefbestand weergeven.Flux Kustomize-controller: houdt toezicht op de
kustomization.toolkit.fluxcd.ioaangepaste resources. Past Kustomize- of ruwe YAML-bestanden van de bron toe op de cluster.Flux Helm controller: houdt toezicht op de
helm.toolkit.fluxcd.ioaangepaste resources. Haalt de bijbehorende grafiek op uit de Helm-opslagplaatsbron die door de broncontroller wordt weergegeven. Hiermee maakt u deHelmChartaangepaste resource en past u deHelmReleasemet de opgegeven versie, naam en door de klant gedefinieerde waarden toe op het cluster.Flux Notification Controller: houdt toezicht op de
notification.toolkit.fluxcd.ioaangepaste resources. Ontvangt meldingen van alle Flux-controllers. Pusht meldingen naar door de gebruiker gedefinieerde webhook-eindpunten.Aangepaste Flux-resourceomschrijvingen
kustomizations.kustomize.toolkit.fluxcd.ioimagepolicies.image.toolkit.fluxcd.ioimagerepositories.image.toolkit.fluxcd.ioimageupdateautomations.image.toolkit.fluxcd.ioalerts.notification.toolkit.fluxcd.ioproviders.notification.toolkit.fluxcd.ioreceivers.notification.toolkit.fluxcd.iobuckets.source.toolkit.fluxcd.iogitrepositories.source.toolkit.fluxcd.iohelmcharts.source.toolkit.fluxcd.iohelmrepositories.source.toolkit.fluxcd.iohelmreleases.helm.toolkit.fluxcd.iofluxconfigs.clusterconfig.azure.com
FluxConfig CRD: Een Custom Resource Definition voor
fluxconfigs.clusterconfig.azure.comaangepaste resources dieFluxConfigKubernetes-objecten definiëren.fluxconfig-agent: Verantwoordelijk voor het bekijken van Azure voor nieuwe of bijgewerktefluxConfigurationsresources en voor het starten van de bijbehorende Flux-configuratie in het cluster. Ook verantwoordelijk voor het doorgeven van Flux-statuswijzigingen in het cluster aan Azure voor elkefluxConfigurationsresource.fluxconfig-controller: Controleert defluxconfigs.clusterconfig.azure.comaangepaste resources en reageert op wijzigingen met een nieuwe of bijgewerkte configuratie van GitOps-machines in het cluster.
Notitie
De microsoft.flux extensie wordt geïnstalleerd in de flux-system naamruimte en heeft een clusterbreed bereik. U kunt deze extensie niet installeren op het naamruimte-niveau.
Flux-configuraties
Als u architectuurdiagrammen in hoge resolutie wilt downloaden, gaat u naar Jumpstart Gems.
U maakt Flux-configuratieresources (Microsoft.KubernetesConfiguration/fluxConfigurations) om GitOps-beheer van het cluster mogelijk te maken vanuit uw Git-opslagplaatsen, Bucket-bronnen of Azure Blob-opslag. Wanneer u een fluxConfigurations resource maakt, worden de waarden die u opgeeft voor de parameters, zoals de Git-doelopslagplaats, gebruikt om de Kubernetes-objecten te maken en te configureren die het GitOps-proces in dat cluster inschakelen. Om de beveiliging van gegevens te garanderen, worden de gegevens van de bron door de clusterconfiguratieservice versleuteld opgeslagen in rust in een Azure Cosmos DB-database.
De fluxconfig-agent- en fluxconfig-controller-agenten, geïnstalleerd met de microsoft.flux-extensie, beheren het GitOps-configuratieproces.
              fluxconfig-agent is verantwoordelijk voor de volgende taken:
- Peilt de Kubernetes Configuration-gegevensvlakservice voor nieuwe of bijgewerkte 
fluxConfigurationsresources. - Hiermee maakt of werkt 
FluxConfigu aangepaste resources in het cluster bij met de configuratiegegevens. - Controleert 
FluxConfigaangepaste resources en pusht statuswijzigingen terug naar de bijbehorende Azure FluxConfiguration-resources. 
              fluxconfig-controller is verantwoordelijk voor de volgende taken:
- Houdt statusupdates bij van de aangepaste Flux-resources die zijn gemaakt door de beheerde 
fluxConfigurations. - Hiermee maakt u een persoonlijk/openbaar sleutelpaar dat bestaat voor de levensduur van de 
fluxConfigurations. Deze sleutel wordt gebruikt voor verificatie als de URL is gebaseerd op SSH en als de gebruiker geen eigen persoonlijke sleutel opgeeft tijdens het maken van de configuratie. - Maakt aangepast authenticatiegeheim op basis van door de gebruiker verstrekte privésleutel/http basic-auth/known-hosts/no-auth-informatie.
 - Hiermee stelt u op rollen gebaseerd toegangsbeheer in (serviceaccount ingericht, rolbinding gemaakt/toegewezen, rol gemaakt/toegewezen).
 - Maakt 
GitRepositoryofBucketaangepaste resources enKustomizationaangepaste resources op basis van de informatie in deFluxConfigaangepaste resource. 
Elke fluxConfigurations resource in Azure is gekoppeld aan één Flux GitRepository - of Bucket aangepaste resource en een of meer Kustomization aangepaste resources in een Kubernetes-cluster. Wanneer u een fluxConfigurations resource maakt, geeft u de URL op naar de bron (Git-opslagplaats, Bucket of Azure Blob Storage) en het synchronisatiedoel in de bron voor elke Kustomizationresource. U kunt afhankelijkheden tussen Kustomization aangepaste resources configureren om de implementatievolgorde te beheren. U kunt ook meerdere resources met naamruimtebereik fluxConfigurations maken op hetzelfde cluster voor verschillende toepassingen en app-teams.
Notitie
De fluxconfig-agent controleert op nieuwe of bijgewerkte fluxConfiguration resources binnen Azure. De agent vereist connectiviteit met Azure voor de gewenste status van de fluxConfiguration die op het cluster moet worden toegepast. Als de agent geen verbinding kan maken met Azure, wachten wijzigingen in het cluster totdat de agent verbinding kan maken. Als de verbinding van het cluster langer dan 48 uur met Azure is verbroken, treedt er een time-out op voor de aanvraag voor het cluster en moeten de wijzigingen opnieuw worden toegepast in Azure.
Gevoelige klantinvoer, zoals persoonlijke sleutel en token/wachtwoord, worden minder dan 48 uur opgeslagen in de Kubernetes Configuration-service. Als u een van deze waarden in Azure bijwerkt, moet u ervoor zorgen dat uw clusters binnen 48 uur verbinding maken met Azure.
U kunt de flux-configuratiestatus en -naleving bewaken in Azure Portal of dashboards gebruiken om de status, naleving, resourceverbruik en afstemmingsactiviteit te controleren. Zie De status en activiteit van GitOps (Flux v2) controleren voor meer informatie.
Versieondersteuning
De meest recente versie van de Flux v2-extensie (microsoft.flux) en de twee vorige versies (N-2) worden ondersteund. Over het algemeen wordt u aangeraden de meest recente versie van de extensie te gebruiken. 
              microsoft.flux Vanaf versie 1.7.0 worden op ARM64 gebaseerde clusters ondersteund.
GitOps met private link
Als u ondersteuning voor private link hebt toegevoegd aan een Kubernetes-cluster met Azure Arc, werkt de microsoft.flux extensie standaard met communicatie naar Azure. Voor verbindingen met uw Git-opslagplaats, Helm-opslagplaats of andere eindpunten die nodig zijn om uw Kubernetes-manifesten te implementeren, moet u deze eindpunten inrichten achter uw firewall of deze weergeven op uw firewall, zodat de Flux-broncontroller ze kan bereiken.
Gegevensopslaglocatie
Met de Azure GitOps-service (Azure Kubernetes Configuration Management) worden klantgegevens opgeslagen/verwerkt. Klantgegevens worden standaard gerepliceerd naar de gekoppelde regio. Voor de regio's Singapore, Azië - oost en Brazilië - zuid worden alle klantgegevens opgeslagen en verwerkt in de regio.
Flux-configuraties op schaal toepassen
Omdat Azure Resource Manager uw configuraties beheert, kunt u het maken van dezelfde configuratie automatiseren voor alle Azure Kubernetes Service- en Kubernetes-resources met Azure Arc met behulp van Azure Policy, binnen het bereik van een abonnement of een resourcegroep. Deze afdwinging op schaal zorgt ervoor dat specifieke configuraties consistent worden toegepast in hele groepen clusters.
Zie Toepassingen consistent op schaal implementeren met flux v2-configuraties en Azure Policy voor meer informatie.
Parameterwaarden
Raadpleeg de az k8s-configuration documentatie voor alle parameters die worden ondersteund door Flux v2 in Azure. De Azure-implementatie biedt momenteel geen ondersteuning voor elke parameter die Door Flux wordt ondersteund.
Zie ondersteunde parameters voor GitOps (Flux v2) voor informatie over beschikbare parameters en hoe u deze kunt gebruiken.
Multitenantie
Flux v2 ondersteunt multitenancy vanaf versie 0.26. Deze mogelijkheid is geïntegreerd in Flux v2 in Azure.
Notitie
Voor de functie multitenancy moet u weten of uw manifesten cross-namespace sourceRef bevatten voor HelmRelease, Kustomization, ImagePolicy of andere objecten, of als u een Kubernetes-versie kleiner dan 1.20.6 gebruikt. Voorbereiden:
- Voer een upgrade uit naar Kubernetes versie 1.20.6 of hoger.
 - Zorg er in uw Kubernetes-manifesten voor dat alles 
sourceRefbetrekking heeft op objecten binnen dezelfde naamruimte als de GitOps-configuratie.- Als u tijd nodig hebt om uw manifesten bij te werken, kunt u zich afmelden voor multitenancy. U moet echter nog steeds uw Kubernetes-versie upgraden.
 
 
Manifesten voor multitenancy bijwerken
Stel dat u een fluxConfiguration implementeert in een van onze Kubernetes-clusters in de cluster-config naamruimte met cluster-scope. U configureert de bron voor het synchroniseren van de https://github.com/fluxcd/flux2-kustomize-helm-example opslagplaats. Dit is dezelfde Git-voorbeeldopslagplaats die wordt gebruikt in de zelfstudie Toepassingen implementeren met GitOps met Flux v2.
Nadat Flux de opslagplaats heeft gesynchroniseerd, worden de resources geïmplementeerd die worden beschreven in de manifesten (YAML-bestanden). Twee van de manifesten beschrijven HelmRelease en HelmRepository objecten.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: nginx
  namespace: nginx
spec:
  releaseName: nginx-ingress-controller
  chart:
    spec:
      chart: nginx-ingress-controller
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: flux-system
      version: "5.6.14"
  interval: 1h0m0s
  install:
    remediation:
      retries: 3
  # Default values
  # https://github.com/bitnami/charts/blob/master/bitnami/nginx-ingress-controller/values.yaml
  values:
    service:
      type: NodePort
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
  name: bitnami
  namespace: flux-system
spec:
  interval: 30m
  url: https://charts.bitnami.com/bitnami
De Flux-extensie implementeert de fluxConfigurations standaardinstelling door het flux-applier serviceaccount te imiteren dat alleen in de cluster-config naamruimte is geïmplementeerd. Als multitenancy is ingeschakeld, wordt het HelmRelease gebruik van de bovenstaande manifesten geblokkeerd. Dit komt doordat de HelmRelease naamruimte zich in de nginx naamruimte bevindt, maar verwijst naar een HelmRepository in de flux-system naamruimte. Ook kan de Flux helm-controller de HelmRelease, omdat er geen flux-applier serviceaccount in de nginx naamruimte is, niet toepassen.
Als u met meerdere tenants wilt werken, is de juiste benadering om alle Flux-objecten in dezelfde naamruimte te implementeren als de fluxConfigurations. Deze aanpak voorkomt het verwijzingsprobleem met meerdere naamruimten en stelt de Flux-controllers in staat om de machtigingen op te halen om de objecten toe te passen. Voor een GitOps-configuratie die in de cluster-config naamruimte is gemaakt, worden deze voorbeeldmanifesten dus als volgt gewijzigd:
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: nginx
  namespace: cluster-config 
spec:
  releaseName: nginx-ingress-controller
  targetNamespace: nginx
  chart:
    spec:
      chart: nginx-ingress-controller
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: cluster-config
      version: "5.6.14"
  interval: 1h0m0s
  install:
    remediation:
      retries: 3
  # Default values
  # https://github.com/bitnami/charts/blob/master/bitnami/nginx-ingress-controller/values.yaml
  values:
    service:
      type: NodePort
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
  name: bitnami
  namespace: cluster-config
spec:
  interval: 30m
  url: https://charts.bitnami.com/bitnami
Afmelden van multi-tenancy
Wanneer de microsoft.flux extensie is geïnstalleerd, is multitenancy standaard ingeschakeld. Als u multitenancy wilt uitschakelen, kunt u dit doen door de extensie microsoft.flux in uw clusters aan te maken of bij te werken met --configuration-settings multiTenancy.enforce=false zoals in deze voorbeeldopdrachten wordt getoond:
az k8s-extension create --extension-type microsoft.flux --configuration-settings multiTenancy.enforce=false -c CLUSTER_NAME -g RESOURCE_GROUP -n flux -t <managedClusters or connectedClusters>
az k8s-extension update --configuration-settings multiTenancy.enforce=false -c CLUSTER_NAME -g RESOURCE_GROUP -n flux -t <managedClusters or connectedClusters>
Volgende stappen
- Gebruik onze zelfstudie voor meer informatie over het inschakelen van GitOps op uw AKS- of Kubernetes-clusters met Azure Arc.
 - Meer informatie over CI/CD-werkstroom met behulp van GitOps.