Feed abonnieren

Vertrauliche Daten dürfen nicht in Git gespeichert werden. Dies stellt ein Problem für GitOps dar, da Sie Secrets in Git benötigen, diese sensiblen Daten aber nicht offenlegen möchten! Um dieses Problem zu beheben, können Sie Secrets in einem Tool wie HashiCorp Vault speichern und diese Daten dann abrufen und in Red Hat OpenShift einfügen. 

Dieser Artikel ist ein Guide zum Deployment von OpenShift GitOps mit dem Argo CD Vault-Plugin, um Secrets aus einer Hashicorp Vault-Instanz abzurufen und sie in Kubernetes-Ressourcen zu fügen. Dieser Guide baut auf diesem vorherigen Red Hat Blog von 2021 auf und wurde aktualisiert, um den moderneren Custom-Plugin Sidecar-Ansatz zu verwenden.

Voraussetzungen

Für diesen Artikel geht ich davon aus, dass Sie OpenShift 4.10 oder höher mit Administratorrechten für diesen Cluster ausführen. Ich führe einen Red Hat OpenShift on AWS 4.13 Cluster aus, der über das Red Hat Demo-System bereitgestellt wird.

Stellen Sie außerdem sicher, dass Sie beim Cluster in einer Terminalumgebung mit verfügbaren Binärdateien oc und helm angemeldet sind, bevor Sie mit einem der folgenden Schritte fortfahren. Verwenden Sie die folgenden Befehle, um diese Binärdateien zu überprüfen.

Überprüfen Sie zunächst die Voraussetzungen. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

$ 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. Vault bereitstellen

In diesem Artikel verwende ich Vault im dev -Modus, der für die Produktion nicht geeignet ist. Sie können diesen Schritt überspringen, wenn bereits eine Vault-Instanz ausgeführt wird. Stellen Sie eine Instanz von Hashicorp Vault] bereit:

$ 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. Vault konfigurieren

Nachdem Sie eine Vault-Instanz bereitgestellt haben, führen Sie ein Shell-Skript für den Vault-Pod aus, um ihn für diese Demonstration mithilfe der hervorragenden vault CLI schnell zu konfigurieren.

Das Konfigurationsskript legt die Kubernetes auth-Methode für Vault fest, aktiviert einen kv-v2 Secret-Speicher, erstellt ein Test-Secret und erstellt eine Zugriffsrichtlinie für dieses Secret.

Klonen Sie die Quelle:

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

Kopieren Sie das Konfigurationsskript in den Vault-Pod:

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

Führen Sie dann das Skript remote im Vault-Pod aus:

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

3. Konfigurieren Sie argocd-vault-plugin-auth als Vault

Sobald Vault bereitgestellt und konfiguriert ist, müssen wir das geplante Argo CD Vault-Plugin aktivieren, um uns mit einem Kubernetes-Service-Account bei Vault authentifizieren zu können.

Erstellen Sie einen Namespace für ArgoCD:

$ oc new-project vplugindemo

Erstellen Sie ein Servicekonto für die Authentifizierung des Argo Vault-Plugins:

$ oc create serviceaccount vplugin

Erstellen Sie eine Rolle in Vault, um Ihr Servicekonto an die Richtlinie zu binden:

$ 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

Abschließend erstellen Sie ein Secret für das Argo Vault-Plugin, das bei der Konfiguration der Vault-Verbindung verwendet werden soll.

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

4. Konfigurieren Sie die Verabeitung für das argocd-vault-plugin

Nach der Konfiguration der Authentifizierung müssen Sie nun definieren, wofür der Argo CD Vault-Plugin Sidecar verwendet wird. Dies ist ein zweistufiger Prozess. Zuerst müssen Sie einen Discover-Befehl und dann einen Generate-Befehl angeben. Weitere Informationen finden Sie in diesen dokumentierten Beispielen, einschließlich Szenarien für helm oder kustomizebasierte Anwendungen. Mein Beispiel verwendet den einfachsten Ansatz der Erkennung von Dateien, die eine Annotation enthalten, und verwendet dann argocd-vault-plugin generate., um die Dateien als Vorlage zu verwenden.

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

5. OpenShift GitOps bereitstellen

Mit dem bereitgestellten und konfigurierten Vault und dem konfigurierten argocd-vault-plugin können Sie nun den OpenShift-GitOps-Operator bereitstellen:

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

Erstellen Sie nach der erfolgreichen Installation des Operators Ihre Argo-CD-Instanz mit der benutzerdefinierten Ressource:

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

6. Erstellen Sie die Argo CD-Anwendung

Sobald Argo CD ausgeführt wird, erstellen Sie diese Baseline-Beispielanwendung. Dadurch wird auf dem Cluster eine Secret-Ressource erstellt, deren Standardplatzhalterwerte durch Werte aus Vault ersetzt wurden.

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

Zusammenfassung

Sie haben mit Hashicorp Vault, Red Hat OpenShift GitOps und dem Argo CD Vault-Plugin als Sidecar erfolgreich Platzhalterwerte in einem Secret in Git verwendet. Diese Methode eignet sich hervorragend zum Schutz sensibler Daten.


Über den Autor

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

Nach Thema durchsuchen

automation icon

Automatisierung

Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen

AI icon

Künstliche Intelligenz

Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen

open hybrid cloud icon

Open Hybrid Cloud

Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.

security icon

Sicherheit

Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren

edge icon

Edge Computing

Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen

Infrastructure icon

Infrastruktur

Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen

application development icon

Anwendungen

Entdecken Sie unsere Lösungen für komplexe Herausforderungen bei Anwendungen

Original series icon

Original Shows

Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten