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:
- Autenticazione HTTPS del repository Git
- Certificati HTTPS del repository Git autofirmato
- Autenticazione SSH del repository Git
- Autenticazione statica del bucket
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
- Sono disponibili altre informazioni sulle Distribuzioni di applicazioni con GitOps (Flux v2) per il servizio Azure Kubernetes e Kubernetes abilitato per Azure Arc.
- Usare l'esercitazione per informazioni su come abilitare GitOps nel servizio Azure Kubernetes o nei cluster di Kubernetes abilitato per Azure Arc.
- Sono disponibili informazioni sul Flusso di lavoro CI/CD tramite GitOps.