Erste Schritte: Automatische Migration von CES-VM zu CES-MN
1. Quellinstanz einrichten
- Mit dem Terminal der Instanz verbinden (z.B. direkt über die VM oder per SSH).
- In den Superuser-Modus wechseln:
sudo su - Die installierten Dogus und deren Version ermitteln:
cesapp list - CES-exporter installieren:
apt update && apt install ces-exporter - Überprüfen, ob der ces-exporter läuft:
docker ps | grep ces-exporter - Den API-Key für eine sichere HTTPS-Verbindung konfigurieren:
etcdctl set /config/ces-exporter/authentication/api_key <my-api-key> - Falls noch kein SSH-Schlüsselpaar existiert, muss eines ohne Passphrase erzeugt werden (z.B. auf Ihrem Host – der Exporter benötigt nur den öffentlichen Schlüssel):
ssh-keygen -
Den öffentlichen SSH-Schlüssel für die Verbindung zwischen Importer & Exporter konfigurieren:
- Mit Datei (z.B. „mykey.pub“): `cat mykey.pub | etcdctl set /config/ces-exporter/authentication/public_key`
- Ohne Datei:
etcdctl set /config/ces-exporter/authentication/public_key "<public key>"
- Den FQDN für die spätere Konfiguration des Importers ermitteln:
etcdctl get /config/_global/fqdn
2. Zielinstanz einrichten
- Den k8s-ecosystem Installationsleitfaden befolgen, um eine neue Multinode-CES-Instanz einzurichten. a. Die Dogus müssen in den gleichen Versionen wie auf der zu migrierenden Instanz installiert werden.
- Mit der Instanz verbinden, indem der Kubernetes-Kontext entsprechend gesetzt wird.
-
Ein Kubernetes-Secret mit folgenden Informationen für den Importer erstellen:
- API-Key (siehe 1.6)
- privater SSH-Schlüssel (siehe 1.7)
- Mail-Passwort (wenn benötigt)
Das Secret mit dem folgenden
kubectl-Befehl erstellen:kubectl -n ecosystem create secret generic ces-importer-secret \ --from-file=privateKey=</path/to_my/Private-key> \ --from-literal=apiKey=<my-api-key> \ --from-literal=mailPassword=<your-mail-password>Wenn der Mailserver ohne Passwort zugänglich ist, genügt ein leerer String.
-
Den ces-importer durch Anwendung des folgenden YAML im Cluster installieren:
apiVersion: k8s.cloudogu.com/v1 kind: Component metadata: labels: app: ces name: ces-importer namespace: ecosystem spec: name: ces-importer namespace: k8s version: 1.0.0 valuesYamlOverwrite: | config: api: host: <FQDN der Quellinstanz ohne Protokoll, z.B. lop.example.com> skipTLSVerify: <true, wenn kein Zertifikat oder ein selbst-signiertes Zertifikat vorhanden> migration: regularSchedule: <Zeitpunkt der Migration(en) im CRON-Format in Serverzeit> finalSchedule: <Zeitstempel für den Start der finalen Migration im RFC-3339-Format, z.B. „2025-04-03T12:34:56Z“ (Serverzeit)> smtp: enabled: <true, wenn Mails versendet werden sollen; ansonsten kann der Rest dieses Abschnitts entfallen> server: <smtp.example.com> port: <der Port des Mail-Servers, z.B. 25> username: <der Benutzername zur Authentifizierung am Mailserver; ein leerer String wenn nicht benötigt> from: <Absender-Adresse> to: - <Empfänger-Adresse(n)> - Überprüfen, ob die Komponente bereit ist:
kubectl get component/ces-importer
3. Migration
- Jetzt muss nur noch auf den konfigurierten Zeitpunkt in
config/migration/regularSchedulegewartet werden. Dann startet der Migrations-Job automatisch und überträgt die Daten und Konfiguration Ihrer Quell- zur Zielinstanz. - Abschließend die migrierten Daten prüfen.
Im Fehlerfall siehe Troubleshooting