Megosztás a következőn keresztül:


Oktatóanyag: Alkalmazások üzembe helyezése a GitOps használatával Flux v2-vel

Ez az útmutató bemutatja, hogyan használható a GitOps egy Kubernetes-fürtben. A Flux v2-vel rendelkező GitOps fürtbővítményként engedélyezve van az Azure Arc-kompatibilis Kubernetes-fürtökben vagy az Azure Kubernetes Service- (AKS-) fürtökben. A microsoft.flux fürtbővítmény telepítése után létrehozhat egy vagy több fluxConfigurations erőforrást, amely szinkronizálja a Git-adattár forrásait a fürttel, és beállítja a fürtöt a kívánt állapotra. A GitOps segítségével a Git-adattárat használhatja a fürtkonfiguráció és az alkalmazástelepítés igazságforrásaként.

Ebben az oktatóanyagban egy példa GitOps-konfigurációt használunk két kustomizációval, így láthatja, hogyan függhet az egyik kustomizáció a másiktól. A forgatókönyvtől függően szükség szerint további kustomizációkat és függőségeket adhat hozzá.

Mielőtt belevág, szánjon egy kis időt, hogy megtudja, hogyan működik a GitOps a Fluxszal.

Tipp.

Bár az oktatóanyag forrása egy Git-adattár, a Flux más gyakori fájlforrásokat is támogat, például a Helm-adattárakat, a gyűjtőket és az Azure Blob Storage-t.

Flux-konfigurációkat bicep, ARM-sablonok vagy Terraform AzAPI-szolgáltató használatával is létrehozhat. További információ: Microsoft.KubernetesConfiguration fluxConfigurations.

Alternatív megoldásként próbálja ki az új Microsoft GitOps ArgoCD-bővítményt. Az Argo CD egy népszerű nyílt forráskódú GitOps-eszköz, amely a Flux v2-hez képest eltérő funkciókat és képességeket biztosít.

Előfeltételek

Ha a GitOps használatával szeretne alkalmazásokat üzembe helyezni a Flux v2-vel, a következőkre van szüksége:

Azure Arc-kompatibilis Kubernetes-klaszterek

Azure Kubernetes Szolgáltatás-fürtök

  • Egy MSI-alapú AKS-fürt, amely teljesen működőképes.

    Fontos

    Győződjön meg arról, hogy az AKS-fürt MSI-vel (nem SPN-vel) lett létrehozva, mert a microsoft.flux bővítmény nem működik SPN-alapú AKS-fürtökkel. Az új AKS-fürtök az aks createesetében a fürt alapértelmezés szerint MSI-alapú. Az SPN-alapú fürtök MSI-vé konvertálásához futtassa a következőt: az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. További információ: Felügyelt identitás használata az AKS-ben.

  • Olvasási és írási engedélyek az Microsoft.ContainerService/managedClusters erőforrástípushoz.

Mindkét fürttípus esetében gyakori

  • Olvasási és írási engedélyek az alábbi erőforrástípusokhoz:

    • Microsoft.KubernetesConfiguration/extensions
    • Microsoft.KubernetesConfiguration/fluxConfigurations
  • Az Azure CLI 2.15-ös vagy újabb verziója. Telepítse az Azure CLI-t , vagy a következő parancsokkal frissítsen a legújabb verzióra:

    az version
    az upgrade
    
  • A Kubernetes parancssori kliens, kubectl. kubectl az Azure Cloud Shell használata esetén már telepítve van.

    Telepítse kubectl helyileg a az aks install-cli következő paranccsal:

    az aks install-cli
    
  • A következő Azure-erőforrás-szolgáltatók regisztrálása:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.KubernetesConfiguration
    

    A regisztráció egy aszinkron folyamat, és legfeljebb 10 percet vehet igénybe. A regisztrációs folyamat figyeléséhez használja a következő parancsot:

    az provider show -n Microsoft.KubernetesConfiguration -o table
    
    Namespace                          RegistrationPolicy    RegistrationState
    ---------------------------------  --------------------  -------------------
    Microsoft.KubernetesConfiguration  RegistrationRequired  Registered
    

Verzió- és régiótámogatás

A GitOps jelenleg minden olyan régióban támogatott, amelyet az Azure Arc-kompatibilis Kubernetes támogat. A GitOps jelenleg az AKS által támogatott régiók egy részében támogatott. A GitOps szolgáltatás rendszeresen új támogatott régiókat ad hozzá.

A Flux v2 bővítmény legújabb verziója és az előző két verzió (N-2) támogatott. Általában azt javasoljuk, hogy a bővítmény legújabb verzióját használja.

A hálózatra vonatkozó követelmények

A GitOps-ügynököknek a megfelelő működés érdekében kimenő TCP-re van szükségük az adattár forrásához a 22-es (SSH) vagy a 443-as (HTTPS) porton. Az ügynököknek a következő kimenő URL-címekhez is hozzá kell férniük:

Végpont (DNS) Leírás
https://management.azure.com Az ügynök és a Kubernetes konfigurálási szolgáltatása közötti kommunikációhoz szükséges.
https://<region>.dp.kubernetesconfiguration.azure.com Az ügynök adatsíkvégpontja az állapot leküldéséhez és a konfigurációs információk lekéréséhez. <region> Függ (a korábban említett támogatott régióktól).
https://login.microsoftonline.com Az Azure Resource Manager-tokenek beolvasásához és frissítéséhez szükséges.
https://mcr.microsoft.com A Flux-vezérlők tárolórendszerképeinek lekéréséhez szükséges.

A CLI-bővítmények engedélyezése

Telepítse a legújabb k8s-configuration és k8s-extension CLI-bővítménycsomagokat:

az extension add -n k8s-configuration
az extension add -n k8s-extension

A csomagok frissítése a legújabb verziókra:

az extension update -n k8s-configuration
az extension update -n k8s-extension

Az összes telepített Azure CLI-bővítmény és verziójuk listájának megtekintéséhez használja a következő parancsot:

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

Tipp.

Ha segítségre van szüksége a hibák elhárításához, tekintse meg az Azure Arc-kompatibilis Kubernetes-fürtök bővítményproblémáinak elhárításáról szóló GitOps (Flux v2) szakaszt.

Flux-konfiguráció alkalmazása

k8s-configuration Az Azure CLI-bővítmény vagy az Azure Portal használatával engedélyezheti a GitOpst egy AKS- vagy Arc-kompatibilis Kubernetes-fürtben. A bemutatóhoz használja a nyilvános gitops-flux2-kustomize-helm-mt adattárat .

Fontos

A bemutató adattár úgy lett kialakítva, hogy egyszerűsítse az oktatóanyag használatát, és bemutassa a főbb alapelveket. A naprakészen tartás érdekében az adattár időnként jelentős változásokat tapasztalhat verziófrissítések nyomán. Ezek a módosítások nem érintik az oktatóanyag új használatát, csak a korábbi alkalmazásokat. További információkért tekintse meg a jelentős változásra vonatkozó nyilatkozatot.

A következő példa a az k8s-configuration flux create parancs használatával alkalmaz egy Flux-konfigurációt egy fürtre, a következő értékekkel és beállításokkal.

  • A fürtöt tartalmazó erőforráscsoport az flux-demo-rg.
  • Az Azure Arc-fürt neve flux-demo-arc.
  • A fürt típusa az Azure Arc (-t connectedClusters), de ez a példa az AKS-sel (-t managedClusters) is működik.
  • A Flux-konfiguráció neve a következő cluster-config: .
  • A konfiguráció telepítésének névtere a következő cluster-config: .
  • A nyilvános Git-adattár URL-címe https://github.com/Azure/gitops-flux2-kustomize-helm-mt.
  • A Git-tár ága main.
  • A konfiguráció hatóköre: cluster. Ez a hatókör engedélyeket ad az operátoroknak a teljes fürtön belüli módosítások végrehajtásához. Az oktatóanyag hatókörének használatához namespacetekintse meg a szükséges módosításokat.
  • Két kustomizáció van megadva névvel infra és apps. Mindegyik egy elérési úthoz van társítva az adattárban.
  • A apps kustomizáció a infra kustomizációtól függ. (A infra testreszabásnak be kell fejeződnie, mielőtt a apps testreszabás futna.)
  • Állítsa be prune=true mindkét kustomizációt. Ez a beállítás biztosítja, hogy a fürtre telepített Flux-objektumok törlődjenek, ha eltávolítják őket az adattárból, vagy ha a Flux-konfigurációt vagy a kustomizációkat törlik.
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"\]

A microsoft.flux bővítmény telepítve van a fürtre (ha még nem volt telepítve egy korábbi GitOps-telepítésben).

Tipp.

A az k8s-configuration flux create parancs üzembe helyezi a microsoft.flux bővítményt a fürtben, és létrehozza a konfigurációt. Bizonyos esetekben érdemes lehet külön létrehozni a fluxusbővítmény-példányt a konfigurációs erőforrások létrehozása előtt. Ehhez a az k8s-extension create paranccsal hozza létre a bővítmény egy példányát a fürtön.

Amikor a fluxuskonfiguráció először telepítve van, az kezdeti megfelelőségi állapot Pending vagy Non-compliant lehet, mert az egyeztetés még folyamatban van. Egy perc múlva újra lekérdezheti a konfigurációt a végleges megfelelőségi állapot megtekintéséhez.

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Az üzembe helyezés sikerességének ellenőrzéséhez futtassa a következő parancsot:

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Sikeres üzembe helyezés esetén a következő névterek jönnek létre:

  • flux-system: A Flux-bővítményvezérlőket tárolja.
  • cluster-config: A Flux konfigurációs objektumait tárolja.
  • nginx, , podinforedis: A Git-adattár jegyzékfájljaiban leírt számítási feladatok névterei.

A névterek megerősítéséhez futtassa a következő parancsot:

kubectl get namespaces

A flux-system névtér tartalmazza a Flux-bővítmény objektumait:

  • Azure Flux-vezérlők: fluxconfig-agent, fluxconfig-controller
  • OSS Flux-vezérlők: source-controller, kustomize-controller, , helm-controllernotification-controller

A Flux-ügynöknek és a vezérlő podoknak futó állapotban kell lenniük. Ezt a következő paranccsal erősítse meg:

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

A névtér cluster-config fluxus konfigurációs objektumokkal rendelkezik.

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

Az alábbi parancsokkal erősítse meg a konfiguráció egyéb részleteit.

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

A számítási feladatok a Git-adattárban lévő jegyzékekből vannak üzembe helyezve.

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

Annak meghatározása, hogy mely vezérlőket telepítsék a Flux fürtbővítménnyel.

Bizonyos esetekben érdemes lehet módosítani, hogy mely Flux-vezérlők legyenek telepítve a Flux-fürtbővítménnyel.

A source, helm, kustomizeés notification Flux vezérlők alapértelmezés szerint telepítve vannak. A Git-adattár frissítéséhez használt vezérlőket és image-automation vezérlőket, amikor új tárolólemezképek érhetők el, explicit módon engedélyezni kell.image-reflector

A parancs használatával k8s-extension módosíthatja az alapértelmezett beállításokat:

  • --config source-controller.enabled=<true/false> (alapértelmezett true)
  • --config helm-controller.enabled=<true/false> (alapértelmezett true)
  • --config kustomize-controller.enabled=<true/false> (alapértelmezett true)
  • --config notification-controller.enabled=<true/false> (alapértelmezett true)
  • --config image-automation-controller.enabled=<true/false> (alapértelmezett false)
  • --config image-reflector-controller.enabled=<true/false> (alapértelmezett false)

Az értesítések letiltásához például beállíthatja a következőt notification-controller.enabledfalse: .

Ez a példaparancs telepíti a image-reflector és a image-automation vezérlőket. Ha a Flux-bővítmény automatikusan jött létre a Flux-konfiguráció első létrehozásakor, a bővítmény neve .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

AKS-fürtök hitelesítési módszereként a Kubelet-identitás használata

Az AKS-fürtök esetében az egyik használható hitelesítési mód a kubelet-identitás. Az AKS alapértelmezés szerint saját kubelet-identitást hoz létre a felügyelt erőforráscsoportban. Ha szeretné, használhat előre létrehozott kubelet felügyelt identitást. Ehhez adja hozzá a paramétert --config useKubeletIdentity=true a Flux-bővítmény telepítésekor.

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true

A Red Hat OpenShift előkészítési útmutatója

A Flux-vezérlők nem root Biztonsági Kontextus Korlátozást igényelnek a podok klaszterre való megfelelő telepítéséhez. Ezeket a korlátozásokat a bővítmény üzembe helyezése előtt hozzá kell adni a fürthöz 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

A Flux előkészítéséhez szükséges OpenShift-útmutatóról további információt a Flux dokumentációjában talál.

Paraméterek használata

A Flux számos paramétert támogat a különböző forgatókönyvek engedélyezéséhez. A Flux által támogatott paraméterek leírását a flux hivatalos dokumentációjában találja. Az Azure Flux még nem támogatja az összes paramétert. Tudassa velünk, hogy hiányzik-e egy szükséges paraméter az Azure-implementációból.

Az elérhető paraméterekről és azok használatáról további információt a GitOps (Flux v2) által támogatott paraméterekben talál.

Helyi titkos hitelesítési referencia használata

Helyi titkos hitelesítési hivatkozás használatához a titkos kódnak ugyanabban a névtérben kell lennie, ahol az fluxConfiguration üzembe helyezve van. A titkos kódnak tartalmaznia kell a forráshoz szükséges összes hitelesítési paramétert is.

További információ a titkos kódok különböző fluxConfiguration forrásokhoz való létrehozásáról: Helyi titkos kód a forrással való hitelesítéshez.

Klaszterkonfiguráció kezelése a Flux Kustomize vezérlő használatával

A Flux Kustomize vezérlő a microsoft.flux fürtbővítmény részeként van telepítve. Lehetővé teszi a fürtkonfiguráció és az alkalmazás üzembe helyezésének deklaratív kezelését a Git-adattárból szinkronizált Kubernetes-jegyzékek használatával. Ezek a Kubernetes-jegyzékek opcionálisan kustomize.yaml fájlt is tartalmazhatnak .

A használati adatokért tekintse meg a következő erőforrásokat:

Helm-diagramkiadások kezelése a Flux Helm-vezérlővel

A Flux Helm-vezérlő a microsoft.flux fürtbővítmény részeként van telepítve. Lehetővé teszi a Helm-diagramkiadások deklaratív kezelését a Git-adattárban karbantartott Kubernetes-jegyzékekkel.

A használati adatokért tekintse meg a következő erőforrásokat:

Tipp.

Mivel a Helm hogyan kezeli az indexfájlokat, a Helm-diagramok feldolgozása költséges művelet, és nagy memóriaigényű lehet. Ennek eredményeképpen nagy számú Helm-diagram egyidejű egyeztetése memóriakiugrásokat és OOMKilled hibákat okozhat. A vezérlő alapértelmezés szerint 1Gi-ra állítja a memóriakorlátot, a memóriakérelmét pedig 64Mi értékre. A microsoft.flux bővítmény telepítése után futtassa a következő parancsot a korlát és a nagy számú Helm-diagram egyeztetése miatti kérések növeléséhez:

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

A GitRepository forrásának használata Helm-diagramokhoz

Ha a Helm-diagramok a GitRepository forrásban vannak tárolva, amelyet az fluxConfigurations erőforrás részeként konfigurált, jelezheti, hogy ezt a forrást kell használni a Helm-diagramok forrásaként, ha a clusterconfig.azure.com/use-managed-source: "true" elemet hozzáadja a HelmRelease.yaml fájlhoz, ahogyan az az alábbi példában látható:

---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: somename
  namespace: somenamespace
  annotations:
    clusterconfig.azure.com/use-managed-source: "true"
spec:
  ...

Ha ezt a jelölést használja, az üzembe helyezett HelmRelease ki lesz egészítve a konfigurált forrásra mutató hivatkozással. Jelenleg csak GitRepository a forrás támogatott.

Helm-eltolódás észlelése

A Helm-kiadások eltérésészlelése alapértelmezés szerint nincs engedélyezve. Az 1.7.5-ösmicrosoft.flux kezdve az alábbi parancs futtatásával engedélyezheti a Helm-eltérésészlelést:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true 

Az építési folyamat utáni változók szigorú cseréje

A buildelés utáni változó szigorú helyettesítése az 1.13.1-től microsoft.flux kezdve érhető el.

Ha olyan Flux-bővítményt szeretne létrehozni, amelyen engedélyezve van a szigorú helyettesítési szabályzat, futtassa ezt a parancsot:

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

Ha frissíteni szeretne egy meglévő Flux-bővítményt a szigorú helyettesítési szabályzat engedélyezéséhez, futtassa a következő parancsot:

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ális skálázás

A függőleges skálázás támogatása az 1.12.0-s verziótól microsoft.flux kezdve érhető el. Jelenleg csak a Flux vertikális skálázási dokumentációjában leírt paraméterek támogatottak natív módon. További paraméterek manuálisan is alkalmazhatók a fürtre.

A vezérlők erőforráskorlátainak az aktuális korlátokon túli növeléséhez futtassa ezt a parancsot, és szükség szerint módosítsa az adott erőforrástípust és értéket:

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

A párhuzamosan végrehajtható egyeztetések számának növeléséhez futtassa a következő parancsot:

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

A memóriabeli build engedélyezéséhez futtassa a következő parancsot:

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

Az 1.7.5-ös verziótól microsoft.flux kezdve engedélyezheti a Helm OOM-órát. További információ: Helm engedélyezése az OOM-észlelés közelében.

A funkció engedélyezésekor mindenképpen tekintse át a lehetséges szervizelési stratégiákat , és alkalmazza őket szükség szerint.

Az OOM-figyelő engedélyezéséhez futtassa a következő parancsot:

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

Ha nem ad meg értékeket memoryThreshold , az outOfMemoryWatchalapértelmezett memóriaküszöb 95%-ra van állítva, és a memória kihasználtságának ellenőrzése 500 ms-ra van állítva.

Konfigurálható naplószintű paraméterek

A Flux-vezérlők alapértelmezett beállítása log-level, amely info értékre van állítva. Az 1.8.3-as verziótól microsoft.flux kezdve az alábbi parancs használatával módosíthatja ezeket az k8s-extension alapértelmezett beállításokat:

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

Az érvényes értékek a következők debug: , infovagy error. Például az log-level módosításához az source-controller és kustomize-controller esetében használja a következő parancsot:

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 Az 1.9.1-től kezdve a fluxconfig-agent és fluxconfig-controller támogatja a info és error naplószinteket (de nem debug). A beállítások módosításához használja a k8s-extension következő parancsot:

--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>

A következő parancs például a következőre változik log-levelerror:

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

Flux-bővítmény podok annotációjának konfigurálása.

Az Azure Firewalltól eltérő megoldás konfigurálásakor hálózati és FQDN (teljes tartománynév) / alkalmazásszabályokra van szükség egy AKS-fürt számára. microsoft.flux Az 1.11.1-től kezdődően a Flux vezérlő podjai mostantól beállíthatják a jegyzetet kubernetes.azure.com/set-kube-service-host-fqdn a pod specifikációiban. Ez a megjegyzés lehetővé teszi az API Server tartománynevének forgalmát még akkor is, ha 7. rétegbeli tűzfal van jelen, megkönnyítve az üzembe helyezést a bővítmények telepítése során. Ha ezt a megjegyzést a Flux-bővítmény használatakor szeretné konfigurálni, használja az alábbi parancsokat.

# 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

Számítási feladatok identitása Arc-kompatibilis Kubernetes-fürtökben és AKS-fürtökben

Flux-konfigurációkat olyan fürtökben hozhat létre, amelyeken engedélyezve van a számítási feladat identitása. A számítási feladat identitással engedélyezett AKS-fürtök fluxuskonfigurációi támogatottak az microsoft.flux v1.8.0-tól kezdve, és az Azure Arc-kompatibilis fürtökben engedélyezett számítási feladat identitás esetén pedig az microsoft.flux v1.15.1-től.

Ha Flux-konfigurációkat szeretne létrehozni olyan fürtökben, amelyeken engedélyezve van a számítási feladat identitása, módosítsa a bővítményt az alábbi lépésekben látható módon.

  1. Szerezze meg az OIDC-kiállító URL-címét az AKS-fürthez vagy az Arc-kompatibilis Kubernetes-fürthez.

  2. Hozzon létre egy felügyelt identitást , és jegyezze fel annak ügyfél-azonosítóját és bérlőazonosítóját.

  3. Hozza létre a fluxusbővítményt a fürtön az alábbi paranccsal:

    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. Federált identitás-hitelesítőt hozhat létre az AKS-fürthöz vagy az Arc-kompatibilis Kubernetes-fürthöz. Példa:

    # 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. Győződjön meg arról, hogy a munkaterhelés-azonosság használatához szükséges egyéni erőforrás beállítja a .spec.provider értéket azure a jegyzékben. Példa:

    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. Ügyeljen arra, hogy megfelelő engedélyeket adjon a számítási feladatok identitásához ahhoz az erőforráshoz, amelyet le szeretne húzni a forrásvezérlőhöz vagy a képvisszaverő vezérlőhöz. Ha például az Azure Container Registryt használja, győződjön meg arról, hogy Container Registry Repository Reader ( ABAC-kompatibilis nyilvántartások esetén) vagy AcrPull (nem ABAC-regisztrációk esetén) alkalmazva lett.

Számítási feladatok identitásának használata az Azure DevOpsszal

Ha számítási feladat identitását szeretné használni az Azure DevOpsban, engedélyezze a következő előfeltételeket:

Ezután állítsa a fluxus konfigurációjának szolgáltatóját gitRepository "azure"-ra a hitelesítő adatok nélküli hitelesítés engedélyezéséhez. Ez a Bicep, ARM-sablonok vagy az Azure CLI használatával konfigurálható. Ha például az Azure CLI használatával szeretné beállítani a szolgáltatót, futtassa a következő parancsot:

az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"

Az Azure DevOps SSH-RSA funkció megszüntetése

Az Azure DevOps bejelentette, hogy az SSH-RSA elavul , mint támogatott titkosítási módszer az Azure-adattárakhoz való SSH használatával való csatlakozáshoz. Ha SSH-kulcsokkal csatlakozik az Azure-adattárakhoz Flux-konfigurációkban, javasoljuk, hogy a biztonságosabb RSA-SHA2-256 vagy RSA-SHA2-512 kulcsokra lépjen.

A Flux-konfigurációk egyeztetésekor hibaüzenet jelenhet meg, amely azt jelzi, hogy az ssh-rsa elavult vagy nem támogatott. Ha igen, frissítse az Azure DevOps-adattárakhoz létrehozott SSH-kapcsolatokhoz használt gazdagépkulcs-algoritmust a Flux source-controller és image-automation-controller (ha engedélyezve van) a az k8s-extension update parancs használatával. Példa:

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"

További információ az Azure DevOps SSH-RSA elavulásáról: Az Azure-adattárak SSH-RSA támogatásának megszüntetése.

A Flux-konfiguráció és -bővítmény törlése

Az alábbi parancsokkal törölheti a Flux-konfigurációkat, és szükség esetén magát a Flux-bővítményt.

A Flux-konfigurációk törlése

Az alábbi parancs törli az fluxConfigurations Azure-beli erőforrást, valamint a fürtben lévő Flux konfigurációs objektumokat is. Mivel a Flux-konfigurációt eredetileg a prune=true kustomizáció paraméterével hozták létre, a Flux-konfiguráció eltávolításakor a rendszer eltávolítja a fürtben a Git-adattár jegyzékfájljai alapján létrehozott összes objektumot. Ez a parancs azonban nem távolítja el magát a Flux-bővítményt.

az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes

A Flux-fürt bővítményének törlése

Amikor törli a Flux-bővítményt, az microsoft.flux Azure-beli bővítményerőforrás és a kubernetes-fürtben lévő Flux-bővítményobjektumok is eltávolításra kerülnek.

Fontos

A Flux-bővítmény törlése előtt győződjön meg róla, hogy törli a klaszter összes Flux-konfigurációját. Ha a bővítményt anélkül törölné, hogy előbb törölné a Flux-konfigurációkat, a fürt instabil állapotba kerülhet.

Ha a Flux-bővítmény automatikusan jött létre a Flux-konfiguráció első létrehozásakor, a bővítmény neve .flux

az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes

Tipp.

Ezek a parancsok az Azure Arc-kompatibilis Kubernetes-fürtökhöz megfelelő parancsokat használják -t connectedClusters. AKS-fürtökhöz használja inkább -t managedClusters.

Következő lépések