Alat migrasi ini membantu memigrasikan cluster hybrid berbasis apigeectl
ke cluster hybrid berbasis Helm.
Alat ini tidak melakukan penggantian aktual
atas komponen cluster apa pun. Metode ini bersifat idempoten dan dapat dijalankan beberapa kali di cluster yang sama, dengan menyiapkan subset komponen dan organisasi setiap waktu.
Anda dapat memigrasikan semua komponen apigee
sekaligus, dan operasi upgrade
Helm dapat dilakukan per komponen setelah alat
dijalankan.
Lihat Menginstal dan mengelola Apigee Hybrid dengan diagram Helm untuk mengetahui informasi tentang cara mengelola cluster hybrid yang telah Anda migrasikan ke pengelolaan Helm dengan alat ini.
Prasyarat
- Helm versi 3.10+.
-
File
kubeconfig
yang berfungsi dan mengarah ke cluster dengan penginstalan Apigee Hybrid 1.10 yang berfungsi. - Izin untuk mengubah metadata dan anotasi pada resource Kubernetes dari komponen hybrid yang ingin Anda migrasikan.
Cakupan
Alat ini mendukung opsi berikut saat runtime:
-
Penyesuaian namespace untuk resource
apigee
. Namespace default:apigee
- Migrasi komponen hybrid yang dipilih saja. Default: semua komponen dimigrasikan
- Migrasi dari satu organisasi saja
- Migrasi satu env saja
-
Hanya migrasi satu env-group (
apigee-virtualhost
) - Penyesuaian nama rilis Helm untuk organisasi, lingkungan, dan grup lingkungan.
Batasan
-
Alat ini tidak mendukung penyesuaian nama rilis Helm untuk komponen hybrid ini:
apigee-operator
,apigee-datastore
,apigee-redis
,apigee-telemetry
, danapigee-ingress-manager
. - Penyesuaian interaktif yang dilakukan pada nama rilis Helm untuk organisasi, envs, dan env-group tidak secara otomatis dipertahankan di antara operasi. Anda dapat mengedit file sementara tersebut dan menyediakannya sebagai opsi pada eksekusi berikutnya.
-
Pemfilteran Env dan env-group hanya dilakukan berdasarkan nama. Dalam beberapa kasus, hal ini dapat mengakibatkan beberapa lingkungan dan grup env-group dimigrasikan di cluster multi-org.
Misalnya, pada cluster multi-org dengan org
org1
danorg2
, jika envprod
ada di kedua org, dan hanya--env=prod
yang ditentukan, kedua env akan dimigrasikan. Jika hanya ingin memigrasikan satu lingkungan, Anda juga harus menentukan filter org--org=org1
atau--org=org2
.
Penggunaan
Sintaksis
apigee-helm-migration [--apigee-namespace=] [--components=] [--dry-run] [--env=org1] [--env-group=org2] [--org=baz] [--kubeconfig=] [-y] [-v] [-f /path/to/releaseNames.yaml]
Nama rilis Helm yang dihasilkan
Setiap Diagram Helm yang di-deploy pada cluster harus memiliki nama rilis, yang harus bersifat unik dalam namespace. Nama rilis helm tidak memiliki konvensi atau batasan penamaan apa pun terkait dengan nama diagram. Alat migrasi akan menghasilkan nama rilis Helm yang unik untuk setiap komponen.
Diagram | Cluster org tunggal | Cluster multi-org |
---|---|---|
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) Nama diberi akhiran |
Menyesuaikan nama rilis Helm
Alat migrasi memungkinkan penyesuaian interaktif untuk nama rilis Helm. Jika Anda ingin menyesuaikan nama rilis Helm secara noninteraktif:
-
Jalankan alat sekali dan keluar pada perintah pertama untuk membuat file sementara
yang berisi nama rilis yang dibuat secara otomatis. Anda akan melihat baris seperti:
INFO: 21:32:56 using temp file for release names: /tmp/apigee-helm-migration-1229129207-releaseNames
-
Pindahkan atau salin, lalu edit file ini. Anda dapat meneruskan file yang diedit ini dengan opsi
-f
saat menjalankan alat migrasi. Nama rilis yang dibuat secara otomatis akan terlihat seperti ini:orgs: example-apigee-org: helmReleaseName: example-apigee-org envs: prod: helmReleaseName: prod envGroups: prod-envgroup: helmReleaseName: prod-envgroup
Untuk menyesuaikan nama rilis Helm untuk organisasi, envgroup, atau envgroup, edit kolom
helmReleaseName
objek tersebut. Misalnya, untuk mengganti nama rilis org menjadicustom-org
, rilis env menjadicustom-env
, dan rilis envgroup menjadicustom-group
, file yang dihasilkan akan terlihat seperti ini:orgs: example-apigee-org: helmReleaseName: custom-org envs: prod: helmReleaseName: custom-env envGroups: prod-envgroup: helmReleaseName: custom-group
Menggunakan namespace kustom
Apigee Hybrid berjalan di dua namespace Kubernetes:
apigee-system
: Komponenapigee-operator
selalu berjalan di namespaceapigee-system
. Alat migrasi Helm akan mengupdate komponenapigee-operator
dalam namespaceapigee-system
, apa pun yang Anda tentukan dengan flag--apigee-namespace
.apigee
: Semua komponen hybrid kecualiapigee-operator
berjalan di namespace ini.apigee
adalah nama default-nya. Anda dapat menggunakan namespace kustom apa pun untuk komponen ini.Jika menggunakan namespace kustom, Anda harus menentukannya dengan flag
--apigee-namespace my_custom_namespace
saat menjalankan alat migrasi Helm.Anda juga harus menambahkan properti level atas
namespace: my_custom_namespace
ke file penggantian.
Petunjuk
-
Temukan alat migrasi.
Alat migrasi dikemas dengan
apigeectl
mulai versi 1.10.3, pada/tools/migration/
. -
Ekstrak file yang dikompresi menggunakan salah satu perintah berikut:
-
Mac:
tar -xzf apigee-helm-migration_1.0.2_mac_64.tar.gz
-
Linux:
tar -xzf apigee-helm-migration_1.0.2_linux_64.tar.gz
-
Windows:
tar -xzf apigee-helm-migration_1.0.2_windows_64.zip
-
Mac:
-
Jalankan alat migrasi. Jika opsi default dapat diterima, cukup
jalankan alat tanpa argumen apa pun, dan setujui perintah
jika nama rilis helm yang dihasilkan memuaskan. Beberapa contoh
skenario diberikan di bawah ini:
-
Penginstalan sederhana, menggunakan
kubeconfig
(~/.kube/config
) default, namespaceapigee
default, dan nama rilis Helm default.Perintah berikut seharusnya memadai untuk sebagian besar, atau bahkan semua, penginstalan. Operasi upgrade helm dapat dilakukan per komponen setelah alat dijalankan.
./apigee-helm-migration
- Memigrasikan semua komponen menggunakan namespace kustom:
./apigee-helm-migration --apigee-namespace my_custom_namespace
-
Hanya memigrasikan komponen
operator
dandatastore
:./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!
-
Mengarahkan ke file
kubeconfig
tertentu dan menentukan nama yang berbeda untuk namespaceapigee
../apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
-
Memigrasikan semua komponen, tetapi hanya satu org:
./apigee-helm-migration --org=some-test-org
Berikut ini contoh output dari migrasi yang berhasil:
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!
Potensi error:
- Error saat mengurai file nama rilis: Periksa file nama rilis yang diteruskan.
-
Resource tidak ditemukan: Pastikan Apigee Hybrid telah diinstal sepenuhnya, dan Anda memiliki izin untuk mengakses resource
apigee
.
-
Langkah berikutnya
Lanjutkan penginstalan diagram Helm hybrid Apigee dengan petunjuk dalam Menginstal dan mengelola Apigee Hybrid dengan diagram Helm.
Output -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