Condividi tramite


Parametri supportati da GitOps (Flux v2)

Azure offre una funzionalità di distribuzione automatica delle applicazioni usando GitOps che funziona con il servizio Azure Kubernetes 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) ed Esercitazione: distribuire applicazioni tramite GitOps con Flux v2.

GitOps in Kubernetes o nel servizio Azure Kubernetes abilitato per Azure Arc usa Flux, un set diffuso di strumenti open source 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 documentazione az k8s-configuration. 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 comando az k8s-configuration flux create. Inoltre è possibile visualizzare l'elenco completo dei parametri per az k8s-configuration flux usando il parametro -h nell'interfaccia 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 i 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 comando az k8s-configuration flux create. 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 di Kubernetes abilitato 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 di 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 riconciliazioni dell'origine nel cluster. Impostazione predefinita: 10m.

Argomenti di riferimento dell'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 Agente integrità sistema con commit Git 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 SSH e create da 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 direttamente la propria chiave privata oppure utilizzarla da un file. La chiave deve essere specificata in formato PEM e terminare con un carattere di 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 file known_hosts. 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 Base64 string Specificare direttamente il contenuto known_hosts.
--known-hosts-file Percorso completo del file locale Fornire il contenuto known_hosts 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 l'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 di firma HTTPS

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

Argomenti di origine bucket

Se si usa l'origine bucket, di seguito sono mostrati gli argomenti di comando specifici del bucket.

Parametro Formattazione Note
--url -u Stringa URL URL per 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 oggetto bucket senza TLS. Se non specificato, si presuppone false; se specificato, si presuppone true.

Argomenti di origine dell'account di Archiviazione BLOB di Azure

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

Parametro Formattazione Note
--url -u Stringa URL URL per azblob.
--container-name String Nome del contenitore di 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 del servizio Azure Kubernetes e l'origine azblob, l'identità gestita deve essere assegnata almeno al ruolo lettore dei dati del BLOB di 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 git, bucket o azBlob. 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 campi identity 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.

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

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 Connettersi usando 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:

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

Flux usa libgit2 per i repository locali.

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 intende avere una sovrimpressione Kustomize per le applicazioni disponibili in questo percorso di repository, è necessario creare dei file Kustomize in Git da utilizzare per la configurazione di Flux.

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 usarla 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 affinché gli oggetti Flux distribuiti nel cluster vengano puliti se sono rimossi dal repository o se la configurazione di Flux o le kustomization sono eliminate. L'uso di 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 devono riconciliarsi prima che questa kustomization possa riconciliarsi. Ad esempio: depends_on=["kustomization1","kustomization2"]. Se si rimuove una kustomization che ha delle kustomization dipendenti, lo stato delle kustomization dipendenti diventa DependencyNotReady e 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 per fare in modo che il controller kustomize ricrei le risorse quando l'applicazione di patch ha esito negativo a causa di una modifica di 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