GitOps Flux v2-configuraties met AKS en Kubernetes met Azure Arc

Azure biedt configuratiebeheermogelijkheden met behulp van GitOps in Azure Kubernetes Service (AKS) en Kubernetes-clusters met Azure Arc. U kunt GitOps eenvoudig in deze clusters inschakelen en gebruiken.

Met GitOps declareert u de gewenste status van uw Kubernetes-clusters in bestanden in Git-opslagplaatsen. De Git-opslagplaatsen kunnen de volgende bestanden bevatten:

Omdat deze bestanden worden opgeslagen in een Git-opslagplaats, hebben ze versiebeheer en kunnen wijzigingen tussen versies eenvoudig worden bijgehouden. Kubernetes-controllers worden uitgevoerd in de clusters en stemmen de clusterstatus voortdurend af met de gewenste status die is gedeclareerd in de Git-opslagplaats. Deze operators halen de bestanden op uit de Git-opslagplaatsen en passen de gewenste status toe op de clusters. De operators zorgen er ook continu voor dat het cluster in de gewenste status blijft.

GitOps in Kubernetes met Azure Arc of Azure Kubernetes Service maakt gebruik van Flux, een populaire opensource-hulpprogrammaset. Flux biedt ondersteuning voor algemene bestandsbronnen (Git- en Helm-opslagplaatsen, buckets, Azure Blob Storage) en sjabloontypen (YAML, Helm en Kustomize). Flux ondersteunt naast andere functies ook multitenancy- en implementatieafhankelijkheidsbeheer.

Flux-clusterextensie

Diagram met de installatie van de Flux-extensie voor Kubernetes-cluster met Azure Arc.

Diagram met de installatie van de Flux-extensie voor Azure Kubernetes Service cluster.

GitOps wordt ingeschakeld in een Kubernetes- of AKS-cluster met Azure Arc als een Microsoft.KubernetesConfiguration/extensions/microsoft.fluxclusterextensieresource . De microsoft.flux extensie moet in het cluster worden geïnstalleerd voordat er een of meer fluxConfigurations kunnen worden gemaakt. De extensie wordt automatisch geïnstalleerd wanneer u de eerste Microsoft.KubernetesConfiguration/fluxConfigurations in een cluster maakt, of u kunt deze handmatig installeren met behulp van de portal, de Azure CLI (az k8s-extension create --extensionType=microsoft.flux), de ARM-sjabloon of REST API.

Versieondersteuning

De meest recente versie van de Flux v2-extensie en de twee vorige versies (N-2) worden ondersteund. Over het algemeen raden we u aan de meest recente versie van de extensie te gebruiken.

Notitie

Uiteindelijk stopt Azure met de ondersteuning van GitOps met Flux v1, dus we raden u aan zo snel mogelijk te migreren naar Flux v2 .

Controllers

De microsoft.flux extensie installeert standaard de Flux-controllers (Source, Kustomize, Helm, Notification) en de FluxConfig CRD, fluxconfig-agent en fluxconfig-controller. U kunt bepalen welke van deze controllers wordt geïnstalleerd en u kunt optioneel de Flux-controllers voor installatiekopieënautomatisering en afbeeldingsreflector installeren, die functionaliteit bieden voor het bijwerken en ophalen van Docker-installatiekopieën.

  • Flux-broncontroller: controleert de source.toolkit.fluxcd.io aangepaste resources. Verwerkt de synchronisatie tussen de Git-opslagplaatsen, Helm-opslagplaatsen, Buckets en Azure Blob-opslag. Verwerkt autorisatie met de bron voor privé-Git-, Helm-opslagplaatsen en Azure Blob Storage-accounts. Hiermee worden de meest recente wijzigingen in de bron weergegeven via een tar-archiefbestand.

  • Flux Kustomize-controller: hiermee worden de kustomization.toolkit.fluxcd.io aangepaste resources bewaakt. Kustomize- of onbewerkte YAML-bestanden van de bron op het cluster toepassen.

  • Flux Helm-controller: Hiermee worden de helm.toolkit.fluxcd.io aangepaste resources bewaakt. Haalt de gekoppelde grafiek op uit de Bronbron van de Helm-opslagplaats die door de broncontroller wordt weergegeven. Hiermee maakt u de HelmChart aangepaste resource en past u de met de HelmRelease opgegeven versie, naam en door de klant gedefinieerde waarden toe op het cluster.

  • Flux Notification Controller: Controleert de notification.toolkit.fluxcd.io aangepaste resources. Ontvangt meldingen van alle Flux-controllers. Pushmeldingen naar door de gebruiker gedefinieerde webhook-eindpunten.

  • Definities van aangepaste Flux-resources:

    • kustomizations.kustomize.toolkit.fluxcd.io
    • imagepolicies.image.toolkit.fluxcd.io
    • imagerepositories.image.toolkit.fluxcd.io
    • imageupdateautomations.image.toolkit.fluxcd.io
    • alerts.notification.toolkit.fluxcd.io
    • providers.notification.toolkit.fluxcd.io
    • receivers.notification.toolkit.fluxcd.io
    • buckets.source.toolkit.fluxcd.io
    • gitrepositories.source.toolkit.fluxcd.io
    • helmcharts.source.toolkit.fluxcd.io
    • helmrepositories.source.toolkit.fluxcd.io
    • helmreleases.helm.toolkit.fluxcd.io
    • fluxconfigs.clusterconfig.azure.com
  • FluxConfig CRD: aangepaste resourcedefinitie voor fluxconfigs.clusterconfig.azure.com aangepaste resources die Kubernetes-objecten definiëren FluxConfig .

  • fluxconfig-agent: Verantwoordelijk voor het controleren van Azure op nieuwe of bijgewerkte fluxConfigurations resources en voor het starten van de bijbehorende Flux-configuratie in het cluster. Is ook verantwoordelijk voor het pushen van Flux-statuswijzigingen in het cluster naar Azure voor elke fluxConfigurations resource.

  • fluxconfig-controller: controleert de fluxconfigs.clusterconfig.azure.com aangepaste resources en reageert op wijzigingen met nieuwe of bijgewerkte configuratie van GitOps-machines in het cluster.

Notitie

De microsoft.flux extensie wordt geïnstalleerd in de flux-system naamruimte en heeft een clusterbreed bereik. De optie voor het installeren van deze extensie in het naamruimtebereik is niet beschikbaar en een poging om te installeren op naamruimtebereik mislukt met 400-fout.

Flux-configuraties

Diagram met de installatie van een Flux-configuratie in een Kubernetes- of Azure Kubernetes Service-cluster met Azure Arc.

U maakt Flux-configuratieresources (Microsoft.KubernetesConfiguration/fluxConfigurations) om GitOps-beheer van het cluster mogelijk te maken vanuit uw Git-opslagplaatsen, bucketbronnen of Azure Blob Storage. Wanneer u een fluxConfigurations resource maakt, worden de waarden die u opgeeft voor de parameters, zoals de Doel-Git-opslagplaats, gebruikt voor het maken en configureren van de Kubernetes-objecten die het GitOps-proces in dat cluster mogelijk maken. Om gegevensbeveiliging te garanderen, worden de fluxConfigurations resourcegegevens versleuteld at-rest opgeslagen in een Azure Cosmos DB-database door de clusterconfiguratieservice.

De fluxconfig-agent agents en fluxconfig-controller , geïnstalleerd met de microsoft.flux extensie, beheren het GitOps-configuratieproces.

fluxconfig-agent is verantwoordelijk voor:

  • Hiermee wordt de Kubernetes Configuration-gegevensvlakservice gecontroleerd op nieuwe of bijgewerkte fluxConfigurations resources.
  • Aangepaste resources in het cluster maken of FluxConfig bijwerken met de configuratiegegevens.
  • Bekijkt FluxConfig aangepaste resources en pusht statuswijzigingen terug naar de gekoppelde Azure fluxConfiguration-resources.

fluxconfig-controller is verantwoordelijk voor:

  • Controleert statusupdates voor de aangepaste Flux-resources die zijn gemaakt door de beheerde fluxConfigurations.
  • Hiermee maakt u een persoonlijk/openbaar sleutelpaar dat bestaat voor de levensduur van de fluxConfigurations. Deze sleutel wordt gebruikt voor verificatie als de URL is gebaseerd op SSH en als de gebruiker geen eigen persoonlijke sleutel opgeeft tijdens het maken van de configuratie.
  • Hiermee maakt u een aangepast verificatiegeheim op basis van door de gebruiker verstrekte persoonlijke sleutel/http basic-auth/known-hosts/no-auth-gegevens.
  • Hiermee stelt u RBAC in (serviceaccount ingericht, rolbinding gemaakt/toegewezen, rol gemaakt/toegewezen).
  • Maakt GitRepository of Bucket aangepaste resources en Kustomization aangepaste resources op basis van de informatie in de FluxConfig aangepaste resource.

Elke fluxConfigurations resource in Azure wordt gekoppeld in een Kubernetes-cluster met één Flux GitRepository - of Bucket aangepaste resource en een of meer Kustomization aangepaste resources. Wanneer u een fluxConfigurations resource maakt, geeft u onder andere de URL naar de bron op (Git-opslagplaats, Bucket of Azure Blob Storage) en het synchronisatiedoel in de bron voor elke Kustomization. U kunt afhankelijkheden tussen Kustomization aangepaste resources configureren om de implementatievolgorde te beheren. U kunt ook meerdere resources met een naamruimtebereik fluxConfigurations op hetzelfde cluster maken voor verschillende toepassingen en app-teams.

Notitie

De fluxconfig-agent monitors voor nieuwe of bijgewerkte fluxConfiguration resources in Azure. De agent vereist connectiviteit met Azure voor de gewenste status van de fluxConfiguration die moet worden toegepast op het cluster. Als de agent geen verbinding kan maken met Azure, is er een vertraging bij het aanbrengen van de wijzigingen in het cluster totdat de agent verbinding kan maken. Als het cluster langer dan 48 uur wordt losgekoppeld van Azure, treedt er een time-out op voor de aanvraag voor het cluster en moeten de wijzigingen opnieuw worden toegepast in Azure.

Gevoelige invoer van klanten, zoals persoonlijke sleutel en token/wachtwoord, worden minder dan 48 uur opgeslagen in de Kubernetes Configuration-service. Als u een van deze waarden in Azure bijwerkt, moet u ervoor zorgen dat uw clusters binnen 48 uur verbinding maken met Azure.

Als u ondersteuning voor private link hebt toegevoegd aan een Kubernetes-cluster met Azure Arc, werkt de microsoft.flux extensie out-of-the-box met communicatie naar Azure. Voor verbindingen met uw Git-opslagplaats, Helm-opslagplaats of andere eindpunten die nodig zijn om uw Kubernetes-manifesten te implementeren, moet u deze eindpunten inrichten achter uw firewall of ze vermelden in uw firewall, zodat de Flux-broncontroller ze kan bereiken.

Gegevenslocatie

De Azure GitOps-service (Azure Kubernetes Configuration Management) slaat klantgegevens op/verwerkt deze. Standaard worden klantgegevens gerepliceerd naar de gekoppelde regio. Voor de regio's Singapore, Oost-Azië en Brazilië - zuid worden alle klantgegevens opgeslagen en verwerkt in de regio.

Flux-configuraties op schaal toepassen

Omdat Azure Resource Manager uw configuraties beheert, kunt u het maken van dezelfde configuratie automatiseren voor alle Kubernetes-resources met Azure Kubernetes Service en Azure Arc met behulp van Azure Policy, binnen het bereik van een abonnement of een resourcegroep. Deze afdwinging op schaal zorgt ervoor dat specifieke configuraties consistent worden toegepast op hele groepen clusters.

Meer informatie over het gebruik van het ingebouwde beleid voor Flux v2.

Parameters

Zie de officiële Flux-documentatie voor een beschrijving van alle parameters die door Flux worden ondersteund. Flux in Azure biedt nog geen ondersteuning voor alle parameters. Laat het ons weten als er een parameter ontbreekt die u nodig hebt in de Azure-implementatie.

U kunt de volledige lijst met parameters bekijken die door de k8s-configuration flux Azure CLI-opdracht worden ondersteund met behulp van de -h parameter :

az k8s-configuration flux -h

Group
    az k8s-configuration flux : Commands to manage Flux v2 Kubernetes configurations.

Subgroups:
    deployed-object : Commands to see deployed objects associated with Flux v2 Kubernetes
                      configurations.
    kustomization   : Commands to manage Kustomizations associated with Flux v2 Kubernetes
                      configurations.

Commands:
    create          : Create a Flux v2 Kubernetes configuration.
    delete          : Delete a Flux v2 Kubernetes configuration.
    list            : List all Flux v2 Kubernetes configurations.
    show            : Show a Flux v2 Kubernetes configuration.
    update          : Update a Flux v2 Kubernetes configuration.

Dit zijn de parameters voor de CLI-opdracht k8s-configuration flux create :

az k8s-configuration flux create -h

This command is from the following extension: k8s-configuration

Command
    az k8s-configuration flux create : Create a Flux v2 Kubernetes configuration.

Arguments
    --cluster-name -c   [Required] : Name of the Kubernetes cluster.
    --cluster-type -t   [Required] : Specify Arc connected clusters or AKS managed clusters.
                                     Allowed values: connectedClusters, managedClusters.
    --name -n           [Required] : Name of the flux configuration.
    --resource-group -g [Required] : Name of resource group. You can configure the default group
                                     using `az configure --defaults group=<name>`.
    --url -u            [Required] : URL of the source to reconcile.
    --bucket-insecure              : Communicate with a bucket without TLS.  Allowed values: false,
                                     true.
    --bucket-name                  : Name of the S3 bucket to sync.
    --container-name               : Name of the Azure Blob Storage container to sync
    --interval --sync-interval     : Time between reconciliations of the source on the cluster.
    --kind                         : Source kind to reconcile.  Allowed values: bucket, git, azblob.
                                     Default: git.
    --kustomization -k             : Define kustomizations to sync sources with parameters ['name',
                                     'path', 'depends_on', 'timeout', 'sync_interval',
                                     'retry_interval', 'prune', 'force'].
    --namespace --ns               : Namespace to deploy the configuration.  Default: default.
    --no-wait                      : Do not wait for the long-running operation to finish.
    --scope -s                     : Specify scope of the operator to be 'namespace' or 'cluster'.
                                     Allowed values: cluster, namespace.  Default: cluster.
    --suspend                      : Suspend the reconciliation of the source and kustomizations
                                     associated with this configuration.  Allowed values: false,
                                     true.
    --timeout                      : Maximum time to reconcile the source before timing out.

Auth Arguments
    --local-auth-ref --local-ref   : Local reference to a kubernetes secret in the configuration
                                     namespace to use for communication to the source.

Bucket Auth Arguments
    --bucket-access-key            : Access Key ID used to authenticate with the bucket.
    --bucket-secret-key            : Secret Key used to authenticate with the bucket.

Git Auth Arguments
    --https-ca-cert                : Base64-encoded HTTPS CA certificate for TLS communication with
                                     private repository sync.
    --https-ca-cert-file           : File path to HTTPS CA certificate file for TLS communication
                                     with private repository sync.
    --https-key                    : HTTPS token/password for private repository sync.
    --https-user                   : HTTPS username for private repository sync.
    --known-hosts                  : Base64-encoded known_hosts data containing public SSH keys
                                     required to access private Git instances.
    --known-hosts-file             : File path to known_hosts contents containing public SSH keys
                                     required to access private Git instances.
    --ssh-private-key              : Base64-encoded private ssh key for private repository sync.
    --ssh-private-key-file         : File path to private ssh key for private repository sync.

Git Repo Ref Arguments
    --branch                       : Branch within the git source to reconcile with the cluster.
    --commit                       : Commit within the git source to reconcile with the cluster.
    --semver                       : Semver range within the git source to reconcile with the
                                     cluster.
    --tag                          : Tag within the git source to reconcile with the cluster.

Global Arguments
    --debug                        : Increase logging verbosity to show all debug logs.
    --help -h                      : Show this help message and exit.
    --only-show-errors             : Only show errors, suppressing warnings.
    --output -o                    : Output format.  Allowed values: json, jsonc, none, table, tsv,
                                     yaml, yamlc.  Default: json.
    --query                        : JMESPath query string. See http://jmespath.org/ for more
                                     information and examples.
    --subscription                 : Name or ID of subscription. You can configure the default
                                     subscription using `az account set -s NAME_OR_ID`.
    --verbose                      : Increase logging verbosity. Use --debug for full debug logs.
    
Azure Blob Storage Account Auth Arguments
    --sp_client_id                 : The client ID for authenticating a service principal with Azure Blob, required for this authentication method
    --sp_tenant_id                 : The tenant ID for authenticating a service principal with Azure Blob, required for this authentication method
    --sp_client_secret             : The client secret for authenticating a service principal with Azure Blob
    --sp_client_cert               : The Base64 encoded client certificate for authenticating a service principal with Azure Blob
    --sp_client_cert_password      : The password for the client certificate used to authenticate a service principal with Azure Blob
    --sp_client_cert_send_chain    : Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the client certificate
    --account_key                  : The Azure Blob Shared Key for authentication
    --sas_token                    : The Azure Blob SAS Token for authentication
    --mi_client_id                 : The client ID of the managed identity for authentication with Azure Blob

Examples
    Create a Flux v2 Kubernetes configuration
        az k8s-configuration flux create --resource-group my-resource-group \
        --cluster-name mycluster --cluster-type connectedClusters \
        --name myconfig --scope cluster --namespace my-namespace \
        --kind git --url https://github.com/Azure/arc-k8s-demo \
        --branch main --kustomization name=my-kustomization

    Create a Kubernetes v2 Flux Configuration with Bucket Source Kind
        az k8s-configuration flux create --resource-group my-resource-group \
        --cluster-name mycluster --cluster-type connectedClusters \
        --name myconfig --scope cluster --namespace my-namespace \
        --kind bucket --url https://bucket-provider.minio.io \
        --bucket-name my-bucket --kustomization name=my-kustomization \
        --bucket-access-key my-access-key --bucket-secret-key my-secret-key
        
    Create a Kubernetes v2 Flux Configuration with Azure Blob Storage Source Kind
        az k8s-configuration flux create --resource-group my-resource-group \
        --cluster-name mycluster --cluster-type connectedClusters \
        --name myconfig --scope cluster --namespace my-namespace \
        --kind azblob --url https://mystorageaccount.blob.core.windows.net \
        --container-name my-container --kustomization name=my-kustomization \
        --account-key my-account-key

Algemene argumenten voor configuratie

Parameter Indeling Notities
--cluster-name -c Tekenreeks Naam van de clusterresource in Azure.
--cluster-type -t connectedClusters, managedClusters Gebruik connectedClusters voor Kubernetes-clusters met Azure Arc en managedClusters voor AKS-clusters.
--resource-group -g Tekenreeks Naam van de Azure-resourcegroep met de Azure Arc- of AKS-clusterresource.
--name -n Tekenreeks Naam van de Flux-configuratie in Azure.
--namespace --ns Tekenreeks Naam van de naamruimte voor het implementeren van de configuratie. Standaard: default.
--scope -s Tekenreeks Machtigingsbereik voor de operators. Mogelijke waarden zijn cluster (volledige toegang) of namespace (beperkte toegang). Standaard: cluster.
--suspend flag Onderbreekt alle bron- en kustomize-afstemmingen die zijn gedefinieerd in deze Flux-configuratie. Afstemmingen die actief zijn op het moment van opschorting, worden voortgezet.

Algemene argumenten van bron

Parameter Indeling Notities
--kind Tekenreeks Bron soort om af te stemmen. Toegestane waarden: bucket, git, azblob. Standaard: git.
--timeout golang-duurnotatie Maximale tijd om te proberen de bron af te stemmen voordat er een time-out optreedt. Standaardinstelling: 10m.
--sync-interval --interval golang-duurnotatie Tijd tussen afstemmingen van de bron op het cluster. Standaard: 10m.

Referentieargumenten voor Git-opslagplaats

Parameter Indeling Notities
--branch Tekenreeks Vertakking binnen de Git-bron om te synchroniseren met het cluster. Standaard: master. Nieuwere opslagplaatsen hebben mogelijk een hoofdbranch met de naam main. In dat geval moet u instellen --branch=main.
--tag Tekenreeks Tag in de Git-bron om te synchroniseren met het cluster. Bijvoorbeeld: --tag=3.2.0.
--semver Tekenreeks Git-tagbereik semver binnen de Git-bron om te synchroniseren met het cluster. Bijvoorbeeld: --semver=">=3.1.0-rc.1 <3.2.0".
--commit Tekenreeks Git commit SHA in de Git-bron om te synchroniseren met het cluster. Bijvoorbeeld: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a.

Zie de Flux-documentatie over uitcheckstrategieën voor Git-opslagplaatsen voor meer informatie.

Openbare Git-opslagplaats

Parameter Indeling Notities
--url -u http[s]://server/repo[.git] URL van de bron van de Git-opslagplaats om deze af te stemmen met het cluster.

Persoonlijke Git-opslagplaats met SSH- en Flux-sleutels

Voeg de openbare sleutel die door Flux wordt gegenereerd toe aan het gebruikersaccount in uw Git-serviceprovider.

Parameter Indeling Notities
--url -u ssh://user@server/repo[.git] git@ moet worden vervangen user@ als de openbare sleutel is gekoppeld aan de opslagplaats in plaats van het gebruikersaccount.

Persoonlijke Git-opslagplaats met SSH en door de gebruiker verstrekte sleutels

Gebruik uw eigen persoonlijke sleutel rechtstreeks of vanuit een bestand. De sleutel moet de PEM-indeling hebben en eindigen met een nieuwe regel (\n).

Voeg de bijbehorende openbare sleutel toe aan het gebruikersaccount in uw Git-serviceprovider.

Parameter Indeling Notities
--url -u ssh://user@server/repo[.git] git@ moet worden vervangen user@ als de openbare sleutel is gekoppeld aan de opslagplaats in plaats van het gebruikersaccount.
--ssh-private-key Base64-sleutel in PEM-indeling Geef de sleutel rechtstreeks op.
--ssh-private-key-file Volledig pad naar lokaal bestand Geef het volledige pad op naar het lokale bestand dat de sleutel in PEM-indeling bevat.

Privé-Git-host met SSH en door de gebruiker opgegeven bekende hosts

De Flux-operator houdt een lijst bij met algemene Git-hosts in het known_hosts bestand. Flux gebruikt deze informatie om de Git-opslagplaats te verifiëren voordat de SSH-verbinding tot stand wordt gebracht. Als u een ongebruikelijke Git-opslagplaats of uw eigen Git-host gebruikt, kunt u de hostsleutel opgeven, zodat Flux uw opslagplaats kan identificeren.

Net als bij privésleutels kunt u uw known_hosts-inhoud rechtstreeks of in een bestand opgeven. Wanneer u uw eigen inhoud oplevert, gebruikt u de specificaties voor de known_hosts inhoudsindeling, samen met een van de voorgaande scenario's met SSH-sleutels.

Parameter Indeling Notities
--url -u ssh://user@server/repo[.git] git@kan vervangen.user@
--known-hosts Base64-tekenreeks Geef known_hosts rechtstreeks inhoud op.
--known-hosts-file Volledig pad naar lokaal bestand Geef known_hosts inhoud op in een lokaal bestand.

Persoonlijke Git-opslagplaats met een HTTPS-gebruiker en -sleutel

Parameter Indeling Notities
--url -u https://server/repo[.git] HTTPS met basisverificatie.
--https-user Onbewerkte tekenreeks HTTPS-gebruikersnaam.
--https-key Onbewerkte tekenreeks Persoonlijk HTTPS-toegangstoken of -wachtwoord.

Persoonlijke Git-opslagplaats met een HTTPS-CA-certificaat

Parameter Indeling Notities
--url -u https://server/repo[.git] HTTPS met basisverificatie.
--https-ca-cert Base64-tekenreeks CA-certificaat voor TLS-communicatie.
--https-ca-cert-file Volledig pad naar lokaal bestand Geef de inhoud van het CA-certificaat op in een lokaal bestand.

Bucketbronargumenten

Als u een bucket bron gebruikt in plaats van een git bron, zijn dit de bucketspecifieke opdrachtargumenten.

Parameter Indeling Notities
--url -u URL-tekenreeks De URL voor de bucket. Ondersteunde indelingen: http://, https://.
--bucket-name Tekenreeks Naam van de bucket te synchroniseren.
--bucket-access-key Tekenreeks Toegangssleutel-id die wordt gebruikt voor verificatie met de bucket.
--bucket-secret-key Tekenreeks Geheime sleutel die wordt gebruikt voor verificatie met de bucket.
--bucket-insecure Booleaans Communiceren met een bucket zonder TLS. Indien niet opgegeven, verondersteld onwaar; indien opgegeven, ervan uitgegaan dat waar.

Azure Blob Storage Accountbronargumenten

Als u een azblob bron gebruikt, zijn dit de blobspecifieke opdrachtargumenten.

Parameter Indeling Notities
--url -u URL-tekenreeks De URL voor de azblob.
--container-name Tekenreeks Naam van de Azure Blob Storage container die moet worden gesynchroniseerd
--sp_client_id Tekenreeks De client-id voor het verifiëren van een service-principal met Azure Blob, vereist voor deze verificatiemethode
--sp_tenant_id Tekenreeks De tenant-id voor het verifiëren van een service-principal met Azure Blob, vereist voor deze verificatiemethode
--sp_client_secret Tekenreeks Het clientgeheim voor het verifiëren van een service-principal met Azure Blob
--sp_client_cert Tekenreeks Het met Base64 gecodeerde clientcertificaat voor het verifiëren van een service-principal met Azure Blob
--sp_client_cert_password Tekenreeks Het wachtwoord voor het clientcertificaat dat wordt gebruikt voor het verifiëren van een service-principal met Azure Blob
--sp_client_cert_send_chain Tekenreeks Hiermee geeft u op of x5c-header moet worden opgenomen in clientclaims bij het verkrijgen van een token om verificatie op basis van onderwerpnaam/verlener in te schakelen voor het clientcertificaat
--account_key Tekenreeks De gedeelde Azure Blob-sleutel voor verificatie
--sas_token Tekenreeks Het Azure Blob SAS-token voor verificatie
--mi_client_id Tekenreeks De client-id van de beheerde identiteit voor verificatie met Azure Blob

Lokaal geheim voor verificatie met bron

U kunt een lokaal Kubernetes-geheim gebruiken voor verificatie met een git, bucket of azBlob bron. Het lokale geheim moet alle verificatieparameters bevatten die nodig zijn voor de bron en moet worden gemaakt in dezelfde naamruimte als de Flux-configuratie.

Parameter Indeling Notities
--local-auth-ref --local-ref Tekenreeks Lokale verwijzing naar een Kubernetes-geheim in de Flux-configuratienaamruimte die moet worden gebruikt voor verificatie met de bron.

Voor HTTPS-verificatie maakt u een geheim met de username en password:

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

Voor SSH-verificatie maakt u een geheim met de identity velden en known_hosts :

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

In beide gevallen gebruikt u bij het maken van de Flux-configuratie --local-auth-ref my-custom-secret in plaats van de andere verificatieparameters:

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

Meer informatie over het gebruik van een lokaal Kubernetes-geheim met deze verificatiemethoden:

Notitie

Als u Flux nodig hebt om toegang te krijgen tot de bron via uw proxy, moet u de Azure Arc-agents bijwerken met de proxy-instellingen. Zie Verbinding maken met een uitgaande proxyserver voor meer informatie.

Git-implementatie

Ter ondersteuning van verschillende opslagplaatsproviders die Git implementeren, kan Flux worden geconfigureerd voor het gebruik van een van de twee Git-bibliotheken: go-git of libgit2. Zie de Flux-documentatie voor meer informatie.

De GitOps-implementatie van Flux v2 bepaalt automatisch welke bibliotheek moet worden gebruikt voor openbare cloudopslagplaatsen:

  • Voor GitHub-, GitLab- en BitBucket-opslagplaatsen gebruikt go-gitFlux .
  • Voor Azure DevOps en alle andere opslagplaatsen gebruikt libgit2Flux .

Voor on-premises opslagplaatsen gebruikt libgit2Flux .

Kustomization

Met behulp van az k8s-configuration flux createkunt u een of meer kustomizations maken tijdens de configuratie.

Parameter Indeling Notities
--kustomization Geen waarde Begin van een tekenreeks met parameters waarmee een kustomization wordt geconfigureerd. U kunt het meerdere keren gebruiken om meerdere kustomizations te maken.
name Tekenreeks Unieke naam voor deze kustomization.
path Tekenreeks Pad in de Git-opslagplaats om af te stemmen met het cluster. De standaardwaarde is het hoogste niveau van de vertakking.
prune Booleaans De standaardinstelling is false. Stel in prune=true om ervoor te zorgen dat de objecten die Flux in het cluster heeft geïmplementeerd, worden opgeschoond als ze uit de opslagplaats worden verwijderd of als de Flux-configuratie of kustomisaties worden verwijderd. Het gebruik prune=true is belangrijk voor omgevingen waarin gebruikers geen toegang hebben tot de clusters en alleen wijzigingen kunnen aanbrengen via de Git-opslagplaats.
depends_on Tekenreeks Naam van een of meer kustomisaties (binnen deze configuratie) die moeten worden afgestemd voordat deze kustomisatie kan worden afgestemd. Bijvoorbeeld: depends_on=["kustomization1","kustomization2"]. Houd er rekening mee dat als u een kustomisatie verwijdert die afhankelijke kustomisaties heeft, de afhankelijke kustomisaties een DependencyNotReady status krijgen en afstemming wordt gestopt.
timeout golang-duurnotatie Standaard: 10m.
sync_interval golang-duurnotatie Standaard: 10m.
retry_interval golang-duurnotatie Standaard: 10m.
validation Tekenreeks Waarden: none, client, server. Standaard: none. Zie Flux-documentatie voor meer informatie.
force Booleaans Standaard: false. Stel in force=true op de kustomize-controller om resources opnieuw te maken wanneer het patchen mislukt vanwege een onveranderbare veldwijziging.

U kunt ook gebruiken az k8s-configuration flux kustomization om kustomizations in een Flux-configuratie te maken, bij te werken, weer te geven, weer te geven en te verwijderen:

az k8s-configuration flux kustomization -h

Group
    az k8s-configuration flux kustomization : Commands to manage Kustomizations associated with Flux
    v2 Kubernetes configurations.

Commands:
    create : Create a Kustomization associated with a Flux v2 Kubernetes configuration.
    delete : Delete a Kustomization associated with a Flux v2 Kubernetes configuration.
    list   : List Kustomizations associated with a Flux v2 Kubernetes configuration.
    show   : Show a Kustomization associated with a Flux v2 Kubernetes configuration.
    update : Update a Kustomization associated with a Flux v2 Kubernetes configuration.

Dit zijn de opties voor het maken van kustomization:

az k8s-configuration flux kustomization create -h

This command is from the following extension: k8s-configuration

Command
    az k8s-configuration flux kustomization create : Create a Kustomization associated with a
    Kubernetes Flux v2 Configuration.

Arguments
    --cluster-name -c          [Required] : Name of the Kubernetes cluster.
    --cluster-type -t          [Required] : Specify Arc connected clusters or AKS managed clusters.
                                            Allowed values: connectedClusters, managedClusters.
    --kustomization-name -k    [Required] : Specify the name of the kustomization to target.
    --name -n                  [Required] : Name of the flux configuration.
    --resource-group -g        [Required] : Name of resource group. You can configure the default
                                            group using `az configure --defaults group=<name>`.
    --dependencies --depends --depends-on : Comma-separated list of kustomization dependencies.
    --force                               : Re-create resources that cannot be updated on the
                                            cluster (i.e. jobs).  Allowed values: false, true.
    --interval --sync-interval            : Time between reconciliations of the kustomization on the
                                            cluster.
    --no-wait                             : Do not wait for the long-running operation to finish.
    --path                                : Specify the path in the source that the kustomization
                                            should apply.
    --prune                               : Garbage collect resources deployed by the kustomization
                                            on the cluster.  Allowed values: false, true.
    --retry-interval                      : Time between reconciliations of the kustomization on the
                                            cluster on failures, defaults to --sync-interval.
    --timeout                             : Maximum time to reconcile the kustomization before
                                            timing out.

Global Arguments
    --debug                               : Increase logging verbosity to show all debug logs.
    --help -h                             : Show this help message and exit.
    --only-show-errors                    : Only show errors, suppressing warnings.
    --output -o                           : Output format.  Allowed values: json, jsonc, none,
                                            table, tsv, yaml, yamlc.  Default: json.
    --query                               : JMESPath query string. See http://jmespath.org/ for more
                                            information and examples.
    --subscription                        : Name or ID of subscription. You can configure the
                                            default subscription using `az account set -s
                                            NAME_OR_ID`.
    --verbose                             : Increase logging verbosity. Use --debug for full debug
                                            logs.

Examples
    Create a Kustomization associated with a Kubernetes v2 Flux Configuration
        az k8s-configuration flux kustomization create --resource-group my-resource-group \
        --cluster-name mycluster --cluster-type connectedClusters --name myconfig \
        --kustomization-name my-kustomization-2 --path ./my/path --prune --force

Multitenancy

Flux v2 ondersteunt multitenancy in versie 0.26. Deze mogelijkheid is geïntegreerd in Azure GitOps met Flux v2.

Notitie

Voor de functie voor meerdere tenants moet u weten of uw manifesten een cross-namespace sourceRef bevatten voor HelmRelease, Kustomization, ImagePolicy of andere objecten, of als u een Kubernetes-versie van minder dan 1.20.6 gebruikt. Voorbereiden:

  • Voer een upgrade uit naar Kubernetes versie 1.20.6 of hoger.
  • Zorg er in uw Kubernetes-manifesten voor dat alle sourceRef objecten binnen dezelfde naamruimte zijn als de GitOps-configuratie.

Manifesten voor multitenancy bijwerken

Stel dat u een fluxConfiguration implementeert in een van onze Kubernetes-clusters in de naamruimte clusterconfiguratie met clusterbereik. U configureert de bron om de https://github.com/fluxcd/flux2-kustomize-helm-example opslagplaats te synchroniseren. Dit is dezelfde voorbeeld-Git-opslagplaats die wordt gebruikt in de zelfstudie Toepassingen implementeren met behulp van GitOps met Flux v2. Nadat Flux de opslagplaats heeft gesynchroniseerd, worden de resources geïmplementeerd die worden beschreven in de manifesten (YAML-bestanden). Twee van de manifesten beschrijven HelmRelease- en HelmRepository-objecten.

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: nginx
  namespace: nginx
spec:
  releaseName: nginx-ingress-controller
  chart:
    spec:
      chart: nginx-ingress-controller
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: flux-system
      version: "5.6.14"
  interval: 1h0m0s
  install:
    remediation:
      retries: 3
  # Default values
  # https://github.com/bitnami/charts/blob/master/bitnami/nginx-ingress-controller/values.yaml
  values:
    service:
      type: NodePort
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
  name: bitnami
  namespace: flux-system
spec:
  interval: 30m
  url: https://charts.bitnami.com/bitnami

Standaard implementeert de Flux-extensie de fluxConfigurations door het flux-applier-serviceaccount te imiteren dat alleen in de naamruimte clusterconfiguratie is geïmplementeerd. Met behulp van de bovenstaande manifesten wordt de HelmRelease geblokkeerd wanneer multitenancy is ingeschakeld. Dit komt doordat de HelmRelease zich in de naamruimte nginx bevindt en verwijst naar een HelmRepository in de naamruimte flux-system . Bovendien kan de HelmRelease van Flux niet worden toegepast door de Flux Helm-controller, omdat er geen flux-applier-serviceaccount is in de nginx-naamruimte .

Als u met meerdere tenants wilt werken, is de juiste aanpak om alle Flux-objecten te implementeren in dezelfde naamruimte als de fluxConfigurations. Hiermee voorkomt u het probleem met verwijzing naar naamruimten en kunnen de Flux-controllers de machtigingen krijgen om de objecten toe te passen. Voor een GitOps-configuratie die is gemaakt in de naamruimte clusterconfiguratie , worden de bovenstaande manifesten gewijzigd in:

apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: nginx
  namespace: cluster-config 
spec:
  releaseName: nginx-ingress-controller
  targetNamespace: nginx
  chart:
    spec:
      chart: nginx-ingress-controller
      sourceRef:
        kind: HelmRepository
        name: bitnami
        namespace: cluster-config
      version: "5.6.14"
  interval: 1h0m0s
  install:
    remediation:
      retries: 3
  # Default values
  # https://github.com/bitnami/charts/blob/master/bitnami/nginx-ingress-controller/values.yaml
  values:
    service:
      type: NodePort
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
  name: bitnami
  namespace: cluster-config
spec:
  interval: 30m
  url: https://charts.bitnami.com/bitnami

Afmelden voor multitenancy

Wanneer de microsoft.flux extensie is geïnstalleerd, is multitenancy standaard ingeschakeld om standaard beveiliging in uw clusters te garanderen. Als u echter multitenancy wilt uitschakelen, kunt u zich afmelden door de microsoft.flux extensie in uw clusters te maken of bij te werken met "--configuration-settings multiTenancy.enforce=false":

az k8s-extension create --extension-type microsoft.flux --configuration-settings multiTenancy.enforce=false -c CLUSTER_NAME -g RESOURCE_GROUP -n flux -t <managedClusters or connectedClusters>
az k8s-extension update --configuration-settings multiTenancy.enforce=false -c CLUSTER_NAME -g RESOURCE_GROUP -n flux -t <managedClusters or connectedClusters>

Migreren vanuit Flux v1

Als u Flux v1 hebt gebruikt in Kubernetes- of AKS-clusters met Azure Arc en u wilt migreren naar flux v2 in dezelfde clusters, moet u eerst flux v1 sourceControlConfigurations uit de clusters verwijderen. De microsoft.flux clusterextensie wordt niet geïnstalleerd als het cluster Flux v1-resources sourceControlConfigurations bevat.

Gebruik deze Azure CLI-opdrachten om bestaande sourceControlConfigurations in een cluster te zoeken en vervolgens te verwijderen:

az k8s-configuration list --cluster-name <Arc or AKS cluster name> --cluster-type <connectedClusters OR managedClusters> --resource-group <resource group name>
az k8s-configuration delete --name <configuration name> --cluster-name <Arc or AKS cluster name> --cluster-type <connectedClusters OR managedClusters> --resource-group <resource group name>

U kunt de Azure Portal ook gebruiken om bestaande GitOps-configuraties in Kubernetes- of AKS-clusters met Azure Arc weer te geven en te verwijderen.

Meer informatie over migratie van Flux v1 naar Flux v2 is beschikbaar in het fluxcd-project: Migreren van Flux v1 naar v2.

Volgende stappen