Iscriviti al feed

I dati sensibili non devono essere archiviati in Git. Questo presenta un dilemma per GitOps, perché in Git hai bisogno di segreti, ma è bene non esporre dati così sensibili. Per risolvere questo problema, è possibile archiviare i segreti in uno strumento come HashiCorp Vault, quindi recuperare e inserire i dati in Red Hat OpenShift

Questo articolo è una guida per il deployment di OpenShift GitOps con Argo CD Vault Plugin per recuperare i segreti da un'istanza di Hashicorp Vault e inserirli nelle risorse Kubernetes. La guida si basa su questo blog di Red Hat del 2021 ed è stata aggiornata per l'utilizzo del più moderno approccio custom plugin sidecar.

Prerequisiti

Per questo articolo, parto dal presupposto che tu stia eseguendo OpenShift 4.10 o versioni successive con privilegi di amministratore sul cluster. Sto eseguendo un cluster Red Hat OpenShift su AWS 4.13 di cui è stato eseguito il provisioning tramite il sistema demo di Red Hat.

Assicurati di aver eseguito l'accesso al cluster in un ambiente terminale con oc e helm binari disponibili prima di procedere con uno dei passaggi seguenti. Utilizzare i seguenti comandi per confermare questi file binari.

Innanzitutto, verifica i prerequisiti. Dovresti visualizzare un output simile al seguente:

$ oc version && helm version
Client Version: 4.11.13
Kustomize Version: v4.5.4
Kubernetes Version: v1.27.4
version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}

1. Deployment Vault

Per questo articolo, utilizzo Vault in modalità dev, che non è adatta per la produzione. Puoi saltare questo passaggio se hai già un'istanza Vault in esecuzione. Esegui il deployment di un'istanza di Hashicorp Vault:

$ helm upgrade --install vault vault \
    --repo https://helm.releases.hashicorp.com \
    --namespace vault \
    --create-namespace \
    --set "global.openshift=true" \
    --set "server.dev.enabled=true" \
    --set "injector.enabled=false"

2. Configurazione di Vault

Dopo aver distribuito un'istanza Vault, esegui uno script di shell sul pod di Vault per configurarlo rapidamente per questa demo, utilizzando l'eccellente CLI vault.

Lo script di configurazione imposta il metodo di autenticazione Kubernetes per Vault, abilita un archivio di segreti kv-v2, crea un segreto per il test e la relativa policy di accesso.

Clonazione della sorgente:

$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin 

Copia lo script di configurazione nel pod Vault:

$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh

Quindi esegui lo script in remoto nel pod di Vault:

$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'

3. Configurazione argocd-vault-plugin-auth in Vault

Dopo aver eseguito il deployment e la configurazione di Vault, è necessario abilitare il plugin Argo CD Vault, che sarà presto distribuito, per eseguire l'autenticazione in Vault utilizzando un account di servizio Kubernetes.

Creare uno spazio dei nomi per ArgoCD:

$ oc new-project vplugindemo

Crea un account di servizio per l'autenticazione del plugin Argo Vault:

$ oc create serviceaccount vplugin

Crea un ruolo in Vault per associare il tuo account di servizio alla policy:

$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \
    bound_service_account_names=vplugin \
    bound_service_account_namespaces=vplugindemo \
    policies=vplugin \
    ttl=1h

Infine, crea un segreto per il plugin Argo Vault da utilizzare durante la configurazione della connessione Vault.

$ oc --namespace vplugindemo create \
-f 2-argocd/secret-vault-configuration.yaml

4. Configurazione dell'elaborazione argocd-vault-plugin

Una volta configurata l'autenticazione è necessario definire l'uso del sidecar Argo CD Vault Plugin. La procedura prevede due passaggi. In primo luogo, è necessario specificare un comando di rilevamento, quindi un comando di generazione. Consulta questi esempi documentati, inclusi gli scenari per helm o kustomize-based applications. Il mio esempio utilizza l'approccio più semplice per individuare i file che contengono un'annotazione, quindi utilizza argocd-vault-plugin generate . per creare modelli dai file.

$ oc --namespace vplugindemo create \
-f 2-argocd/configmap-plugin.yaml

5. Distribuisci OpenShift GitOps

Dopo aver distribuito e configurato Vault e il plug-in argocd-vault, esegui il deployment dell'operatore OpenShift GitOps:

$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml

Una volta completata l'installazione dell'operatore, crea l'istanza Argo CD utilizzando la risorsa personalizzata:

$ oc --namespace vplugindemo create \
-f 2-argocd/crd-argocd.yaml

6. Creare un'applicazione Argo CD

Una volta che Argo CD è in esecuzione, crea questa applicazione di base. In questo modo viene creata una risorsa segreta nel cluster in cui i valori segnaposto predefiniti vengono sostituiti con valori provenienti da Vault.

$ oc --namespace vplugindemo create \
-f 2-argocd/application-example.yaml

Riepilogo

Utilizzando Hashicorp Vault, con Red Hat OpenShift GitOps e Argo CD Vault Plugin in esecuzione come sidecar, hai utilizzato correttamente i valori segnaposto all'interno di un segreto in Git. Questo è un ottimo metodo per proteggere i dati sensibili.


Sull'autore

James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Ricerca per canale

automation icon

Automazione

Novità sull'automazione IT di tecnologie, team e ambienti

AI icon

Intelligenza artificiale

Aggiornamenti sulle piattaforme che consentono alle aziende di eseguire carichi di lavoro IA ovunque

open hybrid cloud icon

Hybrid cloud open source

Scopri come affrontare il futuro in modo più agile grazie al cloud ibrido

security icon

Sicurezza

Le ultime novità sulle nostre soluzioni per ridurre i rischi nelle tecnologie e negli ambienti

edge icon

Edge computing

Aggiornamenti sulle piattaforme che semplificano l'operatività edge

Infrastructure icon

Infrastruttura

Le ultime novità sulla piattaforma Linux aziendale leader a livello mondiale

application development icon

Applicazioni

Approfondimenti sulle nostre soluzioni alle sfide applicative più difficili

Original series icon

Serie originali

Raccontiamo le interessanti storie di leader e creatori di tecnologie pensate per le aziende