Beste Möglichkeit zur Automatisierung der Credential-Synchronisierung zwischen selbstgehosteten Dev- und Prod-n8n-Instanzen?

Hallo zusammen,

Ich betreibe 2 selbst gehostete (EKS) n8n-Instanzen – dev und prod. Derzeit muss ich, wenn ich Anmeldedaten in dev aktualisiere oder hinzufüge, diese auch manuell in prod neu erstellen/aktualisieren, was mühsam und fehleranfällig ist, besonders wenn die Anzahl der Workflows und Anmeldedaten wächst.

Ich weiß nicht, wie ich diesen manuellen Synchronisierungsschritt vermeiden kann. Was sind die besten Möglichkeiten, um die Synchronisierung von Anmeldedaten zwischen dev und prod selbst gehosteten Instanzen zu automatisieren?

Ich würde mich zu ein paar Dingen freuen:

  • Gibt es eine unterstützte Möglichkeit, Anmeldedaten über die CLI oder API zu exportieren/importieren, die skriptgesteuert werden könnte?
  • Hat jemand eine CI/CD-Pipeline eingerichtet (z. B. mit Versionskontrolle + n8n CLI), um Anmeldedaten/Workflows von dev zu prod zu promoten?
  • Sind Umgebungsvariablen oder ein externer Secrets Manager (Vault, AWS Secrets Manager, etc.) ein besserer langfristiger Ansatz als das direkte Speichern von Anmeldedaten in jeder Instanz?
  • Ich würde mich über Tipps, Workflows oder Beispiele von Leuten freuen, die dieses Problem gelöst haben. Danke!

Die n8n CLI ist die primäre Methode, um dies zu skriptieren. Du kannst tatsächlich sowohl Workflows als auch Anmeldedaten exportieren und importieren.

Das Hindernis: Der Verschlüsselungsschlüssel n8n verschlüsselt alle Anmeldedaten in seiner Datenbank mit dem N8N_ENCRYPTION_KEY. Wenn deine Dev- und Prod-EKS-Instanzen unterschiedliche Schlüssel haben (was sie aus Sicherheitsgründen sollten), wird ein direkter Export/Import verschlüsselter Dateien in Prod fehlschlagen, da die Prod-Instanz sie nicht entschlüsseln kann.

Die Lösung: Entschlüsselte Zwischendateien Du kannst das Flag --decrypted verwenden, um dies zu umgehen, musst aber die resultierenden Klartextdateien mit äußerster Vorsicht behandeln.

Vorgeschlagener Workflow:

  1. Dev-Seite: Führe ein Skript in deinem Dev-Container aus: n8n export:credentials --all --decrypted --output=credentials_export/
  2. Sichere Übertragung: Verschiebe diese JSON-Dateien an einen sicheren, kurzlebigen Ort (z. B. einen verschlüsselten AWS-S3-Bucket mit einer Lifecycle-Richtlinie zum Löschen nach 1 Tag oder einen AWS Secrets Manager-Eintrag). Committe diese Klartextdateien niemals in dein Git-Repository.
  3. Prod-Seite (CI/CD-Pipeline):
    • Rufe die entschlüsselten JSONs aus deinem sicheren Speicher ab.
    • Führe den Import-Befehl in deinem Prod-Container aus: n8n import:credentials --input=credentials_export/ --separate
    • Lösche die lokalen Dateien sofort nach dem Import.

Für ein professionelles EKS-Setup solltest du dich von der Behandlung der internen Datenbank von n8n als „Single Source of Truth