Alat migrasi ini membantu memigrasikan cluster hybrid berbasis apigeectl ke cluster hybrid berbasis Helm.
Alat ini tidak melakukan penggantian komponen cluster yang sebenarnya. Alat ini bersifat idempoten dan dapat dijalankan berkali-kali pada cluster yang sama, menyiapkan subset komponen dan organisasi setiap
kali.
Anda dapat memigrasikan semua apigee komponen sekaligus, dan operasi upgrade Helm
dapat dilakukan per komponen setelah alat
dijalankan.
Lihat Menginstal dan mengelola Apigee hybrid dengan chart Helm untuk mengetahui informasi tentang cara mengelola cluster hybrid yang telah Anda migrasikan ke pengelolaan Helm dengan alat ini.
Prasyarat
- Helm versi v3.14.2+.
-
File
kubeconfigyang berfungsi dan mengarah ke cluster dengan penginstalan Apigee hybrid 1.16 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 hanya komponen hybrid yang dipilih. Default: semua komponen dimigrasikan
- Migrasi hanya satu organisasi
- Migrasi hanya satu lingkungan
-
Migrasi hanya satu grup lingkungan (
apigee-virtualhost) - Penyesuaian nama rilis Helm untuk organisasi, lingkungan, dan grup lingkungan.
Batasan
-
Alat ini tidak mendukung penyesuaian nama rilis Helm untuk komponen hybrid
berikut:
apigee-operator,apigee-datastore,apigee-redis,apigee-telemetry, danapigee-ingress-manager. - Penyesuaian interaktif yang dilakukan pada nama rilis Helm untuk organisasi, lingkungan, dan grup lingkungan tidak otomatis dipertahankan antar-proses. Anda dapat mengedit file sementara dan menyediakannya sebagai opsi dalam proses berikutnya.
-
Pemfilteran lingkungan dan grup lingkungan hanya dilakukan berdasarkan nama. Dalam beberapa kasus, hal ini dapat menyebabkan beberapa lingkungan dan grup lingkungan dimigrasikan pada cluster multi-organisasi.
Misalnya, pada cluster multi-organisasi dengan organisasi
org1danorg2, jika lingkunganprodada di kedua organisasi, dan hanya--env=prodyang ditentukan, kedua lingkungan akan di migrasikan. Jika hanya ingin memigrasikan satu lingkungan, Anda juga harus menentukan filter organisasi--org=org1atau--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 dibuat
Setiap Chart Helm yang di-deploy di cluster harus memiliki nama rilis, yang harus unik dalam namespace. Nama rilis Helm tidak memiliki konvensi penamaan atau batasan apa pun yang terkait dengan nama chart. Alat migrasi alat migrasi membuat nama rilis Helm yang unik untuk setiap komponen.
| Chart | Cluster satu organisasi | Cluster multi-organisasi |
|---|---|---|
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 nama rilis Helm. Jika Anda ingin menyesuaikan nama rilis Helm secara non-interaktif:
-
Jalankan alat sekali dan keluar pada perintah pertama untuk membuat file sementara
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
-fsaat Anda menjalankan alat migrasi. Nama rilis yang dibuat secara otomatis terlihat seperti:orgs: example-apigee-org: helmReleaseName: example-apigee-org envs: prod: helmReleaseName: prod envGroups: prod-envgroup: helmReleaseName: prod-envgroupUntuk menyesuaikan nama rilis Helm untuk organisasi, lingkungan, atau grup lingkungan, edit kolom
helmReleaseNamedari objek tersebut. Misalnya, untuk mengganti nama rilis organisasi menjadicustom-org, rilis lingkungan menjadicustom-env, dan rilis grup lingkungan menjadicustom-group, file yang dihasilkan akan terlihat seperti:orgs: example-apigee-org: helmReleaseName: custom-org envs: prod: helmReleaseName: custom-env envGroups: prod-envgroup: helmReleaseName: custom-group
Menggunakan namespace kustom
Apigee hybrid v1.13 dan yang lebih baru berjalan dalam satu namespace Kubernetes. Semua komponen hybrid berjalan di
namespace ini. apigee adalah nama default. 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 tingkat atas namespace: my_custom_namespace ke file penggantian.
Directions
-
Temukan alat migrasi.
Alat migrasi dikemas dengan
apigeectldi bagian/tools/migration/. -
Ekstrak file terkompresi 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 dibuat memuaskan. Beberapa contoh
skenario diberikan di bawah:
-
Penginstalan sederhana, menggunakan
kubeconfigdefault (~/.kube/config), namespaceapigeedefault, dan nama rilis Helm default.Perintah berikut sudah cukup untuk sebagian besar, jika tidak semua, penginstalan. Operasi upgrade Helm dapat dilakukan a per komponen setelah alat dijalankan.
./apigee-helm-migration
- Memigrasikan semua komponen menggunakan namespace kustom:
./apigee-helm-migration --apigee-namespace my_custom_namespace
-
Memigrasikan hanya komponen
operatordandatastore:./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!
-
Mengarah ke file
kubeconfigtertentu dan menentukan nama yang berbeda untuk namespaceapigee../apigee-helm-migration --kubeconfig /abs/path/to/kubeconf --namespace org1_namespace
-
Memigrasikan semua komponen, tetapi hanya satu organisasi:
./apigee-helm-migration --org=some-test-org
Berikut adalah 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!Error yang mungkin terjadi:
- Error parsing file nama rilis: Periksa file nama rilis yang diteruskan.
-
Resource tidak ditemukan: Pastikan Apigee hybrid terinstal sepenuhnya, dan Anda memiliki izin untuk mengakses
apigeeresource.
-
Perubahan properti konfigurasi
Lakukan perubahan berikut pada file penggantian:
-
Apigee hybrid yang dikelola dengan Helm menggunakan properti
apigeeIngressGatewayuntuk mengonfigurasi semua gateway ingress Apigee di cluster Anda. PropertiingressGatewaysmengganti setelan diapigeeIngressGatewayuntuk gateway ingress bernama individual.Lihat
apigeeIngressGateway- Ubah properti
ingressGatewaysyang bersifat global untuk semua gateway ingress di cluster Anda menjadi propertiapigeeIngressGateway. File penggantian Anda harus berisi setidaknya:apigeeIngressGateway: image: url: "PATH_TO_REPOSITORY/apigee-asm-ingress" tag: "TAG"Contoh:
apigeeIngressGateway: image: url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress" tag: "1.16.9" -
Pastikan untuk menyertakan
ingressGateways.name. Hal ini diperlukan untuk membuat instance gateway ingress Anda. Contoh:
ingressGateways: name: INGRESS_GATEWAY_NAME
- Ubah properti
- Properti untuk mengaktifkan Workload Identity telah berubah:
gcp.workloadIdentity.enabledmenggantikangcp.workloadIdentityEnabled.- Jika menggunakan satu akun layanan untuk semua komponen, Anda dapat menentukannya dengan:
gcp.workloadIdentity.gsa. Contoh:gcp: workloadIdentity: enabled: true gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com" - Jika Anda menggunakan akun layanan terpisah untuk setiap komponen (standar untuk sebagian besar penginstalan produksi
), tentukan akun layanan dengan properti
gsakomponen. Contoh:logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
Lihat:
gcp.workloadIdentity.enabled,gcp.federatedWorkloadIdentity.enabled, Mengaktifkan Workload Identity di GKE atau Mengaktifkan Workload Identity Federation di AKS dan EKS.
Pemecahan masalah
Ada masalah umum dengan alat migrasi Helm di rilis hybrid v1.12. Hingga masalah ini diselesaikan, pencadangan dan pemulihan Cassandra memerlukan langkah tambahan.
Anda dapat mengikuti langkah berikut:
- Sebelum atau sesudah menjalankan alat migrasi
- Sebelum menginstal chart Helm
Untuk menginstal patch untuk solusi sementara:
- Pastikan
kubeconfigAnda saat ini mengarah ke cluster yang ingin Anda migrasikan. Anda dapat melakukan langkah-langkah ini dari direktori mana pun. - Buat file bernama
migration-operator-patch.yamldengan konten berikut:# migration-operator-patch.yaml metadata: annotations: meta.helm.sh/release-name: operator meta.helm.sh/release-namespace: APIGEE_NAMESPACE labels: app.kubernetes.io/managed-by: Helm
- Buat file bernama
migration-datastore-patch.yamldengan konten berikut:# migration-datastore-patch.yaml metadata: annotations: meta.helm.sh/release-name: datastore meta.helm.sh/release-namespace: apigee labels: app.kubernetes.io/managed-by: Helm
- Jalankan perintah
kubectlberikut:kubectl patch clusterrole apigee-cassandra-backup --patch-file ./migration-operator-patch.yamlkubectl patch clusterrole apigee-cassandra-restore --patch-file ./migration-operator-patch.yamlkubectl patch clusterrolebinding apigee-cassandra-backup --patch-file ./migration-operator-patch.yamlkubectl patch clusterrolebinding apigee-cassandra-restore --patch-file ./migration-operator-patch.yamlkubectl patch -n APIGEE_NAMESPACE cronjob apigee-cassandra-backup --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE certificate apigee-cassandra-backup-tls --patch-file ./migration-datastore-patch.yaml --type mergekubectl patch -n APIGEE_NAMESPACE secret apigee-cassandra-backup-svc-account --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE secret apigee-cassandra-backup-key-file --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE ServiceAccount apigee-cassandra-backup-sa --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE job apigee-cassandra-restore --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE certificate apigee-cassandra-restore-tls --patch-file ./migration-datastore-patch.yaml --type mergekubectl patch -n APIGEE_NAMESPACE secret apigee-cassandra-restore-svc-account --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE secret apigee-cassandra-restore-key-file --patch-file ./migration-datastore-patch.yamlkubectl patch -n APIGEE_NAMESPACE ServiceAccount apigee-cassandra-restore-sa --patch-file ./migration-datastore-patch.yaml - Bersihkan file patch menggunakan perintah berikut:
rm migration-operator-patch.yamlrm migration-datastore-patch.yaml
Langkah berikutnya
Lanjutkan penginstalan chart Helm Apigee hybrid dengan petunjuk di Menginstal dan mengelola Apigee hybrid dengan chart 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