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.
In deze zelfstudie wordt beschreven hoe u GitOps gebruikt in een Kubernetes-cluster. GitOps met Flux v2 is ingeschakeld als een clusterextensie in Kubernetes-clusters die zijn ingeschakeld met Azure Arc, of in Azure Kubernetes Service (AKS)-clusters. Nadat de microsoft.flux
clusterextensie is geïnstalleerd, kunt u een of meer fluxConfigurations
resources maken die uw Git-opslagplaatsbronnen synchroniseren met het cluster en het cluster afstemmen op de gewenste status. Met GitOps kunt u uw Git-opslagplaats gebruiken als de bron van waarheid voor clusterconfiguratie en toepassingsimplementatie.
In deze zelfstudie gebruiken we een voorbeeld van een GitOps-configuratie met twee kustomisaties, zodat u kunt zien hoe een kustomisatie afhankelijk kan zijn van een andere. U kunt indien nodig meer kustomisaties en afhankelijkheden toevoegen, afhankelijk van uw scenario.
Neem even de tijd om te leren hoe GitOps met Flux conceptueel werkt voordat u verdergaat.
Aanbeveling
Hoewel de bron in deze zelfstudie een Git-opslagplaats is, biedt Flux ook ondersteuning voor andere algemene bestandsbronnen, zoals Helm-opslagplaatsen, Buckets en Azure Blob Storage.
U kunt ook Flux-configuraties maken met bicep-, ARM-sjablonen of Terraform AzAPI-provider. Zie Microsoft.KubernetesConfiguration fluxConfigurations voor meer informatie.
U kunt ook proberen met de nieuwe Microsoft GitOps ArgoCD-extensie. Argo CD is een populair opensource GitOps-hulpprogramma dat een andere set functies en mogelijkheden biedt in vergelijking met Flux v2.
Vereiste voorwaarden
Voor het implementeren van toepassingen met GitOps met Flux v2 hebt u het volgende nodig:
Kubernetes-clusters beheerd met Azure Arc
Een met Azure Arc verbonden Kubernetes-cluster dat actief is. Op Arm64 gebaseerde clusters worden ondersteund vanaf
microsoft.flux
versie 1.7.0.Meer informatie over het verbinden van een Kubernetes-cluster met Azure Arc. Als u verbinding wilt maken via een uitgaande proxy, moet u ervoor zorgen dat u de Arc-agents installeert met proxy-instellingen.
Lees- en schrijfmachtigingen voor het
Microsoft.Kubernetes/connectedClusters
resourcetype.
Azure Kubernetes Service-clusters
Een op MSI gebaseerd AKS-cluster dat operationeel is.
Belangrijk
Zorg ervoor dat het AKS-cluster is gemaakt met MSI (niet SPN), omdat de
microsoft.flux
extensie niet werkt met AKS-clusters op basis van SPN. Voor nieuwe AKS-clusters die zijn gemaakt metaz aks create
, is het cluster standaard op MSI gebaseerd. Als u clusters op basis van SPN wilt converteren naar MSI, voert u het volgende uitaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
. Zie Een beheerde identiteit gebruiken in AKS voor meer informatie.Lees- en schrijfmachtigingen voor het
Microsoft.ContainerService/managedClusters
resourcetype.
Gebruikelijk voor beide clustertypen
Lees- en schrijfmachtigingen voor deze resourcetypen:
Microsoft.KubernetesConfiguration/extensions
Microsoft.KubernetesConfiguration/fluxConfigurations
Azure CLI versie 2.15 of hoger. Installeer de Azure CLI of gebruik de volgende opdrachten om bij te werken naar de nieuwste versie:
az version az upgrade
De Kubernetes-opdrachtregelclient, kubectl.
kubectl
is al geïnstalleerd als u Azure Cloud Shell gebruikt.Lokaal installeren
kubectl
met behulp van deaz aks install-cli
opdracht:az aks install-cli
Registratie van de volgende Azure-resourceproviders:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfiguration
Registratie is een asynchroon proces en moet binnen 10 minuten worden voltooid. Gebruik de volgende opdracht om het registratieproces te bewaken:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Ondersteuning voor versies en regio's
GitOps wordt momenteel ondersteund in alle regio's die Kubernetes met Azure Arc ondersteunen. GitOps wordt momenteel ondersteund in een subset van de regio's die AKS ondersteunt. De GitOps-service voegt nieuwe ondersteunde regio's toe aan een regelmatige frequentie.
De meest recente versie van de Flux v2-extensie en de twee vorige versies (N-2) worden ondersteund. Over het algemeen wordt u aangeraden de meest recente versie van de extensie te gebruiken.
Netwerkvereisten
De GitOps-agents vereisen een uitgaande TCP-verbinding naar de repository op poort 22 (SSH) of poort 443 (HTTPS) om te functioneren. De agents hebben ook toegang nodig tot de volgende uitgaande URL's:
Eindpunt (DNS) | Beschrijving |
---|---|
https://management.azure.com |
Vereist dat de agent communiceert met de Kubernetes Configuration-service. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Eindpunt van het datavlak voor de agent om de status door te geven en configuratiegegevens op te halen. Afhankelijk van <region> de eerder genoemde ondersteunde regio's. |
https://login.microsoftonline.com |
Vereist om de Azure Resource Manager-tokens op te halen en bij te werken. |
https://mcr.microsoft.com |
Vereist voor het ophalen van containerafbeeldingen voor Flux-controllers. |
CLI-extensies inschakelen
Installeer de nieuwste k8s-configuration
en k8s-extension
CLI-extensiepakketten:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Ga als volgt te werk om deze pakketten bij te werken naar de nieuwste versies:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Gebruik de volgende opdracht om een lijst weer te geven met alle geïnstalleerde Azure CLI-extensies en de bijbehorende versies:
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.2.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 1.5.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.1.0
Aanbeveling
Raadpleeg de sectie GitOps (Flux v2) van Problemen met extensies voor Kubernetes-clusters met Azure Arc oplossen voor hulp bij het oplossen van eventuele fouten.
Een Flux-configuratie toepassen
Gebruik de k8s-configuration
Azure CLI-extensie of Azure Portal om GitOps in te schakelen in een Kubernetes-cluster met AKS of Arc. Gebruik voor een demonstratie de openbare opslagplaats gitops-flux2-kustomize-helm-mt .
Belangrijk
De demonstratieopslagplaats is ontworpen om uw gebruik van deze zelfstudie te vereenvoudigen en de belangrijkste principes te illustreren. Als u up-to-date wilt blijven, kan de opslagplaats af en toe belangrijke wijzigingen van versie-upgrades krijgen. Deze wijzigingen hebben geen invloed op nieuw gebruik van deze handleiding, maar alleen op eerdere toepassingen. Zie de vrijwaring bij ingrijpende wijzigingen voor meer informatie.
In het volgende voorbeeld wordt de az k8s-configuration flux create
opdracht gebruikt om een Flux-configuratie toe te passen op een cluster met behulp van de volgende waarden en instellingen:
- De resourcegroep die het cluster bevat, is
flux-demo-rg
. - De naam van het Azure Arc-cluster is
flux-demo-arc
. - Het clustertype is Azure Arc (
-t connectedClusters
), maar dit voorbeeld werkt ook met AKS (-t managedClusters
). - De naam van de Flux-configuratie is
cluster-config
. - De naamruimte voor configuratie-installatie is
cluster-config
. - De URL voor de openbare Git-opslagplaats is
https://github.com/Azure/gitops-flux2-kustomize-helm-mt
. - De Git-opslagplaatstak is
main
. - Het bereik van de configuratie is
cluster
. Dit bereik geeft de operators machtigingen om wijzigingen aan te brengen in het hele cluster. Als u met deze zelfstudienamespace
wilt gebruiken, raadpleegt u de benodigde wijzigingen. - Er worden twee kustomisaties opgegeven met namen
infra
enapps
. Elk is gekoppeld aan een pad in de opslagplaats. - De
apps
kustomisatie is afhankelijk van deinfra
kustomisatie. (Deinfra
kustomisatie moet worden voltooid voordat deapps
kustomisatie wordt uitgevoerd.) - Zet
prune=true
op beide customisaties. Deze instelling zorgt ervoor dat de objecten die Flux in het cluster hebben geïmplementeerd, worden opgeschoond als ze uit de opslagplaats worden verwijderd of dat de Flux-configuratie of kustomisaties worden verwijderd.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]
De microsoft.flux
extensie is geïnstalleerd op het cluster (als deze nog niet is geïnstalleerd in een eerdere GitOps-implementatie).
Aanbeveling
Met az k8s-configuration flux create
de opdracht wordt de microsoft.flux
extensie geïmplementeerd in het cluster en wordt de configuratie gemaakt. In sommige scenario's kunt u het flux-extensie-exemplaar afzonderlijk maken voordat u uw configuratiebronnen maakt. Gebruik hiervoor de az k8s-extension create
opdracht om een exemplaar van de extensie op uw cluster te maken.
Wanneer de fluxconfiguratie voor het eerst wordt geïnstalleerd, kan de eerste nalevingsstatus zijn Pending
of Non-compliant
omdat afstemming nog steeds actief is. Voer na een minuut of zo opnieuw een query uit op de configuratie om de uiteindelijke nalevingsstatus te zien.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Voer de volgende opdracht uit om te bevestigen dat de implementatie is geslaagd:
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Met een geslaagde implementatie worden de volgende naamruimten gemaakt:
-
flux-system
: bevat de controllers voor Flux-extensies. -
cluster-config
: bevat de Flux-configuratieobjecten. -
nginx
,podinfo
,redis
: naamruimten voor workloads die worden beschreven in manifesten in de Git-opslagplaats.
Voer de volgende opdracht uit om de naamruimten te bevestigen:
kubectl get namespaces
De flux-system
naamruimte bevat de Flux-extensieobjecten:
- Azure Flux controllers:
fluxconfig-agent
,fluxconfig-controller
- OSS Flux-controllers:
source-controller
,kustomize-controller
,helm-controller
notification-controller
De Flux agent en controller pods moeten actief zijn. Bevestig dit met behulp van de volgende opdracht:
kubectl get pods -n flux-system
NAME READY STATUS RESTARTS AGE
fluxconfig-agent-9554ffb65-jqm8g 2/2 Running 0 21m
fluxconfig-controller-9d99c54c8-nztg8 2/2 Running 0 21m
helm-controller-59cc74dbc5-77772 1/1 Running 0 21m
kustomize-controller-5fb7d7b9d5-cjdhx 1/1 Running 0 21m
notification-controller-7d45678bc-fvlvr 1/1 Running 0 21m
source-controller-df7dc97cd-4drh2 1/1 Running 0 21m
De naamruimte cluster-config
heeft de Flux-configuratieobjecten.
kubectl get crds
NAME CREATED AT
alerts.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com 2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
connectedclusters.arc.azure.com 2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com 2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com 2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io 2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
websites.extensions.example.com 2022-03-30T23:42:32Z
Bevestig andere details van de configuratie met behulp van de volgende opdrachten.
kubectl get fluxconfigs -A
NAMESPACE NAME SCOPE URL PROVISION AGE
cluster-config cluster-config cluster https://github.com/Azure/gitops-flux2-kustomize-helm-mt Succeeded 44m
kubectl get gitrepositories -A
NAMESPACE NAME URL READY STATUS AGE
cluster-config cluster-config https://github.com/Azure/gitops-flux2-kustomize-helm-mt True Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 45m
kubectl get helmreleases -A
NAMESPACE NAME READY STATUS AGE
cluster-config nginx True Release reconciliation succeeded 66m
cluster-config podinfo True Release reconciliation succeeded 66m
cluster-config redis True Release reconciliation succeeded 66m
kubectl get kustomizations -A
NAMESPACE NAME READY STATUS AGE
cluster-config cluster-config-apps True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
cluster-config cluster-config-infra True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
Workloads worden geïmplementeerd vanuit manifesten in de Git-opslagplaats.
kubectl get deploy -n nginx
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 1/1 1 1 67m
nginx-ingress-controller-default-backend 1/1 1 1 67m
kubectl get deploy -n podinfo
NAME READY UP-TO-DATE AVAILABLE AGE
podinfo 1/1 1 1 68m
kubectl get all -n redis
NAME READY STATUS RESTARTS AGE
pod/redis-master-0 1/1 Running 0 68m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redis-headless ClusterIP None <none> 6379/TCP 68m
service/redis-master ClusterIP 10.0.13.182 <none> 6379/TCP 68m
NAME READY AGE
statefulset.apps/redis-master 1/1 68m
Bepalen welke controllers worden geïmplementeerd met de Flux-clusterextensie
Voor sommige scenario's wilt u mogelijk wijzigen welke Flux-controllers worden geïnstalleerd met de Flux-clusterextensie.
De source
, helm
, kustomize
, en notification
Flux controllers worden standaard geïnstalleerd. De image-automation
en image-reflector
controllers die worden gebruikt om een Git-opslagplaats bij te werken wanneer er nieuwe containerinstallatiekopieën beschikbaar zijn, moeten expliciet worden ingeschakeld.
U kunt de k8s-extension
opdracht gebruiken om de standaardopties te wijzigen:
-
--config source-controller.enabled=<true/false>
(standaardtrue
) -
--config helm-controller.enabled=<true/false>
(standaardtrue
) -
--config kustomize-controller.enabled=<true/false>
(standaardtrue
) -
--config notification-controller.enabled=<true/false>
(standaardtrue
) -
--config image-automation-controller.enabled=<true/false>
(standaardfalse
) -
--config image-reflector-controller.enabled=<true/false>
(standaardfalse
)
Als u bijvoorbeeld meldingen wilt uitschakelen, kunt u instellen notification-controller.enabled
op false
.
Met deze voorbeeldopdracht worden de image-reflector
en image-automation
controllers geïnstalleerd. Als de Flux-extensie automatisch is gemaakt toen een Flux-configuratie voor het eerst werd gemaakt, is flux
de extensienaam.
az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true
Kubelet-identiteit gebruiken als verificatiemethode voor AKS-clusters
Voor AKS-clusters is een van de verificatieopties die moeten worden gebruikt kubelet-identiteit. Standaard wordt door AKS een eigen kubelet-identiteit in de beheerde resourcegroep aangemaakt. Als u wilt, kunt u een vooraf gemaakte beheerde kubelet-identiteit gebruiken. Hiervoor voegt u de parameter --config useKubeletIdentity=true
toe op het moment van de installatie van de Flux-extensie.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Onboardingrichtlijnen voor Red Hat OpenShift
Fluxcontrollers vereisen een niet-root beveiligingscontextbeperking om pods op de juiste wijze in te richten op het cluster. Deze beperkingen moeten worden toegevoegd aan het cluster voordat u de microsoft.flux
extensie implementeert.
NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller
Zie de Flux-documentatie voor meer informatie over OpenShift-richtlijnen voor onboarding flux.
Werken met parameters
Flux ondersteunt veel parameters om verschillende scenario's mogelijk te maken. Zie de officiële Flux-documentatie voor een beschrijving van alle parameters die Door Flux worden ondersteund. Flux in Azure biedt nog geen ondersteuning voor alle parameters. Laat ons weten of een parameter die u nodig hebt ontbreekt in de Azure-implementatie.
Zie ondersteunde parameters voor GitOps (Flux v2) voor informatie over beschikbare parameters en hoe u deze kunt gebruiken.
Werken met verificatiereferentie voor lokaal geheim
Als u een referentie voor lokale geheime verificatie wilt gebruiken, moet het geheim bestaan binnen dezelfde naamruimte waarin het fluxConfiguration
is geïmplementeerd. Het geheim moet ook alle verificatieparameters bevatten die nodig zijn voor de bron.
Zie fluxConfiguration
voor informatie over het maken van geheimen voor verschillende bronnen.
Clusterconfiguratie beheren met behulp van de Flux Kustomize-controller
De Flux Kustomize-controller wordt geïnstalleerd als onderdeel van de microsoft.flux
clusterextensie. Hiermee kan het declaratieve beheer van clusterconfiguratie en toepassingsimplementatie worden uitgevoerd met behulp van Kubernetes-manifesten die zijn gesynchroniseerd vanuit een Git-opslagplaats. Deze Kubernetes-manifesten kunnen eventueel een kustomize.yaml-bestand bevatten.
Zie de volgende bronnen voor gebruiksgegevens:
- Flux Kustomize-controller
- Kustomizereferentiedocumenten
- Het kustomisatiebestand
- Kustomize-project
- Kustomize-hulplijnen
Helm-grafiekreleases beheren met behulp van de Flux Helm-controller
De Flux Helm-controller wordt geïnstalleerd als onderdeel van de microsoft.flux
clusterextensie. Hiermee kunt u declaratief Helm-grafiekreleases beheren met Kubernetes-manifesten die u in uw Git-opslagplaats onderhoudt.
Zie de volgende bronnen voor gebruiksgegevens:
Aanbeveling
Vanwege hoe Helm indexbestanden verwerkt, is het verwerken van Helm-grafieken een dure bewerking en kan een hoge geheugenvoetafdruk hebben. Als gevolg hiervan kan het afstemmen van een groot aantal Helm-grafieken tegelijk geheugenpieken en OOMKilled
-fouten veroorzaken. Standaard stelt de controller de geheugenlimiet in op 1Gi en de geheugenaanvragen op 64Mi. Als u dit limiet en deze query-aanvragen wilt verhogen vanwege een groot aantal uitgebreide afstemmingen van Helm-grafieken, voert u de volgende opdracht uit nadat u de microsoft.flux-extensie hebt geïnstalleerd.
az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi
De GitRepository-bron voor Helm-grafieken gebruiken
Als uw Helm-grafieken zijn opgeslagen in de GitRepository
bron die u configureert als onderdeel van de fluxConfigurations
resource, kunt u aangeven dat de geconfigureerde bron moet worden gebruikt als bron van de Helm-grafieken door toe te voegen aan clusterconfig.azure.com/use-managed-source: "true"
uw HelmRelease.yaml-bestand, zoals wordt weergegeven in het volgende voorbeeld:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
Wanneer u deze aantekening gebruikt, wordt de geïmplementeerde HelmRelease gepatcht met de verwijzing naar de geconfigureerde bron. Momenteel wordt alleen GitRepository
de bron ondersteund.
Helm-driftdetectie
Driftdetectie voor Helm-releases is niet standaard ingeschakeld.
microsoft.flux
Vanaf v1.7.5 kunt u Helm-driftdetectie inschakelen door de volgende opdracht uit te voeren:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
Strikte vervanging van variabelen na de build
Strikte vervanging van variabelen na build is beschikbaar vanaf microsoft.flux
v1.13.1.
Als u een Flux-extensie wilt maken waarvoor strikt vervangingsbeleid is ingeschakeld, voert u deze opdracht uit:
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true
Als u een bestaande Flux-extensie wilt bijwerken om strikt vervangingsbeleid in te schakelen, voert u deze opdracht uit:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true
Verticaal schalen
Ondersteuning voor verticale schaalaanpassing is beschikbaar vanaf microsoft.flux
v1.12.0. Op dit moment worden alleen specifieke parameters ondersteund die worden beschreven in de documentatie voor verticale schaalaanpassing van Flux . Andere parameters kunnen handmatig worden toegepast op het cluster.
Als u resourcelimieten wilt verhogen op controllers die buiten de huidige limieten zijn, voert u deze opdracht uit en wijzigt u indien nodig het specifieke resourcetype en de waarde:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m
Als u het aantal afstemmingen wilt verhogen dat parallel kan worden uitgevoerd, voert u deze opdracht uit:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s
Voer deze opdracht uit om in-memory build in te schakelen:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=true
Helm OOM-horloge
microsoft.flux
Vanaf v1.7.5] kunt u helm-OOM-horloge inschakelen. Zie Helm inschakelen in de buurt van OOM-detectie voor meer informatie.
Controleer mogelijke herstelstrategieën en pas deze indien nodig toe wanneer u deze functie inschakelt.
Voer de volgende opdracht uit om OOM Watch in te schakelen:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms
Als u geen waarden opgeeft voor memoryThreshold
en outOfMemoryWatch
, wordt de standaardgeheugendrempel ingesteld op 95%, met het interval waarmee het geheugengebruik moet worden gecontroleerd op 500 ms.
Parameters op configureerbaar logboekniveau
De log-level
voor Flux-controllers is standaard ingesteld op info
.
microsoft.flux
Vanaf v1.8.3 kunt u deze standaardinstellingen als volgt wijzigen met behulp van de k8s-extension
opdracht:
--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>
Geldige waarden zijn debug
, info
of error
. Als u bijvoorbeeld de log-level
voor de source-controller
en kustomize-controller
wilt wijzigen, gebruikt u de volgende opdracht:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error
Beginnend met microsoft.flux
v1.9.1, fluxconfig-agent
en fluxconfig-controller
ondersteunen info
- en error
logboekniveaus (maar niet debug
). Als u deze opties wilt wijzigen, gebruikt u de k8s-extension
opdracht:
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
De volgende opdracht wordt bijvoorbeeld gewijzigd log-level
in error
:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error
Aantekening configureren op Flux-extensiepods
Bij het configureren van een andere oplossing dan Azure Firewall zijn netwerk- en FQDN-/toepassingsregels vereist voor een AKS-cluster.
microsoft.flux
Vanaf v1.11.1 kunnen Flux-controllerpods nu de aantekening kubernetes.azure.com/set-kube-service-host-fqdn
instellen in hun podspecificaties. Met deze aantekening wordt verkeer naar de domeinnaam van de API-server toegestaan, zelfs wanneer er een Laag 7-firewall aanwezig is, waardoor implementaties tijdens de installatie van de extensie worden vergemakkelijkt. Gebruik de volgende opdrachten om deze aantekening te configureren wanneer u de Flux-extensie gebruikt.
# Create flux extension with annotation
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
# Update flux extension with annotation
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true
Workloadidentiteit in Kubernetes-clusters met Arc en AKS-clusters
U kunt Flux-configuraties maken in clusters waarvoor workloadidentiteit is ingeschakeld. Flux-configuraties in AKS-clusters waarvoor workloadidentiteit is ingeschakeld , worden ondersteund vanaf microsoft.flux
v1.8.0 en in clusters met Azure Arc waarvoor de workloadidentiteit is ingeschakeld vanaf microsoft.flux
v.1.15.1.
Als u Flux-configuraties wilt maken in clusters waarvoor workloadidentiteit is ingeschakeld, wijzigt u de extensie, zoals wordt weergegeven in de volgende stappen.
Haal de URL van de OIDC-verlener op voor uw AKS-cluster of Kubernetes-cluster met Arc.
Maak een beheerde identiteit en noteer de client-id en tenant-id.
Maak de flux-extensie op het cluster met behulp van de volgende opdracht:
az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id> workloadIdentity.azureTenantId=<tenant_id>
Stel een federatieve identiteitsreferentie in voor uw AKS-cluster of Kubernetes-cluster met Arc. Voorbeeld:
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange # For image-automation controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-automation-controller" --audience api://AzureADTokenExchange # For kustomize-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchange
Zorg ervoor dat de aangepaste resource die de workloadidentiteit moet gebruiken, de waarde van
.spec.provider
opazure
instelt in het manifest. Voorbeeld:apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azure
Zorg ervoor dat u de juiste machtigingen verleent voor de workloadidentiteit voor de resource die de broncontroller of image-reflectorcontroller moet ophalen. Als u bijvoorbeeld Azure Container Registry gebruikt, moet u ervoor zorgen dat
Container Registry Repository Reader
(voor registers met ABAC-functionaliteit) ofAcrPull
(voor niet-ABAC-registers) is toegepast.
Workloadidentiteit gebruiken met Azure DevOps
Als u de workloadidentiteit wilt gebruiken met Azure DevOps, schakelt u de volgende vereisten in:
- Zorg ervoor dat uw Azure DevOps-organisatie is verbonden met Microsoft Entra.
- Controleer of de workload-identiteit correct is ingesteld op uw cluster, met de stappen voor AKS-clusters of Kubernetes-clusters met Arc.
- Maak een beheerde identiteit, stel federatieve referenties in en schakel workloadidentiteit in op de fluxcontrollerpods van de Flux-extensie zoals eerder in deze sectie beschreven.
- Voeg de beheerde identiteit toe aan de Azure DevOps-organisatie als gebruiker, zodat deze machtigingen heeft voor toegang tot de Azure DevOps-opslagplaats. Zie Service-principals en beheerde identiteiten gebruiken in Azure DevOps voor gedetailleerde stappen.
Stel vervolgens de provider van gitRepository
de flux-configuratie in op 'azure' om verificatie zonder referenties in te schakelen. Dit kan worden geconfigureerd met bicep-, ARM-sjablonen of Azure CLI. Als u bijvoorbeeld de provider wilt instellen met behulp van Azure CLI, voert u de volgende opdracht uit:
az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"
De afschaffing van Azure DevOps SSH-RSA
Azure DevOps heeft de afschaffing van SSH-RSA aangekondigd als een ondersteunde versleutelingsmethode voor het maken van verbinding met Azure-opslagplaatsen met behulp van SSH. Als u SSH-sleutels gebruikt om verbinding te maken met Azure-opslagplaatsen in Flux-configuraties, raden we u aan om over te stappen op veiligere RSA-SHA2-256- of RSA-SHA2-512-sleutels.
Bij het afstemmen van Flux-configuraties ziet u mogelijk een foutbericht dat aangeeft dat ssh-rsa binnenkort wordt afgeschaft of niet wordt ondersteund. Zo ja, werkt u het hostsleutel-algoritme bij dat wordt gebruikt voor het tot stand brengen van SSH-verbindingen met Azure DevOps-opslagplaatsen vanuit flux source-controller
en image-automation-controller
(indien ingeschakeld) met behulp van de az k8s-extension update
opdracht. Voorbeeld:
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
Voor meer informatie over afschaffing van Azure DevOps SSH-RSA, zie Einde van SSH-RSA ondersteuning voor Azure Repos.
De Flux-configuratie en -extensie verwijderen
Gebruik de volgende opdrachten om uw Flux-configuraties te verwijderen en, indien gewenst, de Flux-extensie zelf.
De Flux-configuraties verwijderen
Met de volgende opdracht verwijdert u zowel de fluxConfigurations
resource in Azure als de Flux-configuratieobjecten in het cluster. Omdat de Flux-configuratie oorspronkelijk is gemaakt met de prune=true
parameter voor de kustomisatie, worden alle objecten die in het cluster zijn gemaakt op basis van manifesten in de Git-opslagplaats verwijderd wanneer de Flux-configuratie wordt verwijderd. Met deze opdracht wordt de Flux-extensie zelf echter niet verwijderd.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
De Flux-clusterextensie verwijderen
Wanneer u de Flux-extensie verwijdert, worden zowel de microsoft.flux
extensieresource in Azure als de Flux-extensieobjecten in het cluster verwijderd.
Belangrijk
Zorg ervoor dat u alle Flux-configuraties in het cluster verwijdert voordat u de Flux-extensie verwijdert. Als u de extensie verwijdert zonder eerst de Flux-configuraties te verwijderen, kan uw cluster in een instabiele toestand blijven.
Als de Flux-extensie automatisch is gemaakt toen de Flux-configuratie voor het eerst werd gemaakt, is flux
de extensienaam.
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
Aanbeveling
Deze opdrachten gebruiken -t connectedClusters
, die geschikt zijn voor een Kubernetes-cluster met Azure Arc. Gebruik in plaats daarvan voor een AKS-cluster -t managedClusters
.
Volgende stappen
- Meer informatie over configuraties en GitOps.
- Meer informatie over het gebruik van Azure Policy om GitOps op schaal af te dwingen.
- Meer informatie over het bewaken van de GitOps-status (Flux v2) en -activiteit.