Sdílet prostřednictvím


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 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

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.flux rozšíření nefunguje s clustery AKS založenými na SPN. U nových clusterů AKS vytvořených pomocí az aks create je cluster ve výchozím nastavení založený na MSI. Pokud chcete převést clustery SPN na MSI, spusťte az 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/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 už je nainstalovaný, pokud používáte Azure Cloud Shell.

    Nainstalujte kubectl místně pomocí příkazu 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, 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žít namespace obor, podívejte se na potřebné změny.
  • Dvě kustomizace jsou zadány s názvy infra a apps. Každá z nich je přidružená k cestě v úložišti.
  • Kustomizace apps závisí na infra kustomizaci. (Kustomizace infra musí být dokončena před spuštěním apps kustomizace.)
  • Nastavte prune=true na 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í:

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.

  1. Načtěte adresu URL vystavitele OIDC pro cluster AKS nebo cluster Kubernetes s podporou Arc.

  2. Vytvořte spravovanou identitu a poznamenejte si ID klienta a ID tenanta.

  3. 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>
    
  4. 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://AzureADTokenExchange
    
  5. Ujistěte se, že vlastní prostředek, který potřebuje použít identitu úlohy, nastaví hodnotu .spec.provider na azure v 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: azure
    
  6. 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, ujistěte se, že se použily Container Registry Repository Reader (pro registry s podporou ABAC) nebo AcrPull (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:

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