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.
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.io
aangepaste 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.io
aangepaste resources. Past Kustomize- of ruwe YAML-bestanden van de bron toe op de cluster.Flux Helm controller: houdt toezicht op de
helm.toolkit.fluxcd.io
aangepaste resources. Haalt de bijbehorende grafiek op uit de Helm-opslagplaatsbron die door de broncontroller wordt weergegeven. Hiermee maakt u deHelmChart
aangepaste resource en past u deHelmRelease
met de opgegeven versie, naam en door de klant gedefinieerde waarden toe op het cluster.Flux Notification Controller: houdt toezicht op de
notification.toolkit.fluxcd.io
aangepaste resources. Ontvangt meldingen van alle Flux-controllers. Pusht meldingen naar door de gebruiker gedefinieerde webhook-eindpunten.Aangepaste Flux-resourceomschrijvingen
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: Een Custom Resource Definition voor
fluxconfigs.clusterconfig.azure.com
aangepaste resources dieFluxConfig
Kubernetes-objecten definiëren.fluxconfig-agent
: Verantwoordelijk voor het bekijken van Azure voor nieuwe of bijgewerktefluxConfigurations
resources 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 elkefluxConfigurations
resource.fluxconfig-controller
: Controleert defluxconfigs.clusterconfig.azure.com
aangepaste 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
fluxConfigurations
resources. - Hiermee maakt of werkt
FluxConfig
u aangepaste resources in het cluster bij met de configuratiegegevens. - Controleert
FluxConfig
aangepaste 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
GitRepository
ofBucket
aangepaste resources enKustomization
aangepaste resources op basis van de informatie in deFluxConfig
aangepaste 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 Kustomization
resource. 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
sourceRef
betrekking 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/v2beta1
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/v2beta1
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.