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 kustomize
basierte 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.
Mehr davon
Nach Thema durchsuchen
Automatisierung
Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen
Künstliche Intelligenz
Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen
Open Hybrid Cloud
Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.
Sicherheit
Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren
Edge Computing
Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen
Infrastruktur
Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen
Anwendungen
Entdecken Sie unsere Lösungen für komplexe Herausforderungen bei Anwendungen
Original Shows
Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten
Produkte
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Cloud-Services
- Alle Produkte anzeigen
Tools
- Training & Zertifizierung
- Eigenes Konto
- Kundensupport
- Für Entwickler
- Partner finden
- Red Hat Ecosystem Catalog
- Mehrwert von Red Hat berechnen
- Dokumentation
Testen, kaufen und verkaufen
Kommunizieren
Über Red Hat
Als weltweit größter Anbieter von Open-Source-Software-Lösungen für Unternehmen stellen wir Linux-, Cloud-, Container- und Kubernetes-Technologien bereit. Wir bieten robuste Lösungen, die es Unternehmen erleichtern, plattform- und umgebungsübergreifend zu arbeiten – vom Rechenzentrum bis zum Netzwerkrand.
Wählen Sie eine Sprache
Red Hat legal and privacy links
- Über Red Hat
- Jobs bei Red Hat
- Veranstaltungen
- Standorte
- Red Hat kontaktieren
- Red Hat Blog
- Diversität, Gleichberechtigung und Inklusion
- Cool Stuff Store
- Red Hat Summit