Självstudie: Distribuera program med GitOps med Flux v2
I den här självstudien beskrivs hur du använder GitOps i ett Kubernetes-kluster. GitOps med Flux v2 är aktiverat som ett klustertillägg i Azure Arc-aktiverade Kubernetes-kluster eller Azure Kubernetes Service-kluster (AKS). När klustertillägget microsoft.flux
har installerats kan du skapa en eller flera fluxConfigurations
resurser som synkroniserar git-lagringsplatsens källor till klustret och stämma av klustret med önskat tillstånd. Med GitOps kan du använda din Git-lagringsplats som sanningskälla för klusterkonfiguration och programdistribution.
I den här självstudien använder vi ett exempel på GitOps-konfiguration med två kustomiseringar, så att du kan se hur en kustomisering kan ha ett beroende av en annan. Du kan lägga till fler kustomizations och beroenden efter behov, beroende på ditt scenario.
Innan du dyker in kan du ta en stund och lära dig hur GitOps med Flux fungerar konceptuellt.
Dricks
Även om källan i den här självstudien är en Git-lagringsplats ger Flux även stöd för andra vanliga filkällor som Helm-lagringsplatser, Buckets och Azure Blob Storage.
Du kan också skapa Flux-konfigurationer med hjälp av Bicep, ARM-mallar eller Terraform AzAPI-provider. Mer information finns i Microsoft.KubernetesConfiguration fluxConfigurations.
Viktigt!
Tillägget microsoft.flux
släppte huvudversion 1.0.0. Detta inkluderar funktionen för flera innehavare. Om du har befintliga GitOps Flux v2-konfigurationer som använder en tidigare version av tillägget kan du uppgradera till den senaste versionen manuellt med hjälp av microsoft.flux
Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE>
(används -t connectedClusters
för Arc-kluster och -t managedClusters
för AKS-kluster).
Förutsättningar
Om du vill distribuera program med GitOps med Flux v2 behöver du:
För Azure Arc-aktiverade Kubernetes-kluster
Ett Azure Arc-aktiverat Kubernetes-anslutet kluster som är igång. ARM64-baserade kluster stöds från och med
microsoft.flux
version 1.7.0.Lär dig hur du ansluter ett Kubernetes-kluster till Azure Arc. Om du behöver ansluta via en utgående proxy ser du till att du installerar Arc-agenterna med proxyinställningar.
Läs- och skrivbehörigheter för
Microsoft.Kubernetes/connectedClusters
resurstypen.
För Azure Kubernetes Service-kluster
Ett MSI-baserat AKS-kluster som är igång.
Viktigt!
Kontrollera att AKS-klustret skapas med MSI (inte SPN), eftersom
microsoft.flux
tillägget inte fungerar med SPN-baserade AKS-kluster. För nya AKS-kluster som skapats medaz aks create
är klustret MSI-baserat som standard. Kör för redan skapade SPN-baserade kluster som måste konverteras till MSIaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
. Mer information finns i Använda en hanterad identitet i AKS.Läs- och skrivbehörigheter för
Microsoft.ContainerService/managedClusters
resurstypen.
Gemensamt för båda klustertyperna
Läs- och skrivbehörigheter för dessa resurstyper:
Microsoft.KubernetesConfiguration/extensions
Microsoft.KubernetesConfiguration/fluxConfigurations
Azure CLI version 2.15 och senare. Installera Azure CLI eller använd följande kommandon för att uppdatera till den senaste versionen:
az version az upgrade
Kubernetes-kommandoradsklienten kubectl.
kubectl
är redan installerat om du använder Azure Cloud Shell.Installera
kubectl
lokalt medaz aks install-cli
kommandot :az aks install-cli
Registrering av följande Azure-resursprovidrar:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfiguration
Registreringen är en asynkron process och bör slutföras inom 10 minuter. Om du vill övervaka registreringsprocessen använder du följande kommando:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Stöd för version och region
GitOps stöds för närvarande i alla regioner som Azure Arc-aktiverade Kubernetes stöder. GitOps stöds för närvarande i en del av de regioner som AKS stöder. GitOps-tjänsten lägger till nya regioner som stöds regelbundet.
Den senaste versionen av Flux v2-tillägget och de två tidigare versionerna (N-2) stöds. Vi rekommenderar vanligtvis att du använder den senaste versionen av tillägget.
Nätverkskrav
GitOps-agenterna måste ha utgående TCP till lagringsplatskällan på antingen port 22 (SSH) eller port 443 (HTTPS) för att fungera. Agenterna kräver också åtkomst till följande utgående URL:er:
Slutpunkt (DNS) | Description |
---|---|
https://management.azure.com |
Krävs för att agenten ska kunna kommunicera med Kubernetes-konfigurationstjänsten. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Dataplanets slutpunkt för agenten för att push-överföra status och hämta konfigurationsinformation. Beror på <region> (de regioner som stöds ovan). |
https://login.microsoftonline.com |
Krävs för att hämta och uppdatera Azure Resource Manager-token. |
https://mcr.microsoft.com |
Krävs för att hämta containeravbildningar för Flux-kontrollanter. |
Aktivera CLI-tillägg
Installera de senaste k8s-configuration
paketen och k8s-extension
CLI-tilläggspaketen:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Så här uppdaterar du dessa paket till de senaste versionerna:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Om du vill se en lista över alla installerade Azure CLI-tillägg och deras versioner använder du följande kommando:
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
Dricks
Hjälp med att lösa eventuella fel finns i avsnittet GitOps (Flux v2) i Felsöka tilläggsproblem för Azure Arc-aktiverade Kubernetes-kluster.
Tillämpa en Flux-konfiguration
k8s-configuration
Använd Azure CLI-tillägget eller Azure Portal för att aktivera GitOps i ett AKS- eller Arc-aktiverat Kubernetes-kluster. För en demonstration använder du lagringsplatsen public gitops-flux2-kustomize-helm-mt .
Viktigt!
Demonstrationsplatsen är utformad för att förenkla din användning av den här självstudien och illustrera några viktiga principer. För att hålla dig uppdaterad kan lagringsplatsen ibland få icke-bakåtkompatibla ändringar från versionsuppgraderingar. Dessa ändringar påverkar inte ditt nya program i den här självstudien, bara tidigare självstudier som inte har tagits bort. Information om hur du hanterar dessa ändringar finns i ansvarsfriskrivningen för icke-bakåtkompatibla ändringar.
I följande exempel används az k8s-configuration flux create
kommandot för att tillämpa en Flux-konfiguration på ett kluster med hjälp av följande värden och inställningar:
- Resursgruppen som innehåller klustret är
flux-demo-rg
. - Namnet på Azure Arc-klustret är
flux-demo-arc
. - Klustertypen är Azure Arc (
-t connectedClusters
), men det här exemplet fungerar också med AKS (-t managedClusters
). - Namnet på Flux-konfigurationen är
cluster-config
. - Namnområdet för konfigurationsinstallationen är
cluster-config
. - URL:en för den offentliga Git-lagringsplatsen är
https://github.com/Azure/gitops-flux2-kustomize-helm-mt
. - Git-lagringsplatsgrenen är
main
. - Omfånget för konfigurationen är
cluster
. Det här omfånget ger operatorerna behörighet att göra ändringar i hela klustret. Om du vill användanamespace
omfång med den här självstudien kan du läsa de ändringar som behövs. - Två kustomizations anges med namn
infra
ochapps
. Var och en är associerad med en sökväg i lagringsplatsen. - Kustomiseringen
apps
beror påinfra
kustomiseringen. (Kustomiseringeninfra
måste slutföras innanapps
kustomiseringen körs.) - Ställ in
prune=true
på båda kustomiseringarna. Den här inställningen säkerställer att de objekt som Flux distribuerade till klustret rensas om de tas bort från lagringsplatsen, eller om Flux-konfigurationen eller kustomizations tas bort.
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"\]
Tillägget microsoft.flux
är installerat på klustret (om det inte redan var installerat i en tidigare GitOps-distribution).
Dricks
Kommandot az k8s-configuration flux create
distribuerar microsoft.flux
tillägget till klustret och skapar konfigurationen. I vissa scenarier kanske du vill skapa instansen av fluxtillägget separat innan du skapar dina konfigurationsresurser. Om du vill göra det använder du az k8s-extension create
kommandot för att skapa en instans av tillägget i klustret.
När fluxkonfigurationen först installeras kan det inledande efterlevnadstillståndet vara Pending
eller Non-compliant
eftersom avstämningen fortfarande pågår. Efter en minut eller så frågar du konfigurationen igen för att se det slutliga efterlevnadstillståndet.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Kontrollera att distributionen lyckades genom att köra följande kommando:
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Med en lyckad distribution skapas följande namnområden:
flux-system
: Innehåller Flux-tilläggskontrollanterna.cluster-config
: Innehåller Flux-konfigurationsobjekten.nginx
, ,podinfo
redis
: Namnområden för arbetsbelastningar som beskrivs i manifest på Git-lagringsplatsen.
Bekräfta namnrymderna genom att köra följande kommando:
kubectl get namespaces
Namnområdet flux-system
innehåller Flux-tilläggsobjekten:
- Azure Flux-styrenheter:
fluxconfig-agent
,fluxconfig-controller
- OSS Flux-styrenheter:
source-controller
,kustomize-controller
,helm-controller
,notification-controller
Flux-agenten och styrenhetspoddarna ska vara i ett körningstillstånd. Bekräfta detta med hjälp av följande kommando:
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
Namnområdet cluster-config
har Flux-konfigurationsobjekten.
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
Bekräfta annan information om konfigurationen med hjälp av följande kommandon.
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
Arbetsbelastningar distribueras från manifest på Git-lagringsplatsen.
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
Kontrollera vilka styrenheter som distribueras med Flux-klustertillägget
I vissa scenarier kanske du vill ändra vilka Flux-styrenheter som är installerade med Flux-klustertillägget.
Styrenheterna source
, helm
, kustomize
och notification
Flux installeras som standard. Kontrollanterna image-automation
och image-reflector
som används för att uppdatera en Git-lagringsplats när nya containeravbildningar är tillgängliga måste aktiveras explicit.
Du kan använda k8s-extension
kommandot för att ändra standardalternativen:
--config source-controller.enabled=<true/false>
(standardtrue
)--config helm-controller.enabled=<true/false>
(standardtrue
)--config kustomize-controller.enabled=<true/false>
(standardtrue
)--config notification-controller.enabled=<true/false>
(standardtrue
)--config image-automation-controller.enabled=<true/false>
(standardfalse
)--config image-reflector-controller.enabled=<true/false>
(standardfalse
)
Om du till exempel vill inaktivera meddelanden kan du ange notification-controller.enabled
till false
.
Det här exempelkommandot installerar kontrollanterna image-reflector
och image-automation
. Om Flux-tillägget skapades automatiskt när en Flux-konfiguration först skapades är flux
tilläggsnamnet .
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
Använda Kubelet-identitet som autentiseringsmetod för AKS-kluster
För AKS-kluster är ett av autentiseringsalternativen kubelet-identitet. Som standard skapar AKS en egen kubelet-identitet i den hanterade resursgruppen. Om du vill kan du använda en fördefinierad kubelet-hanterad identitet. Det gör du genom att lägga till parametern --config useKubeletIdentity=true
vid tidpunkten för installationen av Flux-tillägget.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Vägledning för Red Hat OpenShift-registrering
Flux-kontrollanter kräver en icke-root säkerhetskontextbegränsning för att etablera poddar på klustret korrekt. Dessa begränsningar måste läggas till i klustret innan tillägget distribueras microsoft.flux
.
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
Mer information om OpenShift-vägledning för onboarding Flux finns i Flux-dokumentationen.
Arbeta med parametrar
Flux stöder många parametrar för att aktivera olika scenarier. En beskrivning av alla parametrar som Flux stöder finns i den officiella Flux-dokumentationen. Flux i Azure stöder inte alla parametrar ännu. Meddela oss om en parameter som du behöver saknas i Azure-implementeringen.
Information om tillgängliga parametrar och hur du använder dem finns i Parametrar som stöds av GitOps (Flux v2).
Arbeta med referens för lokal hemlighetsautentisering
Om du vill använda en referens för lokal hemlig autentisering måste hemligheten finnas inom samma namnområde där den fluxConfiguration
kommer att distribueras. Hemligheten måste också innehålla alla autentiseringsparametrar som behövs för källan.
Information om hur du skapar hemligheter för olika fluxConfiguration
källor finns i Lokal hemlighet för autentisering med källan.
Hantera klusterkonfiguration med hjälp av Flux Kustomize-styrenheten
Flux Kustomize-styrenheten installeras som en del av klustertilläggetmicrosoft.flux
. Det möjliggör deklarativ hantering av klusterkonfiguration och programdistribution med kubernetes-manifest som synkroniserats från en Git-lagringsplats. Dessa Kubernetes-manifest kan också innehålla en kustomize.yaml-fil .
Information om användning finns i följande resurser:
- Flux Kustomize-styrenhet
- Kustomize-referensdokument
- Kustomization-filen
- Kustomize-projekt
- Kustomize-guider
Hantera Helm-diagramutgåvor med hjälp av Flux Helm-styrenheten
Flux Helm-styrenheten installeras som en del av klustertillägget microsoft.flux
. Det gör att du kan deklarativt hantera Helm-diagramversioner med Kubernetes-manifest som du underhåller på din Git-lagringsplats.
Information om användning finns i följande resurser:
- Flux för Helm-användare
- Hantera Helm-versioner
- Migrera till Flux v2 Helm från Flux v1 Helm
- Flux Helm-styrenhet
Dricks
På grund av hur Helm hanterar indexfiler är bearbetning av Helm-diagram en dyr åtgärd och kan ha mycket hög minnesfotavtryck. Därför kan en avstämning av ett stort antal Helm-diagram samtidigt orsaka minnestoppar och OOMKilled
fel. Som standard anger kontrollanten sin minnesgräns till 1Gi och dess minnesbegäranden på 64Mi. Om du vill öka den här gränsen och begäranden på grund av ett stort antal stora Helm-diagramavstämningar kör du följande kommando när du har installerat tillägget microsoft.flux:
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
Använda GitRepository-källan för Helm-diagram
Om dina Helm-diagram lagras i den GitRepository
källa som du konfigurerar som en del av resursen fluxConfigurations
kan du ange att den konfigurerade källan ska användas som källa för Helm-diagrammen genom att lägga clusterconfig.azure.com/use-managed-source: "true"
till i din HelmRelease.yaml-fil, som du ser i följande exempel:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
När du använder den här kommentaren korrigeras den distribuerade HelmRelease med referensen till den konfigurerade källan. För närvarande stöds endast GitRepository
källan.
Helm-driftidentifiering
Driftidentifiering för Helm-versioner är inte aktiverat som standard. Från och med microsoft.flux
v1.7.5 kan du aktivera Helm driftidentifiering genom att köra följande kommando:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
Strikt ersättning av variabler efter bygget
Strikt ersättning efter kompileringsvariabeln är tillgänglig från och med microsoft.flux
v1.13.1.
Om du vill skapa ett Flux-tillägg med en strikt substitutionsprincip aktiverad kör du det här kommandot:
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
Om du vill uppdatera ett befintligt Flux-tillägg för att aktivera en strikt ersättningsprincip kör du det här kommandot:
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
Vertikal skalning
Stöd för vertikal skalning är tillgängligt från och med microsoft.flux
v1.12.0. För närvarande stöds endast specifika parametrar som beskrivs i den lodräta fluxskalningsdokumentationen . Andra parametrar kan tillämpas manuellt på klustret.
Om du vill öka resursgränserna för kontrollanter utöver de aktuella gränserna kör du det här kommandot och ändrar den specifika resurstypen och värdet efter behov:
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
Om du vill öka antalet avstämningar som kan utföras parallellt kör du det här kommandot:
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
Om du vill aktivera minnesintern version kör du det här kommandot:
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-klocka
Från och med microsoft.flux
v1.7.5 kan du aktivera Helm OOM-klocka. Mer information finns i Aktivera Helm nära OOM-identifiering.
Se till att granska potentiella reparationsstrategier och tillämpa dem efter behov när du aktiverar den här funktionen.
Om du vill aktivera OOM-klocka kör du följande kommando:
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
Om du inte anger värden för memoryThreshold
och outOfMemoryWatch
är standardtröskelvärdet för minne inställt på 95 %, med intervallet för att kontrollera minnesanvändningen inställt på 500 ms.
Konfigurerbara parametrar på loggnivå
Som standard log-level
är för Flux-styrenheter inställt på info
. Från och med microsoft.flux
v1.8.3 kan du ändra dessa standardinställningar med hjälp av kommandot på k8s-extension
följande sätt:
--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>
Giltiga värden är debug
, info
eller error
. Om du till exempel vill ändra log-level
för source-controller
och kustomize-controller
använder du följande kommando:
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
Från och med v1.9.1 och fluxconfig-agent
fluxconfig-controller
stödinfo
- och error
loggnivåer (men inte debug
).microsoft.flux
Dessa kan ändras med hjälp av kommandot k8s-extension enligt följande:
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
Följande kommando ändras log-level
till exempel till 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
Utfasning av Azure DevOps SSH-RSA
Azure DevOps tillkännagav utfasningen av SSH-RSA som en krypteringsmetod som stöds för att ansluta till Azure-lagringsplatser med hjälp av SSH. Om du använder SSH-nycklar för att ansluta till Azure-lagringsplatser i Flux-konfigurationer rekommenderar vi att du flyttar till säkrare RSA-SHA2-256- eller RSA-SHA2-512-nycklar.
Vid avstämning av Flux-konfigurationer kan ett felmeddelande visas som anger att ssh-rsa håller på att bli inaktuell eller inte stöds. I så fall uppdaterar du den värdnyckelalgoritm som används för att upprätta SSH-anslutningar till Azure DevOps-lagringsplatser från Flux source-controller
och image-automation-controller
(om den är aktiverad) med hjälp az k8s-extension update
av kommandot . Till exempel:
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"
Mer information om utfasning av Azure DevOps SSH-RSA finns i End of SSH-RSA support for Azure Repos (Slut på SSH-RSA-stöd för Azure Repos).
Konfigurera anteckning på Flux-tilläggspoddar
När du konfigurerar en annan lösning än Azure Firewall krävs regler för nätverk och FQDN/program för ett AKS-kluster. Från och med microsoft.flux
v1.11.1 kan Flux-styrenhetspoddar nu ange anteckningen kubernetes.azure.com/set-kube-service-host-fqdn
i sina poddspecifikationer. Detta tillåter trafik till API-serverns domännamn även när en Layer 7-brandvägg finns, vilket underlättar distributioner under tilläggsinstallationen. Om du vill konfigurera den här kommentaren när du använder Flux-tillägget använder du följande kommandon.
# 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
Arbetsbelastningsidentitet i AKS-kluster
Från och med microsoft.flux
v1.8.0 kan du skapa Flux-konfigurationer i AKS-kluster med arbetsbelastningsidentitet aktiverad. Det gör du genom att ändra fluxtillägget enligt följande steg.
Hämta OIDC-utfärdarens URL för klustret.
Skapa en hanterad identitet och anteckna dess klient-ID.
Skapa fluxtillägget i klustret med följande kommando:
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>
Upprätta en federerad identitetsautentiseringsuppgift. Till exempel:
# 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
Kontrollera att den anpassade resurs som behöver använda arbetsbelastningsidentiteten anger
.spec.provider
värdet tillazure
i manifestet. Till exempel:apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azure
Se till att ge rätt behörigheter för arbetsbelastningsidentitet för den resurs som du vill att källkontrollanten eller bildreflektorkontrollanten ska hämta. Om du till exempel använder Azure Container Registry
AcrPull
krävs behörigheter.
Ta bort Flux-konfigurationen och -tillägget
Använd följande kommandon för att ta bort dina Flux-konfigurationer och, om så önskas, själva Flux-tillägget.
Ta bort Flux-konfigurationerna
Följande kommando tar bort både resursen fluxConfigurations
i Azure och Flux-konfigurationsobjekten i klustret. Eftersom Flux-konfigurationen ursprungligen skapades med parametern prune=true
för kustomizationen tas alla objekt som skapats i klustret baserat på manifest i Git-lagringsplatsen bort när Flux-konfigurationen tas bort. Det här kommandot tar dock inte bort själva Flux-tillägget.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
Ta bort Flux-klustertillägget
När du tar bort Flux-tillägget tas både tilläggsresursen microsoft.flux
i Azure och Flux-tilläggsobjekten i klustret bort.
Viktigt!
Se till att ta bort alla Flux-konfigurationer i klustret innan du tar bort Flux-tillägget. Om du tar bort tillägget utan att först ta bort Flux-konfigurationerna kan klustret vara instabilt.
Om Flux-tillägget skapades automatiskt när Flux-konfigurationen först skapades är flux
tilläggsnamnet .
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
Dricks
Dessa kommandon använder -t connectedClusters
, vilket är lämpligt för ett Azure Arc-aktiverat Kubernetes-kluster. Använd i stället för ett AKS-kluster -t managedClusters
.
Nästa steg
- Läs mer om konfigurationer och GitOps.
- Lär dig hur du använder Azure Policy för att framtvinga GitOps i stor skala.
- Lär dig mer om övervakning av Status och aktivitet för GitOps (Flux v2).