Zelfstudie: Toepassingen implementeren met GitOps met Flux v2
In deze zelfstudie wordt beschreven hoe u GitOps gebruikt in een Kubernetes-cluster. GitOps met Flux v2 is ingeschakeld als clusterextensie in Kubernetes-clusters met Azure Arc of AKS-clusters (Azure Kubernetes Service). 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.
Tip
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.
Belangrijk
De microsoft.flux
extensie heeft primaire versie 1.0.0 uitgebracht. Dit omvat de multitenancy-functie. Als u bestaande GitOps Flux v2-configuraties hebt die gebruikmaken van een eerdere versie van de microsoft.flux
extensie, kunt u handmatig upgraden naar de nieuwste versie met behulp van de Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE>
(gebruik -t connectedClusters
voor Arc-clusters en -t managedClusters
voor AKS-clusters).
Vereisten
Voor het implementeren van toepassingen met GitOps met Flux v2 hebt u het volgende nodig:
Voor Kubernetes-clusters 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.
Voor Azure Kubernetes Service-clusters
Een op MSI gebaseerd AKS-cluster dat actief en actief 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. Voor al gemaakte SPN-clusters die moeten worden geconverteerd naar MSI, voert u de opdracht 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 het 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 op het moment ondersteund in een subset van de regio's die door AKS worden ondersteund. 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 uitgaande TCP naar de opslagplaatsbron op poort 22 (SSH) of de poort 443 (HTTPS) om te functioneren. De agents hebben ook toegang nodig tot de volgende uitgaande URL's:
Eindpunt (DNS) | Description |
---|---|
https://management.azure.com |
Vereist dat deze agent kan communiceren met de Kubernetes Configuration-service. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Eindpunt van het gegevensvlak voor deze agent om de status te pushen en configuratiegegevens op te halen. Is afhankelijk <region> van (de ondersteunde regio's die eerder zijn genoemd). |
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 containerinstallatiekopieën 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
Tip
Zie 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 het gebruik van deze zelfstudie te vereenvoudigen en enkele belangrijke principes te illustreren. Als u up-to-date wilt blijven, kan de opslagplaats af en toe belangrijke wijzigingen krijgen van versie-upgrades. Deze wijzigingen zijn niet van invloed op uw nieuwe toepassing van deze zelfstudie, alleen eerdere zelfstudietoepassingen die niet zijn verwijderd. Zie de vrijwaring voor wijzigingen die fouten veroorzaken voor meer informatie over het afhandelen van deze wijzigingen.
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-opslagplaatsbranch 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 het bereik met deze zelfstudie wilt gebruikennamespace
, raadpleegt u de benodigde wijzigingen. - Er worden twee kustomisaties opgegeven met namen
infra
enapps
. Elk pad 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.) - Ingesteld
prune=true
op beide kustomisaties. 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).
Tip
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 Flux-extensiecontrollers.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 controllerpods moeten de status Actief hebben. 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
controllers , helm
en kustomize
notification
Flux 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 maakt AKS een eigen kubelet-identiteit in de beheerde resourcegroep. 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
Flux-controllers vereisen een niet-basisbeveiligingscontextbeperking 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 in dezelfde naamruimte waar het fluxConfiguration
wordt geïmplementeerd. Het geheim moet ook alle verificatieparameters bevatten die nodig zijn voor de bron.
Zie Lokaal geheim voor verificatie met bron voor informatie over het maken van geheimen voor verschillende fluxConfiguration
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
- Kustomize-referentiedocumenten
- 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:
- Flux voor Helm-gebruikers
- Helm-releases beheren
- Migreren naar Flux v2 Helm vanuit Flux v1 Helm
- Flux Helm-controller
Tip
Vanwege hoe Helm indexbestanden verwerkt, is het verwerken van Helm-grafieken een dure bewerking en kan een zeer 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 deze limiet en aanvragen wilt verhogen vanwege een groot aantal grote Afstemmingen van Helm-grafieken, voert u de volgende opdracht uit nadat u de extensie microsoft.flux 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
Verticale schaalaanpassing
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 en memoryThreshold
outOfMemoryWatch
de standaardgeheugendrempelwaarde is ingesteld op 95%, waarbij het geheugengebruik moet worden gecontroleerd op 500 ms.
Configureerbare parameters op logboekniveau
De voor Flux-controllers is standaard log-level
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 en fluxconfig-agent
ondersteunings fluxconfig-controller
info
- en error
logboekniveaus (maar niet debug
). Deze kunnen als volgt worden gewijzigd met behulp van de opdracht k8s-extension:
--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
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"
Zie Einde van SSH-RSA-ondersteuning voor Azure-opslagplaatsen voor meer informatie over afschaffing van Azure DevOps SSH-RSA.
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. Hierdoor 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
Workload-identiteit in AKS-clusters
microsoft.flux
Vanaf v1.8.0 kunt u Flux-configuraties maken in AKS-clusters waarvoor workloadidentiteit is ingeschakeld. Hiervoor wijzigt u de flux-extensie, zoals wordt weergegeven in de volgende stappen.
Haal de URL van de OIDC-verlener voor uw cluster op.
Maak een beheerde identiteit en noteer de client-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>
Stel een federatieve identiteitsreferentie in. 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 "${AKS_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 "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-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 "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchange
Zorg ervoor dat de aangepaste resource die de waarde
azure
voor workloadidentiteit.spec.provider
moet gebruiken, moet worden gebruikt 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 over de juiste machtigingen beschikt voor de workloadidentiteit voor de resource die u wilt dat de broncontroller of image-reflectorcontroller wordt opgehaald. Als u bijvoorbeeld Azure Container Registry gebruikt,
AcrPull
zijn machtigingen vereist.
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
Tip
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.