Configurare le impostazioni del CD Argo - Amazon EKS

View a markdown version of this page

Configurare le impostazioni del CD Argo - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare le impostazioni del CD Argo

Il CD EKS Capability for Argo offre un'esperienza Argo CD completamente gestita. Upstream Argo CD offre molte impostazioni e funzionalità opzionali e la funzionalità ne supporta un sottoinsieme. Per le impostazioni supportate, è possibile configurarle allo stesso modo del CD Argo upstream, tramite l'interfaccia del cluster. argocd-cm ConfigMap La funzionalità legge i campi supportati ConfigMap e li applica all'istanza Argo CD gestita.

Le sezioni seguenti descrivono come configurare argocd-cm ConfigMap le impostazioni supportate.

Prerequisiti

Prima di configurare le impostazioni del CD Argo, è necessario disporre di:

  • È stato creato un cluster EKS con la funzionalità Argo CD (vedi) Crea una funzionalità Argo CD

  • Lo spazio dei nomi configurato per Argo CD nella funzionalità (per impostazione predefinita, lo spazio dei nomi) argocd

  • La kubectl CLI configurata per comunicare con il cluster

Configura argocd-cm ConfigMap

Per configurare le impostazioni del CD Argo supportate, create un ConfigMap nome argocd-cm nel cluster. La funzionalità gestita legge le impostazioni supportate da questo ConfigMap e le applica all'istanza Argo CD gestita. Per le impostazioni supportate dalla funzionalità e per come vengono applicate, vedereImpostazioni supportate.

Creane uno ConfigMap con i seguenti requisiti:

  • Assegna un nome al ConfigMap argocd-cm.

  • Createlo nello spazio dei nomi configurato per Argo CD nella funzionalità (lo spazio dei nomi impostato nella configurazione di Argo CD quando avete creato la funzionalità). Per impostazione predefinita, questo è il namespace. argocd

  • Applica l'etichetta. app.kubernetes.io/part-of: argocd Questa etichetta è obbligatoria e corrisponde al comportamento originario di Argo CD.

  • Usa lo stesso formato di campo e le stesse chiavi del CD Argo originale.

L'esempio seguente mostra la ConfigMap struttura, con un'impostazione che mostra un banner nell'interfaccia utente di Argo CD. Aggiungi altre impostazioni supportate data in allo stesso modo.

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
Importante

A non ConfigMap è un archivio sicuro. Non inserire segreti, credenziali o altre informazioni sensibili nel argocd-cm ConfigMap.

In che modo la funzionalità applica le tue impostazioni

È possibile configurare Argo CD creandone uno argocd-cm ConfigMap interno al proprio cluster. La funzionalità applica le impostazioni supportate dall'istanza Argo CD gestita dall'utente ConfigMap a quella gestita. Applica solo le impostazioni supportate e ignora qualsiasi altro campo o funzionalità impostato. Qualsiasi impostazione non elencata in non Impostazioni supportate è supportata e non ha alcun effetto.

La funzionalità convalida i valori impostati. Se un valore non è valido o non è valido, la funzionalità lo ignora e continua a funzionare con la configurazione predefinita per tale impostazione. Un errore nella tua istanza Argo CD gestita ConfigMap non interrompe.

Nota

La funzionalità applica la configurazione presente argocd-cm ConfigMap nel cluster. Qualsiasi principale con accesso in scrittura ConfigMap può modificare la configurazione dell'istanza Argo CD gestita. Il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes del tuo cluster regola l'accesso alle autorizzazioni IAM che controllano la risorsa di capacità ConfigMap, e non le autorizzazioni IAM. Come best practice di sicurezza, concedi l'autorizzazione a modificare gli oggetti nel namespace Argo CD solo a utenti e account di servizio affidabili. Poiché Kubernetes RBAC classifica le autorizzazioni in base al tipo di risorsa, puoi comunque concedere l'accesso di cui hanno bisogno gli altri utenti. Ad esempio, puoi consentire agli sviluppatori di creare e gestire le applicazioni ma non di modificarle. ConfigMaps Ciò impedisce loro di modificare la argocd-cm configurazione.

Per ulteriori informazioni sul modello di responsabilità condivisa, sull'RBAC di Kubernetes e sull'isolamento dello spazio dei nomi per la funzionalità Argo CD, vedere. Considerazioni sulla sicurezza per EKS Capabilities Per controllare l'accesso all'interno di Argo CD, vedere. Configurare le autorizzazioni Argo CD

Impostazioni supportate

Le sezioni seguenti elencano le argocd-cm impostazioni supportate dalla funzionalità gestita, raggruppate per categoria. Ogni impostazione utilizza la stessa chiave e lo stesso formato del CD Argo originale. La colonna How your value is apply di ogni tabella mostra se il valore si aggiunge o sovrascrive la configurazione predefinita della funzionalità. Per la descrizione completa di ciascuna impostazione, consultate il ConfigMap riferimento argocd-cm sul sito Web della documentazione del CD di Argo.

Interfaccia utente

Queste impostazioni personalizzano l'interfaccia utente di Argo CD.

Impostazione Description Come viene applicato il tuo valore

ui.bannercontent

Testo per un banner visualizzato nell'interfaccia utente, ad esempio un identificatore di ambiente o un avviso di manutenzione.

Sostituisce

ui.bannerurl

URL a cui si collega il banner, ad esempio un runbook o una pagina wiki.

Sostituisce

ui.bannerpermanent

Impostato per impedire true agli utenti di chiudere il banner.

Sostituisce

ui.bannerposition

Dove appare il banner:top,bottom, o. both

Sostituisce

ui.cssurl

URL di un file CSS personalizzato per il branding o lo stile. Il CSS viene eseguito nel tuo browser.

Sostituisce

Impostazioni delle risorse

Queste impostazioni controllano il modo in cui la funzionalità controlla, confronta e visualizza le risorse gestite da Argo CD.

Impostazione Description Come viene applicato il tuo valore

resource.customizations.ignoreDifferences.<group>_<kind>

Campi da ignorare quando Argo CD confronta Git con il cluster per un tipo di risorsa, come il conteggio delle repliche gestito da un Horizontal Pod Autoscaler.

Aggiunge

resource.customizations.ignoreDifferences.all

Campi da ignorare quando si confronta Git con il cluster, applicati a tutti i tipi di risorse.

Aggiunge

resource.customizations.ignoreResourceUpdates.<group>_<kind>

Campi che Argo CD ignora quando decide se un evento di aggiornamento deve attivare la riconciliazione, con conseguente riduzione del carico. L'evento si verifica ancora e Argo CD ignora solo le modifiche a questi campi.

Aggiunge

resource.customizations.ignoreResourceUpdates.all

Campi che Argo CD ignora durante l'elaborazione degli eventi di aggiornamento, applicati a tutti i tipi di risorse.

Aggiunge

resource.customizations.knownTypeFields.<group>_<kind>

Tipi di campo (elenco, mappa o primitiva) per una risorsa personalizzata, in modo che Argo CD calcoli le differenze accurate invece di mostrare la sostituzione dell'intero campo.

Aggiunge

resource.customizations.health.<group>_<kind>

Controllo dello stato personalizzato per un tipo di risorsa, definito come script Lua. La funzionalità include controlli di integrità integrati per le risorse ACK e kro. Consulta Controlli dell'integrità personalizzati.

Sostituisce

resource.exclusions

Tipi di risorse che Argo CD non controlla, il che migliora le prestazioni per i tipi ad alto tasso di abbandono.

Aggiunge

resource.inclusions

Tipi di risorse che Argo CD controlla. Una volta impostato, Argo CD guarda solo i tipi elencati.

Aggiunge

resource.compareoptions

Opzioni che controllano il modo in cui Argo CD calcola le differenze, ad esempio. ignoreAggregatedRoles

Sostituisce

resource.respectRBAC

Se il controller controlla solo le risorse per le quali dispone dell'autorizzazione RBAC per leggere. Accetta normal o. strict

Sostituisce

resource.customLabels

Etichette di risorse aggiuntive da visualizzare nella vista delle risorse dell'interfaccia utente.

Sostituisce

resource.includeEventLabelKeys

Etichette da applicazioni e progetti da copiare negli eventi Kubernetes generati da Argo CD.

Sostituisce

resource.excludeEventLabelKeys

Etichette da escludere dagli eventi Kubernetes generati da Argo CD.

Sostituisce

resource.sensitive.mask.annotations

Annotazioni da mascherare quando l'interfaccia utente o la CLI visualizzano i segreti.

Sostituisce

Impostazioni del repository e degli strumenti

Queste impostazioni controllano gli strumenti dei manifest utilizzati da Argo CD per renderizzare i manifesti.

Impostazione Description Come viene applicato il tuo valore

kustomize.enable

Se Kustomize è abilitato come tipo di sorgente manifesto.

Sostituisce

helm.enable

Se Helm è abilitato come tipo di sorgente manifesto.

Sostituisce

jsonnet.enable

Se Jsonnet è abilitato come tipo di origine manifesto.

Sostituisce

kustomize.buildOptions

I flag globali della riga di comando sono passati a tutti. kustomize build La funzionalità supporta un sottoinsieme di flag. Consulta Flag Kustomize.buildOptions supportati.

Sostituisce

Flag Kustomize.buildOptions supportati

Perkustomize.buildOptions, la funzionalità filtra il tuo valore in una serie di flag sicuri e supportati. Non supporta i flag che consentono alla build di leggere file arbitrari o eseguire codice arbitrario. Elimina ogni flag non supportato o valore non valido singolarmente e applica i flag supportati rimanenti. È possibile scrivere i flag nel modulo or. --flag value --flag=value

Flag Valori supportati Note

--reorder

legacy, none

Cambia l'ordine solo dello YAML renderizzato.

--enable-helm

Booleano

Esegue il binario Helm gestito dal percorso.

--enable-managedby-label

Booleano

Aggiunge solo etichette.

La funzionalità elimina qualsiasi altro contrassegno--load-restrictor, incluso--enable-exec, e--enable-alpha-plugins.

Controlli dell'integrità personalizzati

Argo CD valuta lo stato delle risorse che impiega. Per le risorse Kubernetes standard come Deployments and Services, Argo CD dispone di una logica di integrità integrata. Per le risorse personalizzate che Argo CD non riconosce, non ha una logica di integrità integrata e non riporta lo stato di integrità.

Quando una risorsa personalizzata non viene sottoposta a controlli sullo stato di salute, Argo CD non ne segnala lo stato e la esclude dallo stato generale dell'applicazione. Di conseguenza, un'applicazione può segnalare Healthy anche quando le sue risorse sono ancora in fase di provisioning o hanno fallito. Ciò significa anche che le ondate di sincronizzazione possono avanzare prima che tali risorse siano pronte, poiché l'ordine di sincronizzazione dipende dallo stato di salute segnalato.

Con i controlli di integrità personalizzati, puoi definire la logica di integrità per le tue risorse personalizzate, in modo che Argo CD registri lo stato di salute accurato e sequenzi correttamente le implementazioni. Definite i controlli di integrità personalizzati nello stesso modo in cui utilizzate il CD Argo originale, utilizzando le stesse chiavi di configurazione. Gli script upstream esistenti e gli esempi della community funzionano con il CD EKS Capability for Argo senza modifiche.

Built-in controlli sanitari per ACK e kro

Il CD EKS Capability for Argo include controlli di integrità integrati per le risorse AWS Controllers for Kubernetes (ACK) e kro (Kube Resource Orchestrator). Queste risorse riportano uno stato di salute accurato senza configurazioni aggiuntive.

Per modificare il modo in cui la funzionalità valuta lo stato di una risorsa ACK o kro, puoi definire un controllo di integrità personalizzato per quel tipo di risorsa. Un controllo di integrità personalizzato definito per un tipo di risorsa sostituisce il controllo di integrità integrato per quel tipo.

Scrivi un controllo sanitario personalizzato

Definisci un controllo di integrità personalizzato aggiungendo uno script Lua a argocd-cm ConfigMap, utilizzando una chiave nel seguente formato:

resource.customizations.health.<group>_<kind>

Sostituiscilo <group> con il gruppo API della Custom Resource e <kind> con il suo genere. Ad esempio, la chiave per una risorsa personalizzata con il gruppo API example.com e il tipo Database èresource.customizations.health.example.com_Database.

Lo script Lua ha accesso all'oggetto risorsa tramite la obj variabile globale. Lo script deve restituire una tabella con un status campo impostato su uno traHealthy, ProgressingDegraded, oSuspended. Lo script può anche impostare un message campo opzionale per fornire un messaggio di stato descrittivo.

L'esempio seguente ConfigMap definisce un controllo dello stato di salute per una risorsa Database personalizzata. Lo script riporta la risorsa nello stato in Healthy cui si trova Ready e come Progressing diversamente:

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs

Per ulteriori informazioni sul formato dello script di controllo dello stato, sull'elenco dei controlli di integrità integrati e sugli esempi della community che è possibile adattare, consultate Resource Health sul sito Web della documentazione del CD di Argo.

Sicurezza e limitazioni

Grazie alla funzionalità gestita, gli script di controllo dello stato personalizzati vengono eseguiti in un sistema di calcolo isolato e completamente gestito. L'ambiente di esecuzione è isolato per funzionalità e non ha accesso ai dati del cluster o alle AWS API. Non esegui il provisioning, non applichi patch o gestisci alcuna parte dell'ambiente di esecuzione.

Tieni presente quanto segue quando scrivi controlli di integrità personalizzati da utilizzare con EKS Capability:

  • Le librerie Lua standard non sono disponibili. L'useOpenLibsopzione è sempre disabilitata, che è l'impostazione predefinita nel CD Argo upstream. Gli script non possono accedere al sistema operativo o al file system. Se si esegue la migrazione di uno script da un CD Argo autogestito che si basa su librerie Lua standard, potrebbe non funzionare allo stesso modo nella funzionalità. Si consiglia di testare gli script di controllo dello stato di salute in un ambiente di sviluppo prima di utilizzarli in produzione.

Se la valutazione dello stato di integrità è temporaneamente non disponibile, i report di funzionalità hanno interessato le Risorse personalizzate Progressing anziché rimuoverne lo stato di integrità. Ciò mantiene le risorse interessate visibili nello stato dell'Applicazione fino al ripristino della valutazione.

Verifica un controllo sanitario personalizzato

Dopo aver applicato o aggiornato il argocd-cm ConfigMap, conferma che il controllo sanitario è attivo:

  1. Nell'interfaccia utente di Argo CD, scegliete un'applicazione che includa una risorsa personalizzata del tipo per il quale avete definito un controllo di integrità. Conferma che la risorsa riporti lo stato di integrità restituito dallo script. In alternativa, argocd app get <application-name> esegui e rivedi lo stato di integrità della risorsa.

  2. Se la risorsa non riporta lo stato di salute previsto, verifica quanto segue:

    • ConfigMap È denominato argocd-cm e si trova nello spazio dei nomi configurato per Argo CD nella funzionalità.

    • ConfigMap Ha l'etichetta richiesta. app.kubernetes.io/part-of: argocd

    • La chiave di controllo dello stato utilizza la chiave corretta <group>_<kind> per il tipo di risorsa.