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

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 createté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ť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í 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ží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 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, , podinforedis: 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, , 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 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í:

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

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 outOfMemoryWatchvý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, infonebo 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 (errorale 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.

  1. Načtěte adresu URL vystavitele OIDC pro váš cluster.

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

  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>
    
  4. 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
    
  5. Ujistěte se, že vlastní prostředek, který potřebuje použít identitu úlohy, nastaví .spec.provider hodnotu v azure 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
    
  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, 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