Dieses Migrationstool unterstützt Sie bei der Migration eines apigeectl
-basierten Hybridclusters zu einem Helm-basierten Hybridcluster.
Dieses Tool führt keine tatsächliche Ersetzung von Clusterkomponenten durch. Es ist idempotent und kann mehrmals für denselben Cluster ausgeführt werden, wobei jedes Mal eine Teilmenge der Komponenten und Organisationen vorbereitet wird.
Sie können alle apigee
-Komponenten gleichzeitig migrieren. Das Helm-Upgrade kann nach der Ausführung des Tools pro Komponente durchgeführt werden.
Informationen zum Verwalten von Hybrid-Clustern, die Sie mit diesem Tool zur Helm-Verwaltung migriert haben, finden Sie unter Apigee Hybrid mit Helm-Diagrammen installieren und verwalten.
Vorbereitung
- Helm-Version 3.10+.
-
Eine funktionierende
kubeconfig
-Datei, die auf einen Cluster mit einer funktionierenden Apigee Hybrid 1.10-Installation verweist. - Berechtigungen zum Ändern der Metadaten und Annotationen in den Kubernetes-Ressourcen der Hybrid-Komponenten, die Sie migrieren möchten.
Umfang
Dieses Tool unterstützt zur Laufzeit die folgenden Optionen:
-
Anpassung des Namespace für
apigee
-Ressourcen. Standard-Namespace:apigee
- Migration nur von ausgewählten Hybrid-Komponenten Standard: Alle Komponenten werden migriert
- Migration von nur einer Organisation
- Migration von nur einer Umgebung
-
Migration von nur einer Umgebungsgruppe (
apigee-virtualhost
) - Anpassung der Helm-Releasenamen für Organisationen, Umgebungen und Umgebungsgruppen
Beschränkungen
-
Dieses Tool unterstützt keine Anpassung der Helm-Releasenamen für die folgenden Hybrid-Komponenten:
apigee-operator
,apigee-datastore
,apigee-redis
,apigee-telemetry
undapigee-ingress-manager
. - Interaktive Anpassungen der Helm-Releasenamen für Organisationen, Umgebungen und Umgebungsgruppen bleiben nicht automatisch zwischen Ausführungen erhalten. Sie können die temporäre Datei bearbeiten und als Option in späteren Ausführungen bereitstellen.
-
Umgebungs- und Umgebungsgruppenfilterung werden nur nach Namen durchgeführt. In einigen Fällen kann dies dazu führen, dass mehrere Umgebungen und Umgebungsgruppen in Multi-Organisations-Clustern migriert werden.
Beispiel: In einem Multi-Organisations-Cluster mit den Organisationen
org1
undorg2
, wenn die Umgebungprod
in beiden Organisationen vorhanden ist und nur--env=prod
angegeben ist, werden beide Umgebungen migriert. Wenn Sie nur eine einzelne Umgebung migrieren möchten, müssen Sie auch den Organisationsfilter--org=org1
oder--org=org2
angeben.
Nutzung
Syntax
apigee-helm-migration [--apigee-namespace=] [--components=] [--dry-run] [--env=org1] [--env-group=org2] [--org=baz] [--kubeconfig=] [-y] [-v] [-f /path/to/releaseNames.yaml]
Generierte Helm-Releasenamen
Jedes Helm-Diagramm, das in einem Cluster bereitgestellt wird, muss einen Releasenamen haben, der innerhalb eines Namespace eindeutig ist. Helm-Releasenamen haben keine Namenskonvention oder Einschränkung in Bezug auf den Diagrammnamen. Das Migrationstool generiert für jede Komponente eindeutige Helm-Releasenamen.
Diagramm | Cluster mit einer einzelnen Organisation | Cluster mit mehreren Organisationen |
---|---|---|
apigee-operator |
operator |
operator |
apigee-datastore |
datastore |
datastore |
apigee-telemetry |
telemetry |
telemetry |
apigee-redis |
redis |
redis |
apigee-ingress-manager |
ingress-manager |
ingress-manager |
apigee-org |
ORG_NAME |
ORG_NAME |
apigee-env |
ENV_NAME[-env[-n]](1) |
ORG_NAME-ENV_NAME[-env[-n]] (1) |
apigee-virtualhost (envgroup) |
VH_NAME[-env-group[-n]] (1) |
ORG_NAME-VH_NAME[-env-group[-n]] (1) |
(1) Namen erhalten das Suffix |
Helm-Releasenamen anpassen
Das Migrationstool ermöglicht die interaktive Anpassung von Helm-Releasenamen. Wenn Sie die Helm-Releasenamen nicht interaktiv anpassen möchten:
-
Führen Sie das Tool einmal aus und beenden Sie es bei der ersten Eingabeaufforderung, um eine temporäre Datei mit den automatisch generierten Releasenamen zu erstellen. Die Zeile sollte etwa so aussehen:
INFO: 21:32:56 using temp file for release names: /tmp/apigee-helm-migration-1229129207-releaseNames
-
Verschieben oder kopieren und bearbeiten Sie diese Datei. Sie können diese bearbeitete Datei mit der Option
-f
übergeben, wenn Sie das Migrationstool ausführen. Die automatisch generierten Releasenamen sehen so aus:orgs: example-apigee-org: helmReleaseName: example-apigee-org envs: prod: helmReleaseName: prod envGroups: prod-envgroup: helmReleaseName: prod-envgroup
Bearbeiten Sie das Feld
helmReleaseName
dieses Objekts, um die Helm-Releasenamen für eine Organisation, Umgebung oder Umgebung anzupassen. Wenn Sie beispielsweise den Organisations-Release incustom-org
, den Umgebungs-Release incustom-env
und den Umgebungsgruppen-Release incustom-group
umbenennen möchten, sieht die resultierende Datei so aus:orgs: example-apigee-org: helmReleaseName: custom-org envs: prod: helmReleaseName: custom-env envGroups: prod-envgroup: helmReleaseName: custom-group
Benutzerdefinierte Namespaces verwenden
Apigee Hybrid wird in zwei Kubernetes-Namespaces ausgeführt:
apigee-system
: Die Komponenteapigee-operator
wird immer im Namespaceapigee-system
ausgeführt. Das Helm-Migrationstool aktualisiert die Komponenteapigee-operator
im Namespaceapigee-system
, unabhängig davon, was Sie mit dem Flag--apigee-namespace
angeben.apigee
: Alle Hybrid-Komponenten außerapigee-operator
werden in diesem Namespace ausgeführt.apigee
ist der Standardname. Sie können für diese Komponenten einen beliebigen benutzerdefinierten Namespace verwenden.Wenn Sie einen benutzerdefinierten Namespace verwenden, müssen Sie ihn mit dem Flag
--apigee-namespace my_custom_namespace
angeben, wenn Sie das Helm-Migrationstool ausführen.Sie müssen der Überschreibungsdatei auch das Attribut
namespace: my_custom_namespace
der obersten Ebene hinzufügen.
Anleitung
- Laden Sie das Migrationstool herunter.
Linux
-
Speichern Sie die aktuelle Versionsnummer mit dem folgenden Befehl in einer Variablen:
export VERSION=$(curl -s \ "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
-
Prüfen Sie mit dem folgenden Befehl, ob die Variable mit einer Versionsnummer ausgefüllt wurde. Wenn Sie eine andere Version verwenden möchten, können Sie diese stattdessen in einer Umgebungsvariablen speichern.
echo $VERSION
Beispiel:
echo $VERSION
1.0.5 -
Laden Sie das Releasepaket für Ihr Betriebssystem mit dem folgendem Befehl herunter:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_linux_64.tar.gz
-
Extrahieren Sie die komprimierten Dateien mit dem folgenden Befehl:
tar -xzf apigee-helm-migration_linux_64.tar.gz
Mac OS
-
Speichern Sie die aktuelle Versionsnummer mit dem folgenden Befehl in einer Variablen:
export VERSION=$(curl -s \ "https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt?ignoreCache=1")
-
Prüfen Sie mit dem folgenden Befehl, ob die Variable mit einer Versionsnummer ausgefüllt wurde. Wenn Sie eine andere Version verwenden möchten, können Sie diese stattdessen in einer Umgebungsvariablen speichern.
echo $VERSION
Beispiel:
echo $VERSION
1.0.5 -
Laden Sie das Releasepaket für Ihr Betriebssystem mit dem folgendem Befehl herunter:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/${VERSION}/apigee-helm-migration_mac_64.tar.gz
-
Extrahieren Sie die komprimierten Dateien mit dem folgenden Befehl:
tar -xzf apigee-helm-migration_mac_64.tar.gz
Windows
-
Speichern Sie die aktuelle Versionsnummer mit dem folgenden Befehl in einer Variablen:
for /f "tokens=*" %a in ('curl -s ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/current-version.txt') ^ do set VERSION=%a
-
Prüfen Sie mit dem folgenden Befehl, ob die Variable mit einer Versionsnummer ausgefüllt wurde. Wenn Sie eine andere Version verwenden möchten, können Sie diese stattdessen in einer Umgebungsvariablen speichern.
echo %VERSION%
Beispiel:
echo %VERSION%
1.0.5 -
Laden Sie das Releasepaket für Ihr Betriebssystem mit dem folgendem Befehl herunter:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-migration-tool/%VERSION%/apigee-helm-migration_windows_64.tar.gz
-
Extrahieren Sie die komprimierten Dateien mit dem folgenden Befehl:
tar xzvf apigee-helm-migration_windows_64.tar.gz
-
Speichern Sie die aktuelle Versionsnummer mit dem folgenden Befehl in einer Variablen:
-
Führen Sie das Migrationstool aus. Wenn die Standardoptionen akzeptabel sind, ist es ausreichend, das Tool ohne Argumente auszuführen und die Eingabeaufforderung zu genehmigen, wenn die generierten Helm-Releasenamen zufriedenstellend sind. Hier einige Beispielszenarien:
-
Eine einfache Installation mit der Standard-
kubeconfig
(~/.kube/config
), dem Standard-apigee
-Namespace und den Standard-Helm-Releasenamen.Der folgende Befehl sollte für die meisten, wenn nicht für alle Installationen, ausreichen. Helm-Upgradevorgänge können pro Komponente ausgeführt werden, nachdem das Tool ausgeführt wurde.
./apigee-helm-migration
- Alle Komponenten mithilfe eines benutzerdefinierten Namespace migrieren:
./apigee-helm-migration --apigee-namespace my_custom_namespace
-
Nur die Komponenten
operator
unddatastore
migrieren:./apigee-helm-migration --components operator,datastore
INFO: 00:22:48 using kubeconfig file /usr/local/google/home/example/.kube/config INFO: 00:22:48 namespace for apigee resources: INFO: 00:22:48 apigee INFO: 00:22:48 processing all organizations in cluster INFO: 00:22:48 Components to migrate: INFO: 00:22:48 operator,datastore INFO: 00:22:48 dry-run: INFO: 00:22:48 false Continue with patching apigee resources for Helm migration? [y/n]: y INFO: 00:22:52 Processing component: operator INFO: 00:22:54 Processing component: datastore INFO: 00:22:55 Migration successful!
-
Auf eine bestimmte
kubeconfig
-Datei verweisen und einen anderen Namen für den Namespaceapigee
angeben../apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
-
Alle Komponenten, aber nur eine Organisation migrieren:
./apigee-helm-migration --org=some-test-org
Das folgende Beispiel zeigt eine Ausgabe einer erfolgreichen Migration:
INFO: 21:32:55 using kubeconfig file /usr/local/google/home/example/.kube/config INFO: 21:32:55 namespace for apigee resources: INFO: 21:32:55 apigee INFO: 21:32:55 processing all organizations in cluster INFO: 21:32:55 processing all components INFO: 21:32:55 dry-run: INFO: 21:32:55 false INFO: 21:32:55 cluster Apigee information: INFO: 21:32:55 Apigee Organizations found: INFO: 21:32:56 example-hybrid-dev INFO: 21:32:56 Apigee Environments found (org: env): INFO: 21:32:56 example-hybrid-dev : prod INFO: 21:32:56 Apigee EnvGroups(apigeerouteconfigs) found (org: envGroup): INFO: 21:32:56 example-hybrid-dev : prod-envgroup INFO: 21:32:56 using temp file for release names: /tmp/apigee-helm-migration-1229129207-releaseNames INFO: 21:32:56 Helm release names for Apigee orgs/envs/envgroups: orgs: example-hybrid-dev: helmReleaseName: example-hybrid-dev envs: prod: helmReleaseName: prod envGroups: prod-envgroup: helmReleaseName: prod-envgroup Make changes to the release names for Apigee orgs/env/envgroups? [y/n]: n Continue with patching apigee resources for Helm migration? [y/n]: y INFO: 21:32:59 Processing component: operator INFO: 21:33:01 Processing component: datastore INFO: 21:33:01 Processing component: redis INFO: 21:33:02 Processing component: ingress-manager INFO: 21:33:02 Processing component: telemetry INFO: 21:33:03 Processing component: orgs INFO: 21:33:05 Processing component: envs INFO: 21:33:06 Processing component: env-groups INFO: 21:33:07 Migration successful!
Mögliche Fehler:
- Fehler beim Parsen der Releasenamen-Datei: Prüfen Sie die übergebene Releasenamen-Datei.
-
Ressourcen nicht gefunden: Prüfen Sie, ob Apigee Hybrid vollständig installiert ist und ob Sie Berechtigungen für den Zugriff auf die
apigee
-Ressourcen haben.
-
Nächster Schritt
Fahren Sie mit der Installation der Apigee Hybrid-Helm-Diagramme fort, wie in Apigee Hybrid mit Helm-Diagrammen installieren und verwalten beschrieben.
Ausgabe von -help
./apigee-helm-migration --help
Usage of ./apigee-helm-migration: -apigee-namespace string namespace used for apigee resources (default "apigee") -components string CSV of components to migrate. If empty then all components are migrated. Valid values are: operator,datastore,redis,ingress-manager,telemetry,orgs,envs,env-groups -dry-run perform a dry-run -env string restrict migration to a singular supplied env. If empty then all envs detected in the cluster are migrated -env-group string restrict migration to a singular supplied envGroup. If empty then all envGroups detected in the cluster are migrated -kubeconfig string (optional) absolute path to the kubeconfig file (default "/usr/local/google/home/example/.kube/config") -org string restrict migration to a singular supplied org. If empty then all orgs detected in the cluster are migrated -v Increased logging verbosity -y don't prompt for confirmation or for configuration of Helm releases