Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz popisuje, jak používat GitOps v clusteru Kubernetes. GitOps s Flux v2 je povolen jako rozšíření clusteru v clusterech Kubernetes podporovaných Azure Arc nebo v clusterech Azure Kubernetes Service (AKS).
microsoft.flux Po instalaci rozšíření clusteru můžete vytvořit jeden nebo více fluxConfigurations prostředků, které synchronizují zdroje vašeho úložiště Git s clusterem a uvedou cluster do požadovaného stavu. S GitOps můžete úložiště Git používat jako zdroj pravdivých informací pro konfiguraci clusteru a nasazení aplikací.
V tomto kurzu použijeme ukázkovou konfiguraci GitOps se dvěma kustomizacemi, abyste viděli, jak může mít jedna kustomizace závislost na jiné. Jako podle potřeby můžete přidat další přizpůsobení a závislosti v závislosti na vašem scénáři.
Než se pustíte do práce, věnujte chvíli tomu, abyste se dozvěděli, jak GitOps s Fluxem funguje po koncepční stránce.
Návod
I když je zdrojem v tomto kurzu úložiště Git, flux také poskytuje podporu pro další běžné zdroje souborů, jako jsou úložiště Helm, Buckets a Azure Blob Storage.
Konfigurace Fluxu můžete vytvořit také pomocí bicep, šablon ARM nebo zprostředkovatele Terraform AzAPI. Další informace naleznete v tématu Microsoft.KubernetesConfiguration fluxConfigurations.
Zvažte možnost vyzkoušet si nové rozšíření Microsoft GitOps ArgoCD. Argo CD je oblíbený opensourcový nástroj GitOps, který v porovnání s Flux v2 nabízí různé funkce a možnosti.
Požadavky
K nasazení aplikací pomocí GitOps s Flux v2 potřebujete:
Kubernetes clustery s podporou Azure Arc
Cluster Kubernetes připojený k Azure Arc, který je aktivní a běží. Clustery založené na Arm64 se podporují od
microsoft.fluxverze 1.7.0.Zjistěte, jak připojit cluster Kubernetes ke službě Azure Arc. Pokud se potřebujete připojit přes odchozí proxy server, ujistěte se, že nainstalujete agenty Arc s nastavením proxy serveru.
Oprávnění na čtení a zápis pro typ prostředku
Microsoft.Kubernetes/connectedClusters.
Clustery služby Azure Kubernetes
Cluster AKS na bázi MSI, který je v provozu.
Důležité
Ujistěte se, že je cluster AKS vytvořený pomocí MSI (nikoli SPN), protože
microsoft.fluxrozšíření nefunguje s clustery AKS založenými na SPN. U nových clusterů AKS vytvořených pomocíaz aks createje cluster ve výchozím nastavení založený na MSI. Pokud chcete převést clustery SPN na MSI, spusťteaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identitypříkaz . Další informace najdete v tématu Použití spravované identity v AKS.Oprávnění na čtení a zápis pro typ prostředku
Microsoft.ContainerService/managedClusters.
Společné pro oba typy clusterů
Oprávnění ke čtení a zápisu u těchto typů prostředků:
Microsoft.KubernetesConfiguration/extensionsMicrosoft.KubernetesConfiguration/fluxConfigurations
Azure CLI verze 2.15 nebo novější Nainstalujte Azure CLI nebo pomocí následujících příkazů aktualizujte na nejnovější verzi:
az version az upgradeKlient příkazového řádku Kubernetes , kubectl.
kubectluž je nainstalovaný, pokud používáte Azure Cloud Shell.Nainstalujte
kubectlmístně pomocí příkazuaz aks install-cli:az aks install-cliRegistrace následujících poskytovatelů prostředků Azure:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationRegistrace je asynchronní proces, který by se měl dokončit do 10 minut. Pokud chcete monitorovat proces registrace, použijte následující příkaz:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Podpora verzí a oblastí
GitOps se v současné době podporuje ve všech oblastech, které Kubernetes s podporou Azure Arc podporuje. GitOps se v současné době podporuje v podmnožině oblastí, které AKS podporuje. Služba GitOps přidává nové podporované oblasti v pravidelných intervalech.
Podporují se nejnovější verze rozšíření Flux v2 a dvě předchozí verze (N-2). Obecně doporučujeme použít nejnovější verzi rozšíření.
Požadavky na síť
Agenti GitOps vyžadují odchozí TCP připojení ke zdroji úložiště na portu 22 (SSH) nebo portu 443 (HTTPS). Agenti také vyžadují přístup k následujícím odchozím adresám URL:
| Koncový bod (DNS) | Popis |
|---|---|
https://management.azure.com |
Vyžaduje se, aby agent komunikuje se službou Konfigurace Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Koncový bod roviny dat pro agenta pro nabízení informací o stavu a načítání konfiguračních informací. Závisí na <region> (podporované oblasti uvedené dříve). |
https://login.microsoftonline.com |
Vyžaduje se k načtení a aktualizaci tokenů Azure Resource Manageru. |
https://mcr.microsoft.com |
Vyžadováno pro vyžádání imagí kontejneru pro kontrolery Flux. |
Povolení rozšíření rozhraní příkazového řádku
Nainstalujte nejnovější balíčky rozšíření k8s-configuration a k8s-extension pro rozhraní příkazového řádku.
az extension add -n k8s-configuration
az extension add -n k8s-extension
Aktualizace těchto balíčků na nejnovější verze:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Pokud chcete zobrazit seznam všech nainstalovaných rozšíření Azure CLI a jejich verzí, použijte následující příkaz:
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
Návod
Pomoc s řešením chyb najdete v části GitOps (Flux v2) v tématu Řešení potíží s rozšířeními pro clustery Kubernetes s podporou Azure Arc.
Použití konfigurace fluxu
k8s-configuration Pomocí rozšíření Azure CLI nebo webu Azure Portal povolte GitOps v clusteru Kubernetes s podporou AKS nebo Arc. Pro ukázku použijte veřejné úložiště gitops-flux2-kustomize-helm-mt .
Důležité
Ukázkové úložiště je navržené tak, aby zjednodušilo používání tohoto kurzu a ilustroval klíčové principy. Aby úložiště zůstalo aktuální, může občas dojít k zásadním změnám kvůli aktualizacím verzí. Tyto změny neovlivňují nové využití tohoto kurzu, pouze předchozí použití. Další informace najdete v prohlášení o zásadních změnách.
Následující příklad používá az k8s-configuration flux create příkaz k použití konfigurace Flux v clusteru pomocí následujících hodnot a nastavení:
- Skupina prostředků, která obsahuje cluster, je
flux-demo-rg. - Název clusteru Azure Arc je
flux-demo-arc. - Typ clusteru je Azure Arc (
-t connectedClusters), ale tento příklad funguje také s AKS (-t managedClusters). - Název konfigurace Flux je
cluster-config. - Jmenný prostor pro instalaci konfigurace je
cluster-config. - Adresa URL veřejného úložiště Git je
https://github.com/Azure/gitops-flux2-kustomize-helm-mt. - Větev úložiště Git je
main. - Rozsah konfigurace je
cluster. Tento obor dává operátorům oprávnění provádět změny v celém clusteru. Pokud chcete v tomto tutoriálu použítnamespaceobor, podívejte se na potřebné změny. - Dvě kustomizace jsou zadány s názvy
infraaapps. Každá z nich je přidružená k cestě v úložišti. - Kustomizace
appszávisí nainfrakustomizaci. (Kustomizaceinframusí být dokončena před spuštěnímappskustomizace.) - Nastavte
prune=truena obě kustomizace. Toto nastavení zajistí, že objekty, které Flux nasadil do clusteru, budou vyčištěny, pokud budou odstraněny z úložiště nebo pokud dojde k odstranění konfigurace Fluxu či kustomizací.
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"\]
Rozšíření microsoft.flux se nainstaluje do clusteru (pokud jste ho ještě nenainstalovali v předchozím nasazení GitOps).
Návod
Příkaz az k8s-configuration flux create nasadí microsoft.flux rozšíření do clusteru a vytvoří konfiguraci. V některých scénářích můžete před vytvořením konfiguračních prostředků vytvořit instanci rozšíření flux samostatně. Uděláte to tak, že pomocí az k8s-extension create příkazu vytvoříte instanci rozšíření v clusteru.
Počáteční stav dodržování předpisů může být Pending nebo Non-compliant při první instalaci konfigurace fluxu, protože odsouhlasení stále probíhá. Po minutě nebo tak znovu zadejte dotaz na konfiguraci, abyste viděli konečný stav dodržování předpisů.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Pokud chcete ověřit, že nasazení proběhlo úspěšně, spusťte následující příkaz:
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Při úspěšném nasazení se vytvoří následující obory názvů:
-
flux-system: Obsahuje kontrolery rozšíření Flux. -
cluster-config: Obsahuje objekty konfigurace Flux. -
nginx,podinfo,redis: Jmenné prostory pro úlohy popsané v manifestech v úložišti Git.
Pokud chcete potvrdit obory názvů, spusťte následující příkaz:
kubectl get namespaces
Jmenný prostor flux-system obsahuje objekty rozšíření Flux:
- Kontrolery Azure Flux:
fluxconfig-agent,fluxconfig-controller - OSS Flux controllers:
source-controller,kustomize-controller,helm-controller,notification-controller
Pody agenta Flux a kontroleru by měly být ve spuštěném stavu. Potvrďte to pomocí následujícího příkazu:
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
Obor názvů cluster-config má objekty konfigurace Flux.
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
Další podrobnosti o konfiguraci potvrďte pomocí následujících příkazů.
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
Úlohy se nasazují z manifestů v úložišti Git.
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
Řízení, které kontrolery se nasazují pomocí rozšíření clusteru Flux
V některých scénářích můžete chtít změnit, které kontrolery Flux jsou nainstalované s rozšířením clusteru Flux.
Kontrolery source, , helmkustomizea notification Flux jsou ve výchozím nastavení nainstalovány. Řadiče image-automation používané image-reflectork aktualizaci úložiště Git, když jsou k dispozici nové image kontejneru, musí být explicitně povolené.
Pomocí příkazu můžete k8s-extension změnit výchozí možnosti:
-
--config source-controller.enabled=<true/false>(výchozítrue) -
--config helm-controller.enabled=<true/false>(výchozítrue) -
--config kustomize-controller.enabled=<true/false>(výchozítrue) -
--config notification-controller.enabled=<true/false>(výchozítrue) -
--config image-automation-controller.enabled=<true/false>(výchozífalse) -
--config image-reflector-controller.enabled=<true/false>(výchozífalse)
Pokud chcete například zakázat oznámení, můžete nastavit notification-controller.enabled možnost false.
Tento ukázkový příkaz nainstaluje image-reflector a image-automation kontrolery. Pokud se rozšíření Flux vytvořilo automaticky při prvním vytvoření konfigurace Flux, název rozšíření je flux.
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
Použití identity Kubelet jako metody ověřování pro clustery AKS
U clusterů AKS je jednou z možností ověřování, která se má použít, identita kubeletu. Ve výchozím nastavení vytvoří AKS ve spravované skupině prostředků vlastní identitu kubeletu. Pokud chcete, můžete použít předem vytvořenou spravovanou identitu kubeletu. Uděláte to tak, že přidáte parametr --config useKubeletIdentity=true v době instalace rozšíření Flux.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Pokyny k onboardingu Red Hat OpenShiftu
Kontrolery flux vyžadují pro správné zřizování podů v clusteru omezení kontextu zabezpečení, které není kořenové. Před nasazením rozšíření je nutné tato omezení přidat do clusteru 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
Další informace o pokynech OpenShift pro integraci Flux najdete v dokumentaci k Fluxu.
Práce s parametry
Flux podporuje mnoho parametrů, které umožňují různé scénáře. Popis všech parametrů, které Flux podporuje, najdete v oficiální dokumentaci k fluxu. Flux v Azure zatím nepodporuje všechny parametry. Dejte nám vědět, jestli v implementaci Azure chybí parametr, který potřebujete.
Informace o dostupných parametrech a jejich použití najdete v tématu Podporované parametry GitOps (Flux v2).
Práce s referenčními informacemi k místnímu ověřování tajných kódů
Pokud chcete použít odkaz na místní tajné autentizační údaje, musí tajný klíč existovat ve stejném oboru názvů, ve kterém je fluxConfiguration nasazeno. Tajný klíč musí také obsahovat všechny parametry ověřování potřebné pro zdroj.
Informace o vytváření tajných kódů pro různé fluxConfiguration zdroje najdete v tématu Místní tajný klíč pro ověřování se zdrojem.
Správa konfigurace clusteru pomocí kontroleru Flux Kustomize
Kontroler Flux Kustomize se instaluje jako součást rozšíření clusterumicrosoft.flux. Umožňuje deklarativní správu konfigurace clusteru a nasazení aplikací pomocí manifestů Kubernetes synchronizovaných z úložiště Git. Tyto manifesty Kubernetes můžou volitelně obsahovat soubor kustomize.yaml .
Podrobnosti o využití najdete v následujících zdrojích informací:
- Ovladač Flux Kustomize
- Referenční dokumenty Kustomize
- Soubor kustomizace
- Projekt Kustomize
- Návody Kustomize
Spravujte vydání Helm chartů pomocí kontroléru Flux Helm
Kontroler Flux Helm se instaluje jako součást rozšíření clusteru microsoft.flux . Umožňuje deklarativní správu verzí chartů Helm pomocí manifestů Kubernetes, které udržujete v úložišti Git.
Podrobnosti o využití najdete v následujících zdrojích informací:
Návod
Vzhledem k tomu, jak Helm zpracovává indexové soubory, je zpracování grafů Helm nákladnou operací a může mít vysoké nároky na paměť. V důsledku toho může rekonciciování velkého počtu grafů Helm najednou způsobit špičky a OOMKilled chyby paměti. Ve výchozím nastavení řadič nastaví limit paměti na 1Gi a požadavky na paměť na 64Mi. Pokud chcete tento limit a požadavky zvýšit z důvodu velkého počtu odsouhlasení chartů Helm, spusťte po instalaci rozšíření microsoft.flux následující příkaz:
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
Použití zdroje GitRepository pro charty Helm
Pokud jsou grafy Helm uložené ve GitRepository zdroji, který konfigurujete jako součást fluxConfigurations prostředku, můžete označit, že nakonfigurovaný zdroj by se měl použít jako zdroj chartů Helm přidáním clusterconfig.azure.com/use-managed-source: "true" do souboru HelmRelease.yaml, jak je znázorněno v následujícím příkladu:
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
Při použití této anotace je nasazený HelmRelease aktualizován s odkazem na nakonfigurovaný zdroj. V současné době se podporuje pouze GitRepository zdroj.
Detekce posunů Helmu
Detekce odchylek pro verze Helmu není ve výchozím nastavení aktivovaná.
microsoft.flux Počínaje verzí 1.7.5 můžete povolit detekci odchylek Helmu spuštěním následujícího příkazu:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
Striktní nahrazení proměnných po sestavení
Striktní nahrazení proměnných po sestavení je dostupné od microsoft.flux verze 1.13.1.
Pokud chcete vytvořit rozšíření Flux s povolenými striktními zásadami nahrazení, spusťte tento příkaz:
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
Pokud chcete aktualizovat existující rozšíření Flux, aby bylo možné povolit striktní zásady nahrazení, spusťte tento příkaz:
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
Vertikální škálování
Podpora vertikálního škálování je dostupná od microsoft.flux verze 1.12.0. V současné době se nativně podporují pouze konkrétní parametry popsané v dokumentaci ke vertikálnímu škálování fluxu . U clusteru se můžou ručně použít další parametry.
Pokud chcete zvýšit limity prostředků na kontrolery nad rámec aktuálních limitů, spusťte tento příkaz a podle potřeby změňte konkrétní typ a hodnotu prostředku:
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
Pokud chcete zvýšit počet odsouhlasení, které je možné provádět paralelně, spusťte tento příkaz:
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
Pokud chcete povolit sestavení v paměti, spusťte tento příkaz:
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 watch
microsoft.flux Počínaje verzí 1.7.5] můžete povolit hodinky Helm OOM. Další informace najdete v tématu Povolení Helmu poblíž detekce OOM.
Při povolování této funkce nezapomeňte zkontrolovat potenciální strategie nápravy a použít je podle potřeby.
K povolení sledování OOM spusťte následující příkaz:
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
Pokud nezadáte hodnoty pro memoryThreshold a outOfMemoryWatch, výchozí prahová hodnota paměti je nastavena na 95%a interval pro kontrolu využití paměti je nastaven na 500 ms.
Konfigurovatelné parametry na úrovni protokolu
Ve výchozím nastavení log-level je pro kontrolery Flux nastavena hodnota info.
microsoft.flux Počínaje verzí 1.8.3 můžete pomocí následujícího příkazu upravit tato výchozí nastaveník8s-extension:
--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>
Platné hodnoty jsou debug, infonebo error. Pokud chcete například změnit log-level na source-controller a kustomize-controller, použijte následující příkaz:
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
microsoft.flux Počínaje verzí 1.9.1, fluxconfig-agent a fluxconfig-controller podporují úrovně protokolu info a error (ale ne debug). Pokud chcete tyto možnosti upravit, použijte k8s-extension příkaz:
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
Například následující příkaz se změní log-level na 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
Konfigurujte anotace na podách rozšíření Flux
Při konfiguraci řešení jiného než Azure Firewall jsou pro cluster AKS vyžadována pravidla pro síť a FQDN/aplikace.
microsoft.flux Počínaje verzí 1.11.1 teď mohou pody kontroleru Flux nastavit poznámku kubernetes.azure.com/set-kube-service-host-fqdn ve specifikacích podů. Tato anotace umožňuje přístup k názvu domény serveru API, i když je přítomen firewall vrstvy 7, což usnadňuje nasazení během instalace rozšíření. Pokud chcete tuto poznámku nakonfigurovat při použití rozšíření Flux, použijte následující příkazy.
# 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
Identita úloh v clusterech Kubernetes s podporou arc a clusterech AKS
Konfigurace fluxu můžete vytvářet v clusterech s povolenou identitou úloh. Konfigurace fluxu v clusterech AKS s povolenou identitou úloh se podporují od microsoft.flux verze 1.8.0 a v clusterech s podporou Azure Arc s povolenou identitou úloh počínaje verzí microsoft.flux v.1.15.1.
Pokud chcete vytvořit konfigurace fluxu v clusterech s povolenou identitou úloh, upravte rozšíření, jak je znázorněno v následujících krocích.
Načtěte adresu URL vystavitele OIDC pro cluster AKS nebo cluster Kubernetes s podporou Arc.
Vytvořte spravovanou identitu a poznamenejte si ID klienta a ID tenanta.
Pomocí následujícího příkazu vytvořte v clusteru rozšíření flux:
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>Vytvořte přihlašovací údaje federované identity pro cluster AKS nebo cluster Kubernetes s podporou Arc. Například:
# 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://AzureADTokenExchangeUjistěte se, že vlastní prostředek, který potřebuje použít identitu úlohy, nastaví hodnotu
.spec.providernaazurev manifestu. Například:apiVersion: source.toolkit.fluxcd.io/v1 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azureNezapomeňte poskytnout správná oprávnění pro identitu úlohy pro prostředek, který chcete načíst kontrolerem zdrojového kontroleru nebo kontroleru obrazu. Pokud například používáte Azure Container Registry, ujistěte se, že se použily
Container Registry Repository Reader(pro registry s podporou ABAC) neboAcrPull(pro registry bez ABAC).
Použití identity úloh s Azure DevOps
Pokud chcete používat identitu úloh s Azure DevOps, povolte následující požadavky:
- Ujistěte se, že je vaše organizace Azure DevOps připojená k Microsoft Entra.
- Podle kroků pro clustery AKS nebo clusterů Kubernetes s podporou Arc ověřte, že je ve vašem clusteru správně nastavená identita úloh.
- Vytvořte spravovanou identitu a federované přihlašovací údaje a povolte identitu pracovního zatížení na Fluxových kontrolních podech rozšíření Flux, jak bylo uvedeno v předchozí části.
- Přidejte spravovanou identitu do organizace Azure DevOps jako uživatele a ujistěte se, že má oprávnění pro přístup k úložišti Azure DevOps. Podrobný postup najdete v tématu Použití instančních objektů a spravovaných identit v Azure DevOps.
Dále nastavte zprostředkovatele konfigurace gitRepository fluxu na Azure, aby se povolilo ověřování bez přihlašovacích údajů. To je možné nakonfigurovat pomocí Bicep, šablon ARM nebo Azure CLI. Pokud například chcete poskytovatele nastavit pomocí Azure CLI, spusťte následující příkaz:
az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"
Vyřazování z provozu SSH-RSA Azure DevOps
Azure DevOps oznámila vyřazení SSH-RSA jako podporovanou metodu šifrování pro připojení k úložištím Azure pomocí SSH. Pokud pro připojení k úložištím Azure v konfiguracích Flux používáte klíče SSH, doporučujeme přejít na bezpečnější klíče RSA-SHA2-256 nebo RSA-SHA2-512.
Při srovnání konfigurací Flux se může zobrazit chybová zpráva s informací, že ssh-rsa má být zastaralé nebo není podporované. Pokud ano, aktualizujte algoritmus klíče hostitele použitý k navázání připojení SSH k úložištím Azure DevOps z fluxu source-controller a image-automation-controller (pokud je povolený) pomocí az k8s-extension update příkazu. Například:
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"
Další informace o vyřazení SSH-RSA Azure DevOps najdete v tématu Konec podpory SSH-RSA pro Azure Repos.
Odstraňte konfiguraci a rozšíření Flux
Pomocí následujících příkazů odstraňte konfigurace Fluxu a v případě potřeby rozšíření Flux.
Odstraňte konfigurace Fluxu
Následující příkaz odstraní jak prostředek fluxConfigurations v Azure, tak i objekty konfigurace Flux v clusteru. Vzhledem k tomu, že konfigurace Flux byla původně vytvořena s parametrem prune=true pro kustomizaci, všechny objekty vytvořené v clusteru založené na manifestech v úložišti Git se při odebrání konfigurace Flux odeberou. Tento příkaz ale neodebere samotné rozšíření Flux.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
Odstranění rozšíření clusteru Flux
Když odstraníte rozšíření Flux, odeberou se prostředky microsoft.flux rozšíření v Azure i objekty rozšíření Flux v clusteru.
Důležité
Před odstraněním rozšíření Flux nezapomeňte odstranit všechny konfigurace fluxu v clusteru. Odstranění rozšíření bez prvního odstranění konfigurací Flux může zanechat cluster v nestabilním stavu.
Pokud se rozšíření Flux vytvořilo automaticky při prvním vytvoření konfigurace Flux, název rozšíření je flux.
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
Návod
Tyto příkazy používají -t connectedClusters, což je vhodné pro cluster Kubernetes s podporou Azure Arc. Pro cluster AKS použijte -t managedClusters místo toho.
Další kroky
- Přečtěte si další informace o konfiguracích a GitOps.
- Naučte se používat Azure Policy k vynucování GitOps ve velkém měřítku.
- Zjistěte více o monitorování stavu a aktivity GitOps (Flux v2).