Share via


Parametri supportati da GitOps (Flux v2)

Azure offre una funzionalità di distribuzione automatica delle applicazioni usando GitOps che funziona con servizio Azure Kubernetes (AKS) e i cluster Kubernetes abilitati per Azure Arc. GitOps con Flux v2 consente di usare il repository Git come origine della verità per la configurazione del cluster e la distribuzione di applicazioni. Per altre informazioni, vedere Distribuzioni di applicazioni con GitOps (Flux v2) e Esercitazione: Distribuire applicazioni con GitOps con Flux v2.

GitOps in Kubernetes abilitato per Azure Arc o servizio Azure Kubernetes usa Flux, un set di strumenti open source diffuso che supporta molti parametri per abilitare vari scenari. Per una descrizione di tutti i parametri supportati da Flux, vedere la documentazione ufficiale di Flux.

Per visualizzare tutti i parametri supportati da Flux in Azure, vedere la az k8s-configuration documentazione. Questa implementazione non supporta attualmente tutti i parametri supportati da Flux. Segnalare se un parametro necessario non è presente nell'implementazione di Azure.

Questo articolo descrive alcuni parametri e argomenti disponibili per il az k8s-configuration flux create comando. È anche possibile visualizzare l'elenco completo dei parametri per az k8s-configuration flux usando il parametro nell'interfaccia -h della riga di comando di Azure , ad esempio az k8s-configuration flux -h o az k8s-configuration flux create -h.

Suggerimento

Una soluzione alternativa per distribuire risorse Flux con parametri non supportati consiste nel definire le risorse personalizzate Flux necessarie (ad esempio GitRepository o Kustomization) all'interno del repository Git. Distribuire queste risorse con il az k8s-configuration flux create comando . Sarà quindi possibile accedere alle risorse Flux tramite l'interfaccia utente di Azure Arc.

Argomenti generali di configurazione

Parametro Formattazione Note
--cluster-name -c String Nome della risorsa cluster in Azure.
--cluster-type -t Valori consentiti: connectedClusters, managedClusters Usare connectedClusters per i cluster Kubernetes abilitati per Azure Arc o managedClusters per i cluster del servizio Azure Kubernetes.
--resource-group -g String Nome del gruppo di risorse di Azure che contiene la risorsa cluster.
--name -n String Nome della configurazione Flux in Azure.
--namespace --ns String Nome dello spazio dei nomi per distribuire la configurazione. Impostazione predefinita: default.
--scope -s String Ambito di autorizzazione per gli operatori. I valori possibili sono cluster (accesso completo) o namespace (accesso limitato). Impostazione predefinita: cluster.
--suspend flag Sospende tutte le riconciliazione di origine e kustomize definite in questa configurazione di Flux. Le riconciliazione attive al momento della sospensione continueranno.

Argomenti generali di origine

Parametro Formattazione Note
--kind String Tipo di origine da riconciliare. Valori consentiti: bucket, git, azblob. Impostazione predefinita: git.
--timeout formato di durata golang Tempo massimo per tentare di riconciliare l'origine prima del timeout. Impostazione predefinita: 10m.
--sync-interval --interval formato di durata golang Tempo tra le riconciliazione dell'origine nel cluster. Impostazione predefinita: 10m.

Argomenti di riferimento all'origine del repository Git

Parametro Formattazione Note
--branch String Ramo all'interno dell'origine Git da sincronizzare con il cluster. Impostazione predefinita: master. I repository più recenti potrebbero avere un ramo radice denominato main, nel qual caso è necessario impostare --branch=main.
--tag String Tag all'interno dell'origine Git da sincronizzare con il cluster. Esempio: --tag=3.2.0.
--semver String Intervallo di tag semver Git all'interno dell'origine Git da sincronizzare con il cluster. Esempio: --semver=">=3.1.0-rc.1 <3.2.0".
--commit String Git commit SHA all'interno dell'origine Git per la sincronizzazione con il cluster. Esempio: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a.

Per altre informazioni, vedere la documentazione di Flux sulle strategie di checkout del repository Git.

Repository Git pubblico

Parametro Formattazione Note
--url -u http[s]://server/repo[.git] URL dell'origine del repository Git da riconciliare con il cluster.

Repository Git privato con SSH

Importante

Azure DevOps ha annunciato la deprecazione di SSH-RSA come metodo di crittografia supportato per la connessione ai repository di Azure tramite SSH. Se si usano chiavi SSH per connettersi ai repository di Azure nelle configurazioni di Flux, è consigliabile passare alle chiavi RSA-SHA2-256 o RSA-SHA2-512 più sicure. Per altre informazioni, vedere Deprecazione di Azure DevOps SSH-RSA.

Repository Git privato con chiavi CREATE da SSH e Flux

Aggiungere la chiave pubblica generata da Flux all'account utente nel provider di servizi Git.

Parametro Formattazione Note
--url -u ssh://user@server/repo[.git] git@ deve sostituire user@ se la chiave pubblica è associata al repository anziché all'account utente.

Repository Git privato con chiavi SSH e fornite dall'utente

Usare la propria chiave privata direttamente o da un file. La chiave deve essere in formato PEM e terminare con una nuova riga (\n).

Aggiungere la chiave pubblica associata all'account utente nel provider di servizi Git.

Parametro Formattazione Note
--url -u ssh://user@server/repo[.git] git@ deve sostituire user@ se la chiave pubblica è associata al repository anziché all'account utente.
--ssh-private-key Chiave Base64 in formato PEM Specificare direttamente la chiave.
--ssh-private-key-file Percorso completo del file locale Specificare il percorso completo del file locale che contiene la chiave in formato PEM.

Host Git privato con SSH e host noti forniti dall'utente

L'operatore Flux mantiene un elenco di host Git comuni nel relativo known_hosts file. Flux usa queste informazioni per autenticare il repository Git prima di stabilire la connessione SSH. Se si usa un repository Git non comune o il proprio host Git, è possibile specificare la chiave host in modo che Flux possa identificare il repository.

Analogamente alle chiavi private, è possibile fornire il contenuto di known_hosts direttamente o in un file. Quando si fornisce contenuto personalizzato, usare le specifiche del formato del contenuto known_hosts, insieme a uno degli scenari di chiave SSH precedenti.

Parametro Formattazione Note
--url -u ssh://user@server/repo[.git] git@ può sostituire user@.
--known-hosts Stringa Base64 Specificare known_hosts direttamente il contenuto.
--known-hosts-file Percorso completo del file locale Fornire known_hosts contenuto in un file locale.

Repository Git privato con un utente e una chiave HTTPS

Parametro Formattazione Note
--url -u https://server/repo[.git] HTTPS con autenticazione di base.
--https-user Stringa non elaborata Nome utente HTTPS.
--https-key Stringa non elaborata Token di accesso personale HTTPS o password.

Repository Git privato con un certificato della CA HTTPS

Parametro Formattazione Note
--url -u https://server/repo[.git] HTTPS con autenticazione di base.
--https-ca-cert Stringa Base64 Certificato CA per la comunicazione TLS.
--https-ca-cert-file Percorso completo del file locale Specificare il contenuto del certificato DELLA CA in un file locale.

Argomenti di origine bucket

Se si usa l'origine bucket , ecco gli argomenti di comando specifici del bucket.

Parametro Formattazione Note
--url -u Stringa URL URL dell'oggetto bucket. Formati supportati: http://, https://.
--bucket-name String Nome dell'oggetto bucket da sincronizzare.
--bucket-access-key String ID chiave di accesso usato per l'autenticazione con .bucket
--bucket-secret-key String Chiave privata usata per l'autenticazione con .bucket
--bucket-insecure Booleano Comunicare con un bucket oggetto senza TLS. Se non specificato, si presuppone false; se specificato, si presuppone true.

argomenti origine account Archiviazione BLOB di Azure

Se si usa l'origine azblob , ecco gli argomenti di comando specifici del BLOB.

Parametro Formattazione Note
--url -u Stringa URL URL dell'oggetto azblob.
--container-name String Nome del contenitore Archiviazione BLOB di Azure da sincronizzare
--sp_client_id String ID client per l'autenticazione di un'entità servizio con BLOB di Azure, necessario per questo metodo di autenticazione
--sp_tenant_id String ID tenant per l'autenticazione di un'entità servizio con BLOB di Azure, necessario per questo metodo di autenticazione
--sp_client_secret String Segreto client per l'autenticazione di un'entità servizio con BLOB di Azure
--sp_client_cert String Certificato client con codifica Base64 per l'autenticazione di un'entità servizio con BLOB di Azure
--sp_client_cert_password String Password per il certificato client usato per autenticare un'entità servizio con BLOB di Azure
--sp_client_cert_send_chain String Specifica se includere un'intestazione x5c nelle attestazioni client durante l'acquisizione di un token per abilitare l'autenticazione basata su nome soggetto/autorità di certificazione per il certificato client
--account_key String Chiave condivisa BLOB di Azure per l'autenticazione
--sas_token String Token di firma di accesso condiviso BLOB di Azure per l'autenticazione
--managed-identity-client-id String ID client dell'identità gestita per l'autenticazione con BLOB di Azure

Importante

Quando si usa l'autenticazione dell'identità gestita per i cluster e azblob l'origine del servizio Azure Kubernetes, l'identità gestita deve essere assegnata almeno al ruolo lettore di dati BLOB Archiviazione. L'autenticazione con un'identità gestita non è ancora disponibile per i cluster Kubernetes abilitati per Azure Arc.

Segreto locale per l'autenticazione con l'origine

È possibile usare un segreto Kubernetes locale per l'autenticazione con un'origine gito bucketazBlob . Il segreto locale deve contenere tutti i parametri di autenticazione necessari per l'origine e deve essere creato nello stesso spazio dei nomi della configurazione Flux.

Parametro Formattazione Note
--local-auth-ref --local-ref String Riferimento locale a un segreto Kubernetes nello spazio dei nomi di configurazione Flux da usare per l'autenticazione con l'origine.

Per l'autenticazione HTTPS, creare un segreto con username e 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>

Per l'autenticazione SSH, creare un segreto con i identity campi e 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

Importante

Azure DevOps ha annunciato la deprecazione di SSH-RSA come metodo di crittografia supportato per la connessione ai repository di Azure tramite SSH. Se si usano chiavi SSH per connettersi ai repository di Azure nelle configurazioni di Flux, è consigliabile passare alle chiavi RSA-SHA2-256 o RSA-SHA2-512 più sicure. Per altre informazioni, vedere Deprecazione di Azure DevOps SSH-RSA.

Per entrambi i casi, quando si crea la configurazione Flux, usare --local-auth-ref my-custom-secret al posto degli altri parametri di autenticazione:

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

Altre informazioni sull'uso di un segreto Kubernetes locale con questi metodi di autenticazione:

Nota

Se è necessario Flux per accedere all'origine tramite il proxy, è necessario aggiornare gli agenti di Azure Arc con le impostazioni proxy. Per altre informazioni, vedere Connessione uso di un server proxy in uscita.

Implementazione git

Per supportare vari provider di repository che implementano Git, Flux può essere configurato per l'uso di una delle due librerie Git: go-git o libgit2. Per informazioni dettagliate, vedere la documentazione di Flux.

L'implementazione di GitOps di Flux v2 determina automaticamente quale libreria usare per i repository cloud pubblici:

  • Per i repository GitHub, GitLab e BitBucket, Flux usa go-git.
  • Per Azure DevOps e tutti gli altri repository, Flux usa libgit2.

Per i repository locali, Flux usa libgit2.

Kustomization

Kustomization è un'impostazione creata per le configurazioni di Flux che consente di scegliere un percorso specifico nel repository di origine riconciliato nel cluster. Non è necessario creare un file 'kustomization.yaml in questo percorso specificato. Per impostazione predefinita, tutti i manifesti in questo percorso vengono riconciliati. Tuttavia, se si vuole avere una sovrimpressione Kustomize per le applicazioni disponibili in questo percorso di repository, è necessario creare file Kustomize in Git per la configurazione di Flux da usare.

Usando az k8s-configuration flux kustomization create, è possibile creare una o più kustomization durante la configurazione.

Parametro Formattazione Note
--kustomization Nessun valore Inizio di una stringa di parametri che configurano una kustomization. È possibile usarlo più volte per creare più kustomization.
name String Nome univoco per questa kustomization.
path String Percorso all'interno del repository Git per riconciliarsi con il cluster. Il valore predefinito è il livello principale del ramo.
prune Booleano Il valore predefinito è false. Impostare prune=true per assicurarsi che gli oggetti Flux distribuiti nel cluster vengano puliti se vengono rimossi dal repository o se la configurazione di Flux o le kustomization vengono eliminate. L'uso prune=true è importante per gli ambienti in cui gli utenti non hanno accesso ai cluster e possono apportare modifiche solo tramite il repository Git.
depends_on String Nome di una o più kustomization (all'interno di questa configurazione) che deve riconciliarsi prima che questa kustomization possa riconciliarsi. Ad esempio: depends_on=["kustomization1","kustomization2"]. Se si rimuove una kustomization con kustomization dipendenti, lo stato delle kustomization dipendenti diventa DependencyNotReadye la riconciliazione si interrompe.
timeout formato di durata golang Impostazione predefinita: 10m.
sync_interval formato di durata golang Impostazione predefinita: 10m.
retry_interval formato di durata golang Impostazione predefinita: 10m.
validation String Valori: none, client, server. Impostazione predefinita: none. Per informazioni dettagliate, vedere la documentazione di Flux.
force Booleano Impostazione predefinita: false. Impostare force=true su per indicare al controller kustomize di ricreare le risorse quando l'applicazione di patch ha esito negativo a causa di una modifica del campo non modificabile.

È anche possibile usare az k8s-configuration flux kustomization per aggiornare, elencare, visualizzare ed eliminare le kustomization in una configurazione di Flux.

Passaggi successivi