Kurz: Nasazení aplikací pomocí GitOps s flux v2
Tento kurz popisuje, jak používat GitOps v clusteru Kubernetes. GitOps s flux v2 je povolený jako rozšíření clusteru v clusterech Kubernetes s podporou 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 úložiště Git do clusteru, a odsouhlasit cluster s požadovaným stavem. 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é. Podle potřeby můžete podle potřeby přidat další kustomizace a závislosti.
Než se pustíte do práce, chvíli se dozvíte, jak GitOps s Fluxem funguje koncepčně.
Tip
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.
Důležité
Rozšíření microsoft.flux
vydalo hlavní verzi 1.0.0. To zahrnuje funkci s více tenanty. Pokud máte existující konfigurace GitOps Flux v2, které používají předchozí verzi microsoft.flux
rozšíření, můžete upgradovat na nejnovější verzi ručně pomocí Azure CLI: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE>
(používá se -t connectedClusters
pro clustery Arc a -t managedClusters
pro clustery AKS).
Požadavky
K nasazení aplikací pomocí GitOps s Flux v2 potřebujete:
Pro clustery Kubernetes s podporou Azure Arc
Připojený cluster Kubernetes s podporou Azure Arc, který je spuštěný. Clustery založené na ARM64 se podporují od
microsoft.flux
verze 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í ke čtení a zápisu pro
Microsoft.Kubernetes/connectedClusters
typ prostředku
Pro clustery Azure Kubernetes Service
Cluster AKS založený na MSI, který je spuštěný a spuštěný.
Důležité
Ujistěte se, že je cluster AKS vytvořený pomocí MSI (nikoli hlavního
microsoft.flux
názvu služby), protože rozšíření nebude fungovat s clustery AKS založenými na SPN. U nových clusterů AKS vytvořených pomocíaz aks create
této služby je cluster ve výchozím nastavení založený na MSI. U již vytvořených clusterů založených na SPN, které je potřeba převést na MSI, spusťteaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
příkaz . Další informace najdete v tématu Použití spravované identity v AKS.Oprávnění ke čtení a zápisu pro
Microsoft.ContainerService/managedClusters
typ prostředku
Společné pro oba typy clusterů
Oprávnění ke čtení a zápisu u těchto typů prostředků:
Microsoft.KubernetesConfiguration/extensions
Microsoft.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 upgrade
Klient příkazového řádku Kubernetes, kubectl.
kubectl
je už nainstalovaný, pokud používáte Azure Cloud Shell.Pomocí příkazu nainstalujte
kubectl
místněaz aks install-cli
:az aks install-cli
Registrace 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.KubernetesConfiguration
Registrace je asynchronní proces a měla by se 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é podporuje AKS. 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í.
Síťové požadavky
Aby mohli fungovat, vyžadují agenti GitOps odchozí (výchozí přenos dat) TCP do zdroje ú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 mohl komunikovat 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žaduje se pro vyžádání imagí kontejneru pro kontrolery Flux. |
Povolení rozšíření rozhraní příkazového řádku
Nainstalujte nejnovější k8s-configuration
balíčky rozšíření rozhraní příkazového řádku a k8s-extension
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
Tip
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 některé klíčové principy. Aby bylo možné udržovat aktuální, může se v úložišti občas dostat zásadní změny z upgradů verzí. Tyto změny nebudou mít vliv na vaši novou aplikaci tohoto kurzu, pouze předchozí aplikace kurzů, které nebyly odstraněny. Pokud chcete zjistit, jak tyto změny zpracovat, podívejte se na právní omezení způsobující změnu.
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
. - Obor názvů 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 kurzu použítnamespace
obor, podívejte se na potřebné změny. - Dvě kustomizace jsou zadány s názvy
infra
aapps
. Každá z nich je přidružená k cestě v úložišti. - Kustomizace
apps
závisí nainfra
kustomizaci. (Kustomizaceinfra
musí být dokončena před spuštěnímapps
kustomizace.) - Nastavte
prune=true
na obě kustomizace. Toto nastavení zajistí, že se objekty, které flux nasazené do clusteru nasadí, vyčistí, pokud jsou odebrány z úložiště nebo pokud dojde k odstranění konfigurace fluxu nebo kustomizace.
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).
Tip
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.
Při první instalaci konfigurace fluxu může být Pending
počáteční stav dodržování předpisů nebo Non-compliant
proto, že stále probíhá odsouhlasení. 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
: Obory názvů 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
Obor flux-system
názvů 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
, , helm
kustomize
a notification
Flux jsou ve výchozím nastavení nainstalovány. Řadiče image-automation
používané image-reflector
k 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 k sadě OpenShift pro onboarding 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í ověřování tajných kódů, musí tajný klíč existovat ve stejném oboru názvů, ve kterém fluxConfiguration
se nasadí. 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
- Vodítka Kustomize
Správa verzí chartů Helm pomocí kontroleru 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í:
- Flux pro uživatele Helmu
- Správa verzí Helmu
- Migrace na Flux v2 Helm z nástroje Flux v1 Helm
- Ovladač Flux Helm
Tip
Vzhledem k tomu, jak Helm zpracovává indexové soubory, je zpracování grafů Helm nákladnou operací a může mít velmi 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/v2beta1
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
Při použití této poznámky se nasazená verze HelmRelease opraví 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í povolená. 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 k dispozici 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
Od verze 1.7.5 můžete povolit helmové hodinky 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.
Pokud chcete povolit kukátko 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 a memoryThreshold
outOfMemoryWatch
výchozí prahová hodnota paměti je nastavená na 95 %, s intervalem, ve kterém se má zkontrolovat využití paměti 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
, info
nebo error
. Pokud chcete například změnit log-level
for the source-controller
and 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
Počínaje verzí 1.9.1fluxconfig-agent
a fluxconfig-controller
úrovněmi protokolu info
(error
ale nedebug
).microsoft.flux
Můžete je upravit pomocí příkazu k8s-extension následujícím způsobem:
--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
Vyřazení Azure DevOps SSH-RSA
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 spojování konfigurací fluxu se může zobrazit chybová zpráva s informací, že se ssh-rsa chystá zastaralá nebo je nepodporovaná. 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. Pří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 v Azure DevOps najdete v tématu Ukončení podpory SSH-RSA pro Azure Repos.
Konfigurace poznámek u podů rozšíření Flux
Při konfiguraci jiného řešení než Azure Firewall se pro cluster AKS vyžadují pravidla sítě a plně kvalifikovaného názvu domény nebo 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ů. To umožňuje provoz do názvu domény serveru API, i když je k dispozici brána 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 AKS
microsoft.flux
Počínaje verzí 1.8.0 můžete vytvářet konfigurace Flux v clusterech AKS s povolenou identitou úloh. Uděláte to tak, že upravíte rozšíření flux, jak je znázorněno v následujících krocích.
Načtěte adresu URL vystavitele OIDC pro váš cluster.
Vytvořte spravovanou identitu a poznamenejte si její ID klienta.
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>
Vytvořte přihlašovací údaje federované identity. Pří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 "${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
Ujistěte se, že vlastní prostředek, který potřebuje použít identitu úlohy, nastaví
.spec.provider
hodnotu vazure
manifestu. Příklad:apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azure
Nezapomeň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,
AcrPull
potřebujete oprávnění.
Odstranění konfigurace a rozšíření Flux
Pomocí následujících příkazů odstraňte konfigurace fluxu a v případě potřeby samotné rozšíření Flux.
Odstranění konfigurací fluxu
Následující příkaz odstraní fluxConfigurations
prostředek v Azure 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í fluxu může opustit 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
Tip
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.
- Seznamte se se stavem a aktivitou GitOps (Flux v2).