Prosedur ini mencakup upgrade dari Apigee Hybrid versi 1.11.x ke Apigee Hybrid versi 1.12.4 dan dari rilis sebelumnya dari Hybrid 1.12.x ke versi 1.12.4.
Gunakan prosedur yang sama untuk upgrade versi minor (misalnya, versi 1.11 ke 1.12) dan untuk upgrade rilis patch (misalnya 1.12.0 ke 1.12.4).
Jika Anda melakukan upgrade dari Apigee Hybrid versi 1.10 atau yang lebih lama, Anda harus mengupgrade terlebih dahulu ke Hybrid versi 1.11 sebelum mengupgrade ke versi 1.12.4. Lihat petunjuk untuk Mengupgrade Apigee Hybrid ke versi 1.11.
Perubahan dari Apigee Hybrid v1.11
Apigee Hybrid versi 1.12 memperkenalkan perubahan berikut yang memengaruhi proses upgrade. Untuk melihat daftar lengkap fitur di v1.12, lihat Catatan Rilis hybrid v1.12.0.
- Cassandra 4.x: Mulai versi 1.12, Apigee Hybrid menggunakan Cassandra versi 4+.
-
Penghentian penggunaan
apigeectl: Mulai versi 1.12, Apigee Hybrid hanya mendukung Helm untuk menginstal dan mengelola penginstalan hybrid Anda. -
Serangkaian metrik baru untuk memantau proxy Apigee dan endpoint target kini tersedia. Untuk hybrid v1.12, resource yang dipantau
ProxyV2danTargetV2tidak akan lagi digunakan secara default. Semua metrik proxy dan target akan dipublikasikan ke resource yang dimonitorProxydanTarget.Untuk terus memancarkan metrik ke resource yang dipantau
ProxyV2danTargetV2, tetapkanmetrics.disablePrometheusPipelineketruedioverrides.yaml.Jika Anda telah mengonfigurasi pemberitahuan berbasis metrik, pastikan penggunaan metrik yang benar untuk penginstalan hybrid Anda. Untuk mengetahui informasi selengkapnya, lihat Pemberitahuan berbasis metrik.
- Pemeriksaan instansiasi class yang lebih ketat: Mulai versi 1.12.4, Apigee Hybrid,
kebijakan JavaCallout kini menyertakan keamanan tambahan selama instansiasi class Java. Tindakan keamanan yang ditingkatkan ini mencegah penerapan kebijakan yang secara langsung atau tidak langsung mencoba melakukan tindakan yang memerlukan izin yang tidak diizinkan.
Dalam sebagian besar kasus, kebijakan yang ada akan terus berfungsi seperti yang diharapkan tanpa masalah apa pun. Namun, ada kemungkinan kebijakan yang mengandalkan library pihak ketiga, atau kebijakan dengan kode kustom yang secara tidak langsung memicu operasi yang memerlukan izin yang lebih tinggi, dapat terpengaruh.
Pertimbangan sebelum memulai upgrade ke versi 1.12
Pertimbangan Cassandra
Upgrade dari Apigee Hybrid versi 1.11 ke versi 1.12 mencakup upgrade database Cassandra dari versi 3.11.x ke versi 4.x. Meskipun upgrade Cassandra ditangani sebagai bagian dari prosedur upgrade hybrid Apigee, rencanakan pertimbangan berikut:
- Upgrade versi Cassandra akan terjadi di latar belakang dan akan dilakukan pada 1 pod (atau node Cassandra) dalam satu waktu, jadi rencanakan kapasitas database yang berkurang selama upgrade.
- Menskalakan kapasitas Cassandra dan memastikan pemanfaatan disk mendekati atau di bawah 50% sebelum Anda mulai mengupgrade.
- Validasi dan uji prosedur pencadangan dan pemulihan Cassandra Anda.
- Cadangkan data Cassandra di penginstalan versi 1.11 hybrid Anda sebelum Anda mulai mengupgrade dan memvalidasi cadangan Anda.
- Mengupgrade
apigee-datastoreakan menyebabkan peningkatan sementara dalam konsumsi CPU karena tugas pasca-upgrade yang dilakukan olehCassandra - Setelah mengupgrade komponen
apigee-datastore(Cassandra), Anda tidak dapat melakukan roll back komponen tersebut ke versi sebelumnya. Ada dua skenario untuk me-roll back upgrade ke hybrid v1.12 setelah mengupgrade komponenapigee-datastore:- Jika komponen
apigee-datastoredalam kondisi baik, tetapi komponen lain memerlukan roll back, Anda dapat melakukan roll back komponen lain tersebut satu per satu. - Jika komponen
apigee-datastoredalam kondisi buruk, Anda harus memulihkan dari cadangan v1.11 ke penginstalan v1.11.
- Jika komponen
Pertimbangan sebelum mengupgrade penginstalan satu region
Jika Anda perlu melakukan roll back ke versi Apigee hybrid sebelumnya, prosesnya mungkin memerlukan periode nonaktif. Oleh karena itu, jika Anda mengupgrade penginstalan satu region, sebaiknya buat region kedua, lalu upgrade hanya satu region dalam satu waktu dengan urutan berikut:
- Tambahkan region kedua ke penginstalan yang ada menggunakan versi hybrid yang sama. Lihat Deployment multi-region dalam dokumentasi versi 1.11.
- Cadangkan dan validasi data dari region pertama sebelum memulai upgrade. Lihat Ringkasan pencadangan Cassandra dalam dokumentasi versi 1.11.
- Upgrade wilayah yang baru ditambahkan ke hybrid 1.12.
- Alihkan traffic ke region baru dan validasi traffic.
- Setelah divalidasi, upgrade region yang lebih lama dengan hybrid 1.12.
- Alihkan semua traffic kembali ke region lama dan validasi traffic.
- Nonaktifkan region baru.
Pertimbangan sebelum mengupgrade penginstalan multi-region
Apigee merekomendasikan urutan berikut untuk mengupgrade penginstalan multi-region:
- Cadangkan dan validasi data dari setiap region sebelum memulai upgrade.
- Upgrade versi Hybrid di satu region dan pastikan semua pod dalam status berjalan untuk memvalidasi upgrade.
- Validasi traffic di wilayah yang baru diupgrade.
- Upgrade setiap wilayah berikutnya hanya setelah memvalidasi traffic di wilayah sebelumnya.
- Jika ada kemungkinan perlu melakukan rollback upgrade dalam deployment multi-region, bersiaplah untuk mengalihkan traffic dari region yang gagal, pertimbangkan untuk menambahkan kapasitas yang cukup di region tempat traffic akan dialihkan untuk menangani traffic bagi kedua region.
Prasyarat
Sebelum mengupgrade ke hybrid versi 1.12, pastikan penginstalan Anda memenuhi persyaratan berikut:
- Penginstalan Apigee Hybrid versi 1.11 yang dikelola dengan Helm.
- Jika Anda mengelola penginstalan hybrid dengan
apigeectl, Anda harus memigrasikan cluster ke pengelolaan Helm terlebih dahulu. Lihat Memigrasikan Apigee Hybrid ke Helm dariapigeectldalam dokumentasi Hybrid v1.11. - Jika penginstalan hybrid Anda menjalankan versi yang lebih lama dari v1.11, Anda harus mengupgrade ke versi 1.11 sebelum mengupgrade ke v1.12. lihat Mengupgrade Apigee Hybrid ke versi 1.11.
- Jika Anda mengelola penginstalan hybrid dengan
- Helm versi v3.14.2+.
kubectlversi 1.27, 1.28, atau 1.29 (direkomendasikan).- cert-manager versi v1.13.0. Jika perlu, Anda akan mengupgrade cert-manager di bagian Bersiap untuk mengupgrade ke versi di bawah.
Batasan
Perhatikan batasan berikut saat merencanakan upgrade dari Apigee Hybrid versi 1.11 ke versi 1.12. Perencanaan dapat membantu mengurangi kebutuhan akan periode nonaktif jika Anda perlu melakukan roll back atau memulihkan setelah upgrade.
- Cadangan dari Hybrid 1.12 tidak dapat dipulihkan di Hybrid 1.11 dan sebaliknya, karena ketidakcocokan antara kedua versi.
- Anda tidak dapat menskalakan pod datastore selama upgrade ke versi 1.12. Atasi kebutuhan penskalaan Anda di semua region sebelum Anda mulai mengupgrade penginstalan hybrid.
- Dalam penginstalan hybrid satu region, Anda tidak dapat me-roll back komponen datastore setelah proses upgrade datastore selesai. Anda tidak dapat mengembalikan datastore Cassandra 4.x ke datastore Cassandra 3.x. Tindakan ini akan memerlukan pemulihan dari pencadangan data Cassandra 3.x terbaru (dari penginstalan versi hybrid 1.11).
- Menghapus atau menambahkan wilayah tidak didukung selama upgrade. Dalam upgrade multi-region, Anda harus menyelesaikan upgrade semua region sebelum dapat menambahkan atau menghapus region.
Ringkasan upgrade ke versi 1.12.4
Prosedur untuk mengupgrade Apigee Hybrid diatur dalam bagian berikut:
Bersiap untuk mengupgrade ke versi 1.12
Mencadangkan cassandra
- Cadangkan database Cassandra Anda di semua region yang berlaku dan validasi data di penginstalan versi 1.11 hibrida Anda sebelum memulai upgrade. Lihat Memantau cadangan di dokumentasi versi 1.11.
- Mulai ulang semua pod Cassandra di cluster sebelum Anda memulai proses upgrade, sehingga masalah yang masih ada dapat muncul.
Untuk memulai ulang dan menguji pod Cassandra, hapus setiap pod satu per satu, lalu validasi bahwa pod kembali dalam status berjalan dan pemeriksaan kesiapan berhasil:
-
Mencantumkan pod cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Contoh:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h . . . -
Menghapus pod:
kubectl delete pod -n APIGEE_NAMESPACE CASSANDRA_POD_NAME
Contoh:
kubectl delete pod -n apigee apigee-cassandra-default-0 -
Periksa status dengan mencantumkan pod Cassandra lagi:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Contoh:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 16s apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h . . .
-
Mencantumkan pod cassandra:
- Terapkan kembali file penggantian terakhir yang diketahui untuk memastikan tidak ada perubahan yang dilakukan padanya sehingga Anda dapat menggunakan konfigurasi yang sama untuk mengupgrade ke versi hybrid 1.12.
- Pastikan semua node Cassandra di semua region berada dalam status
UN(Up / Normal). Jika ada node Cassandra dalam status yang berbeda, atasi masalah tersebut terlebih dahulu sebelum memulai upgrade.Anda dapat memvalidasi status node Cassandra dengan perintah berikut:
- Mencantumkan pod cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Contoh:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m apigee-cassandra-default-6 1/1 Running 0 9m apigee-cassandra-default-7 1/1 Running 0 9m apigee-cassandra-default-8 1/1 Running 0 8m - Periksa status node untuk setiap pod Cassandra dengan perintah
kubectl nodetool status:kubectl -n APIGEE_NAMESPACE exec -it CASSANDRA_POD_NAME -- nodetool status
Contoh:
kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 705.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.11.11 674.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 697.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 703.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 700.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1 UN 10.16.11.3 697.03 KiB 256 49.8% dad221ff-dad1-de33-2cd3-f1.672367e6f ra-1 UN 10.16.14.16 704.04 KiB 256 50.9% 1feed042-a4b6-24ab-49a1-24d4cef95473 ra-1 UN 10.16.16.1 699.82 KiB 256 50.6% beef93af-fee0-8e9d-8bbf-efc22d653596 ra-1
- Mencantumkan pod cassandra:
Mencadangkan direktori penginstalan hybrid
- Petunjuk ini menggunakan variabel lingkungan APIGEE_HELM_CHARTS_HOME untuk direktori
dalam sistem file tempat Anda menginstal diagram Helm. Jika perlu, ubah direktori
ke direktori ini dan tentukan variabel dengan perintah berikut:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - Buat salinan cadangan direktori
$APIGEE_HELM_CHARTS_HOME/versi 1.11 Anda. Anda dapat menggunakan proses pencadangan apa pun. Misalnya, Anda dapat membuat filetardari seluruh direktori Anda dengan:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.11-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - Cadangkan database Cassandra Anda dengan mengikuti petunjuk di Pencadangan dan pemulihan Cassandra.
- Jika Anda menggunakan file sertifikat layanan (
.json) dalam penggantian untuk mengautentikasi akun layanan, pastikan file sertifikat akun layanan Anda berada di direktori diagram Helm yang benar. Diagram Helm tidak dapat membaca file di luar setiap direktori diagram.Langkah ini tidak diperlukan jika Anda menggunakan secret Kubernetes atau Workload Identity untuk mengautentikasi akun layanan.
Tabel berikut menunjukkan tujuan untuk setiap file akun layanan, bergantung pada jenis penginstalan Anda:
Prod
Akun layanan Nama file default Direktori diagram Helm apigee-cassandraPROJECT_ID-apigee-cassandra.json$APIGEE_HELM_CHARTS_HOME/apigee-datastore/apigee-loggerPROJECT_ID-apigee-logger.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-martPROJECT_ID-apigee-mart.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-metricsPROJECT_ID-apigee-metrics.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-runtimePROJECT_ID-apigee-runtime.json$APIGEE_HELM_CHARTS_HOME/apigee-envapigee-synchronizerPROJECT_ID-apigee-synchronizer.json$APIGEE_HELM_CHARTS_HOME/apigee-env/apigee-udcaPROJECT_ID-apigee-udca.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-watcherPROJECT_ID-apigee-watcher.json$APIGEE_HELM_CHARTS_HOME/apigee-org/Non-prod
Buat salinan file akun layanan
apigee-non-proddi setiap direktori berikut:Akun layanan Nama file default Direktori diagram Helm apigee-non-prodPROJECT_ID-apigee-non-prod.json$APIGEE_HELM_CHARTS_HOME/apigee-datastore/
$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
$APIGEE_HELM_CHARTS_HOME/apigee-org/
$APIGEE_HELM_CHARTS_HOME/apigee-env/ -
Pastikan file kunci dan sertifikat TLS Anda (
.crt,.key, dan/atau.pem) berada di direktori$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/.
Mengupgrade versi Kubernetes
Periksa versi platform Kubernetes Anda dan jika perlu, upgrade platform Kubernetes Anda ke versi yang didukung oleh hybrid 1.11 dan hybrid 1.12. Ikuti dokumentasi platform Anda jika Anda memerlukan bantuan.
Menginstal runtime hybrid 1.12.4
Mempersiapkan upgrade diagram Helm
- Tarik diagram Helm Apigee.
Diagram hybrid Apigee dihosting di Google Artifact Registry:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsDengan menggunakan perintah
pull, salin semua diagram Helm Apigee Hybrid ke penyimpanan lokal Anda dengan perintah berikut:export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.12.4helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar - Upgrade cert-manager jika diperlukan.
Jika Anda perlu mengupgrade versi cert-manager, instal versi baru dengan perintah berikut:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
- Instal CRD Apigee yang telah diupdate:
-
Gunakan fitur uji coba
kubectldengan menjalankan perintah berikut:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run
-
Setelah memvalidasi dengan perintah uji coba, jalankan perintah berikut:
kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Validasi penginstalan dengan perintah
kubectl get crds:kubectl get crds | grep apigee
Output Anda akan terlihat seperti berikut:
apigeedatastores.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeedeployments.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeissues.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2023-10-09T14:48:32Z apigeeredis.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeeroutes.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2023-10-09T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2023-10-09T14:48:35Z
-
-
Periksa label pada node cluster. Secara default, Apigee menjadwalkan pod data pada node dengan label
cloud.google.com/gke-nodepool=apigee-datadan pod runtime dijadwalkan pada node dengan labelcloud.google.com/gke-nodepool=apigee-runtime. Anda dapat menyesuaikan label node pool di fileoverrides.yaml.Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi node pool khusus.
Menginstal diagram Helm Apigee hybrid
- Jika belum, buka direktori
APIGEE_HELM_CHARTS_HOMEAnda. Jalankan perintah berikut dari direktori tersebut. - Upgrade Apigee Operator/Controller:
Uji coba:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE
Verifikasi penginstalan Apigee Operator:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Upgrade datastore Apigee:
Uji coba:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifikasi bahwa
apigeedatastoresudah aktif dan berjalan dengan memeriksa statusnya:kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
- Mengupgrade telemetri Apigee:
Uji coba:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Upgrade Apigee Redis:
Uji coba:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Upgrade pengelola ingress Apigee:
Uji coba:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Upgrade organisasi Apigee:
Uji coba:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
Mengupgrade diagram:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Pastikan org tersebut aktif dan berjalan dengan memeriksa status org yang bersangkutan:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Upgrade lingkungan.
Anda harus menginstal satu lingkungan dalam satu waktu. Tentukan lingkungan dengan
--set env=ENV_NAME:Uji coba:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run
- ENV_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal
diagram
apigee-env. Di hybrid v1.10, biasanyaapigee-env-ENV_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_NAME. - ENV_NAME adalah nama lingkungan yang Anda upgrade.
- OVERRIDES_FILE adalah file penggantian baru Anda untuk v.1.12.4
Mengupgrade diagram:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Verifikasi bahwa aplikasi sudah aktif dan berjalan dengan memeriksa status env masing-masing:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- ENV_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal
diagram
-
Upgrade grup lingkungan (
virtualhosts).- Anda harus mengupgrade satu grup lingkungan (virtualhost) dalam satu waktu. Tentukan grup
lingkungan dengan
--set envgroup=ENV_GROUP_NAME. Ulangi perintah berikut untuk setiap grup env yang disebutkan dalam file overrides.yaml:Uji coba:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE \ --dry-run
ENV_GROUP_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal diagram
apigee-virtualhost. Di hybrid v1.10, biasanyaapigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME.Mengupgrade diagram:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
- Periksa status ApigeeRoute (AR).
Menginstal
virtualhostsakan membuat ApigeeRouteConfig (ARC) yang secara internal membuat ApigeeRoute (AR) setelah watcher Apigee menarik detail terkait grup lingkungan dari bidang kontrol. Oleh karena itu, periksa apakah status AR yang sesuai sedang berjalan:kubectl -n apigee get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n apigee get ar
NAME STATE AGE apigee-org1-dev-egroup-xxxxxx running 2d
- Anda harus mengupgrade satu grup lingkungan (virtualhost) dalam satu waktu. Tentukan grup
lingkungan dengan
Memvalidasi kebijakan setelah upgrade ke 1.12.4
Gunakan prosedur ini untuk memvalidasi perilaku kebijakan JavaCallout setelah mengupgrade dari 1.12.3 atau yang lebih lama ke 1.12.4 atau yang lebih baru.
- Periksa apakah file JAR Java meminta izin yang tidak diperlukan.
Setelah kebijakan di-deploy, periksa log runtime untuk melihat apakah pesan log berikut ada:
"Failed to load and initialize class ...". Jika Anda melihat pesan ini, hal ini menunjukkan bahwa JAR yang di-deploy meminta izin yang tidak diperlukan. Untuk mengatasi masalah ini, selidiki kode Java dan perbarui file JAR. - Selidiki dan perbarui kode Java.
Tinjau kode Java (termasuk dependensi) untuk mengidentifikasi penyebab operasi yang berpotensi tidak diizinkan. Jika ditemukan, ubah kode sumber sesuai kebutuhan.
- Uji kebijakan dengan pemeriksaan keamanan yang diaktifkan.
Di lingkungan non-produksi, aktifkan flag pemeriksaan keamanan dan deploy ulang kebijakan Anda dengan JAR yang telah diupdate. Untuk menetapkan tanda:
- Di file
apigee-env/values.yaml, tetapkanconf_security-secure.constructor.onlyketruedi bagianruntime:cwcAppend:. Contoh:# Apigee Runtime runtime: cwcAppend: conf_security-secure.constructor.only: true
- Perbarui diagram
apigee-envuntuk lingkungan guna menerapkan perubahan. Contoh:helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
ENV_RELEASE_NAME adalah nama yang digunakan untuk melacak penginstalan dan upgrade diagram
apigee-env. Nama ini harus unik dari nama rilis Helm lainnya di penginstalan Anda. Biasanya ini sama denganENV_NAME. Namun, jika lingkungan Anda memiliki nama yang sama dengan grup lingkungan, Anda harus menggunakan nama rilis yang berbeda untuk lingkungan dan grup lingkungan, misalnyadev-env-releasedandev-envgroup-release. Untuk mengetahui informasi selengkapnya tentang rilis di Helm, lihat Three big concepts class="external" dalam dokumentasi Helm.
Jika pesan log
"Failed to load and initialize class ..."masih ada, lanjutkan pengubahan dan pengujian JAR hingga pesan log tidak muncul lagi. - Di file
- Aktifkan pemeriksaan keamanan di lingkungan produksi.
Setelah Anda menguji dan memverifikasi file JAR secara menyeluruh di lingkungan non-produksi, aktifkan pemeriksaan keamanan di lingkungan produksi dengan menyetel tanda
conf_security-secure.constructor.onlyketruedan memperbarui diagramapigee-envuntuk lingkungan produksi guna menerapkan perubahan.
Mengembalikan ke versi sebelumnya
Bagian ini dibagi menjadi beberapa bagian, bergantung pada status komponen
apigee-datastore setelah mengupgrade ke Apigee Hybrid versi
1.12. Ada prosedur untuk rollback satu region atau multi-region dengan
komponen apigee-datastore dalam kondisi baik dan prosedur untuk pemulihan atau pemulihan
dari cadangan saat apigee-datastore dalam kondisi buruk.
Rollback dan pemulihan satu region
Melakukan roll back saat apigee-datastore dalam kondisi baik
Prosedur ini menjelaskan cara meng-roll back setiap komponen Apigee Hybrid dari v1.12 ke
v1.11 kecuali apigee-datastore. Komponen apigee-datastore
v1.12 kompatibel mundur dengan komponen hybrid v1.11.
Untuk mengembalikan penginstalan region tunggal Anda ke versi 1.11:
-
Sebelum memulai rollback, pastikan semua pod dalam status berjalan:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Validasi rilis komponen menggunakan helm:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Contohnya
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 17:08:07.917848253 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 2 2024-03-29 17:21:02.917333616 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 2 2024-03-29 17:19:51.143728084 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 2 2024-03-29 17:16:09.883885403 +0000 UTC deployed apigee-telemetry-1.12.0 1.12.0 myhybridorg apigee 2 2024-03-29 17:21:50.899855344 +0000 UTC deployed apigee-org-1.12.0 1.12.0
-
Lakukan rollback setiap komponen kecuali
apigee-datastoredengan perintah berikut:- Buat variabel lingkungan berikut:
- PREVIOUS_HELM_CHARTS_HOME: Direktori tempat diagram Helm Apigee hybrid sebelumnya diinstal. Ini adalah versi yang Anda roll back.
- Roll back virtualhost. Ulangi perintah berikut untuk setiap grup lingkungan yang disebutkan dalam file penggantian.
helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_GROUP_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal diagram
apigee-virtualhost. Di hybrid v1.10, biasanyaapigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME. - Roll back Env. Ulangi perintah berikut untuk setiap lingkungan yang disebutkan dalam file penggantian.
helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal diagram
apigee-env. Di hybrid v1.10, biasanyaapigee-env-ENV_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_NAME.Verifikasi bahwa aplikasi sudah aktif dan berjalan dengan memeriksa status env masing-masing:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- Roll back Org:
helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan org tersebut aktif dan berjalan dengan memeriksa status org yang bersangkutan:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Roll back Pengelola Ingress:
helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Roll back Redis:
helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Roll back Telemetri Apigee:
helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Roll back Apigee Controller:
helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifikasi penginstalan Apigee Operator:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Roll back CRD Apigee Hybrid:
kubectl apply -k $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Buat variabel lingkungan berikut:
-
Validasi semua pod dalam status berjalan atau selesai:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Validasi rilis semua komponen. Semua komponen harus ada di versi sebelumnya
kecuali datastore:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Contohnya
helm -n apigee listNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 18:47:55.979671057 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 3 2024-03-14 19:14:57.905700154 +0000 UTC deployed apigee-ingress-manager-1.11.0 1.11.0 redis apigee 3 2024-03-14 19:15:49.406917944 +0000 UTC deployed apigee-redis-1.11.0 1.11.0 telemetry apigee 3 2024-03-14 19:17:04.803421424 +0000 UTC deployed apigee-telemetry-1.11.0 1.11.0 myhybridorg apigee 3 2024-03-14 19:13:17.807673713 +0000 UTC deployed apigee-org-1.11.0 1.11.0
Memulihkan saat apigee-datastore dalam keadaan tidak baik
Jika upgrade komponen apigee-datastore tidak berhasil, Anda tidak dapat melakukan roll back apigee-datastore dari versi 1.12 ke versi 1.11. Sebagai gantinya, Anda
harus memulihkan dari cadangan yang dibuat dari penginstalan v1.11. Gunakan urutan berikut untuk memulihkan versi sebelumnya.
- Jika Anda tidak memiliki penginstalan aktif Apigee Hybrid versi 1.11 (misalnya di region lain), buat penginstalan baru v1.11 menggunakan file penggantian dan diagram yang dicadangkan. Lihat petunjuk penginstalan Apigee Hybrid versi 1.11.
- Pulihkan region v1.11 (atau penginstalan baru) dari cadangan Anda
dengan mengikuti petunjuk di:
- Pencadangan Cloud Storage Interface (CSI): Cassandra Pencadangan dan pemulihan CSI.
- Pencadangan non-CSI: Memulihkan dalam satu region.
- Memverifikasi traffic ke penginstalan yang dipulihkan
- Opsional: Hapus penginstalan versi 1.12 dengan mengikuti petunjuk di Menghapus penginstalan runtime hybrid.
Rollback dan pemulihan multi-region
Melakukan roll back saat apigee-datastore dalam kondisi baik
Prosedur ini menjelaskan cara meng-roll back setiap komponen Apigee Hybrid dari v1.12 ke
v1.11 kecuali apigee-datastore. Komponen apigee-datastore
v1.12 kompatibel mundur dengan komponen hybrid v1.11.
-
Sebelum memulai rollback, validasi semua pod dalam status berjalan:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
- Pastikan semua node Cassandra di semua region berada dalam status
UN(Up / Normal). Jika ada node Cassandra dalam status yang berbeda, atasi masalah tersebut terlebih dahulu sebelum memulai proses upgrade.Anda dapat memvalidasi status node Cassandra dengan perintah berikut:
- Mencantumkan pod cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Contoh:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m apigee-cassandra-default-6 1/1 Running 0 9m apigee-cassandra-default-7 1/1 Running 0 9m apigee-cassandra-default-8 1/1 Running 0 8m - Periksa status node untuk setiap pod Cassandra dengan perintah
kubectl nodetool status:kubectl -n APIGEE_NAMESPACE exec -it CASSANDRA_POD_NAME -- nodetool -u JMX_USER -pw JMX_PASSWORD
Contoh:
kubectl -n apigee exec -it apigee-cassandra-default-0 -- nodetool -u jmxuser -pw JMX_PASSWORD statusDatacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 705.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.11.11 674.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 697.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 703.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 700.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1 UN 10.16.11.3 697.03 KiB 256 49.8% dad221ff-dad1-de33-2cd3-f1.672367e6f ra-1 UN 10.16.14.16 704.04 KiB 256 50.9% 1feed042-a4b6-24ab-49a1-24d4cef95473 ra-1 UN 10.16.16.1 699.82 KiB 256 50.6% beef93af-fee0-8e9d-8bbf-efc22d653596 ra-1
Jika tidak semua pod Cassandra berada dalam status
UN, ikuti petunjuk di Menghapus node DOWN dari Cluster Cassandra. - Mencantumkan pod cassandra:
- Buka direktori tempat diagram Helm Apigee Hybrid sebelumnya diinstal
-
Ubah konteks ke region yang diupgrade
kubectl config use-context UPGRADED_REGION_CONTEXT -
Pastikan semua pod dalam status berjalan:
kubectl get pods -n APIGEE_NAMESPACE
kubectl get pods -n apigee-system
-
Gunakan perintah helm untuk memastikan semua rilis diupgrade ke Hybrid v1.12:
helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Contohnya
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 17:08:07.917848253 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 2 2024-03-29 17:21:02.917333616 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 2 2024-03-29 17:19:51.143728084 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 2 2024-03-29 17:16:09.883885403 +0000 UTC deployed apigee-telemetry-1.12.0 1.12.0 myhybridorg apigee 2 2024-03-29 17:21:50.899855344 +0000 UTC deployed apigee-org-1.12.0 1.12.0
-
Lakukan rollback setiap komponen kecuali
apigee-datastoredengan perintah berikut:- Buat variabel lingkungan berikut:
- PREVIOUS_HELM_CHARTS_HOME: Direktori tempat diagram Helm Apigee hybrid sebelumnya diinstal. Ini adalah versi yang Anda roll back.
- Roll back virtualhost. Ulangi perintah berikut untuk setiap grup lingkungan yang disebutkan dalam file penggantian.
helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_GROUP_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal diagram
apigee-virtualhost. Di hybrid v1.10, biasanyaapigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME. - Roll back Env. Ulangi perintah berikut untuk setiap lingkungan yang disebutkan dalam file penggantian.
helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_RELEASE_NAME adalah nama yang Anda gunakan sebelumnya untuk menginstal diagram
apigee-env. Di hybrid v1.10, biasanyaapigee-env-ENV_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_NAME.Verifikasi setiap env sudah aktif dan berjalan dengan memeriksa status env masing-masing:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- Roll back Org:
helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan org tersebut aktif dan berjalan dengan memeriksa status org yang bersangkutan:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- Roll back Pengelola Ingress:
helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Roll back Redis:
helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- Roll back Telemetri Apigee:
helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Pastikan instance tersebut aktif dan berjalan dengan memeriksa statusnya:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Roll back Apigee Controller:
helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
Verifikasi penginstalan Apigee Operator:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.12.4 1.12.4
Verifikasi bahwa instance sudah aktif dan berjalan dengan memeriksa ketersediaannya:
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Roll back CRD Apigee Hybrid:
kubectl apply -k $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
- Buat variabel lingkungan berikut:
-
Validasi rilis semua komponen. Semua komponen harus ada di versi sebelumnya
kecuali
datastore:helm -n APIGEE_NAMESPACE list
helm -n apigee-system list
Contohnya
helm -n apigee list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 2 2024-03-29 18:47:55.979671057 +0000 UTC deployed apigee-datastore-1.12.0 1.12.0 ingress-manager apigee 3 2024-03-14 19:14:57.905700154 +0000 UTC deployed apigee-ingress-manager-1.11.0 1.11.0 redis apigee 3 2024-03-14 19:15:49.406917944 +0000 UTC deployed apigee-redis-1.11.0 1.11.0 telemetry apigee 3 2024-03-14 19:17:04.803421424 +0000 UTC deployed apigee-telemetry-1.11.0 1.11.0 myhybridorg apigee 3 2024-03-14 19:13:17.807673713 +0000 UTC deployed apigee-org-1.11.0 1.11.0
Pada tahap ini, semua rilis kecuali
datastoretelah di-rollback ke versi sebelumnya.
Memulihkan penginstalan multi-region ke versi sebelumnya
Pulihkan region tempat upgrade gagal dalam upgrade multi-region dengan menghapus referensi ke region tersebut dari penginstalan multi-region. Metode ini hanya dapat dilakukan jika ada minimal 1 wilayah aktif di Hybrid 1.11. Datastore v1.12 kompatibel dengan komponen v1.11.
Untuk memulihkan region yang gagal dari region yang berfungsi dengan baik, lakukan langkah-langkah berikut:
- Alihkan traffic API dari region yang terpengaruh ke region yang berfungsi dengan baik. Rencanakan kapasitas yang sesuai untuk mendukung traffic yang dialihkan dari region yang gagal.
- Nonaktifkan region yang terpengaruh. Untuk setiap region yang terpengaruh, ikuti langkah-langkah yang diuraikan dalam Menonaktifkan region hybrid. Tunggu hingga penonaktifan selesai sebelum melanjutkan ke langkah berikutnya.
- Bersihkan region yang gagal dengan mengikuti petunjuk di Memulihkan region dari upgrade yang gagal.
- Pulihkan wilayah yang terpengaruh. Untuk memulihkan, buat region baru, seperti yang dijelaskan dalam Deployment multi-region di GKE, GKE on-prem, dan AKS.
Memulihkan penginstalan multi-region dari cadangan dengan apigee-datastore dalam kondisi buruk
Jika upgrade komponen apigee-datastore tidak berhasil, Anda tidak dapat melakukan roll
back dari versi 1.12 ke versi 1.11. Sebagai gantinya, Anda
harus memulihkan dari cadangan yang dibuat dari penginstalan v1.11. Gunakan urutan berikut untuk memulihkan versi sebelumnya.
- Jika Anda tidak memiliki penginstalan aktif Apigee Hybrid versi 1.11 (misalnya di region lain), buat penginstalan baru v1.11 menggunakan file penggantian dan diagram yang dicadangkan. Lihat petunjuk penginstalan Apigee Hybrid versi 1.11.
- Pulihkan region v1.11 (atau penginstalan baru) dari cadangan Anda
dengan mengikuti petunjuk di:
- Pencadangan Cloud Storage Interface (CSI): Cassandra Pencadangan dan pemulihan CSI.
- Cadangan non-CSI: Memulihkan di beberapa region.
- Memverifikasi traffic ke penginstalan yang dipulihkan
- Untuk penginstalan multi-region, bangun ulang dan pulihkan region berikutnya. Lihat petunjuk di Memulihkan dari cadangan di Memulihkan di beberapa region.
- Hapus penginstalan versi 1.12 dengan mengikuti petunjuk di Menghapus runtime hybrid.
LAMPIRAN: Memulihkan region dari upgrade yang gagal
Hapus Datacenter jika upgrade gagal dari 1.11 ke 1.12.
-
Validasi status cluster Cassandra dari region aktif:
-
Alihkan konteks kubectl ke region yang akan dihapus:
kubectl config use-context CONTEXT_OF_LIVE_REGION
- Mencantumkan pod cassandra:
kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra
Contoh:
kubectl get pods -n apigee -l app=apigee-cassandraNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h -
Jalankan perintah exec ke salah satu pod cassandra:
kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
-
Periksa status cluster Cassandra:
nodetool -u JMX_USER -pw JMX_PASSWORD status
Outputnya kurang lebih akan seperti berikut:
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 813.84 KiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.14.16 859.89 KiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 UN 10.48.0.18 888.95 KiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1
-
Deskripsikan cluster untuk memverifikasi bahwa Anda hanya melihat IP pod Cassandra dari region aktif
dan semuanya pada versi skema yang sama:
nodetool -u JMX_USER -pw JMX_PASSWORD describecluster
Outputnya kurang lebih akan seperti berikut:
nodetool -u JMX_USER -pw JMX_PASSWORD describeclusterSchema versions: 4bebf2de-0582-31b4-9c5f-e36f60127e1b: [10.48.14.16, 10.48.12.16, 10.48.0.18]
-
Alihkan konteks kubectl ke region yang akan dihapus:
-
Membersihkan replikasi keyspace Cassandra:
-
Dapatkan tugas
user-setupdan hapus. Tugasuser-setupbaru akan segera dibuat.kubectl get jobs -n APIGEE_NAMESPACE
Contoh:
kubectl get jobs -n apigeeNAME COMPLETIONS DURATION AGE apigee-cassandra-schema-setup-myhybridorg-8b3e61d 1/1 6m35s 3h5m apigee-cassandra-schema-val-myhybridorg-8b3e61d-28499150 1/1 10s 9m22s apigee-cassandra-user-setup-myhybridorg-8b3e61d 0/1 21s 21skubectl delete jobs USER_SETUP_JOB_NAME -n APIGEE_NAMESPACE
Output akan menampilkan tugas baru yang dimulai:
kubectl delete jobs apigee-cassandra-user-setup-myhybridorg-8b3e61d -n apigeeapigee-cassandra-user-setup-myhybridorg-8b3e61d-wl92b 0/1 Init:0/1 0 1s - Validasi setelan replikasi keyspace Cassandra dengan membuat penampung klien dengan mengikuti petunjuk di Buat penampung klien.
-
Dapatkan semua keyspace. Jalankan perintah ke dalam pod cassandra-client, lalu mulai klien cqlsh:
kubectl exec -it -n APIGEE_NAMESPACE cassandra-client -- /bin/bash
Hubungkan ke server Cassandra dengan
ddl userkarena memiliki izin yang diperlukan untuk menjalankan perintah berikut:cqlsh apigee-cassandra-default.apigee.svc.cluster.local -u DDL_USER -p DDL_PASSWORD --ssl
Dapatkan keyspace:
select * from system_schema.keyspaces;
Output-nya akan terlihat seperti berikut, dengan
dc-1adalah DC aktif:select * from system_schema.keyspaces;keyspace_name | durable_writes | replication --------------------------+----------------+-------------------------------------------------------------------------------- kvm_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} cache_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} rtc_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} kms_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} (11 rows) - Jika karena alasan tertentu tugas
user-setupterus mengalami error dan validasi gagal, gunakan perintah berikut untuk memperbaiki replikasi di keyspace.kubectl exec -it -n APIGEE_NAMESPACE cassandra-client -- /bin/bash
Hubungkan ke server Cassandra dengan
ddl userkarena memiliki izin yang diperlukan untuk menjalankan perintah berikut:cqlsh apigee-cassandra-default.apigee.svc.cluster.local -u DDL_USER -p DDL_PASSWORD --ssl
Dapatkan keyspace:
select * from system_schema.keyspaces;
Gunakan nama keyspace dari perintah di atas dan ganti nama keyspace tersebut dalam contoh berikut
alter keyspace quota_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace kms_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace kvm_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace cache_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace perses_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace rtc_myhybridorg_hybrid WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_distributed WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'};alter keyspace system_traces WITH replication = {'class': 'NetworkTopologyStrategy', 'LIVE_DC_NAME':'3'}; - Validasi bahwa semua keyspace direplikasi di region yang tepat dengan perintah
cqlshberikut:select * from system_schema.keyspaces;
Contoh:
select * from system_schema.keyspaces;keyspace_name | durable_writes | replication -------------------------+----------------+-------------------------------------------------------------------------------- kvm_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_auth | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} quota_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} cache_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} rtc_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} perses | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} kms_myhybridorg_hybrid | True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} (11 rows)
-
Dapatkan tugas
Pada tahap ini, Anda telah sepenuhnya menghapus semua referensi untuk DC yang tidak aktif dari cluster Cassandra.
LAMPIRAN: Menghapus node DOWN dari Cassandra Cluster
Gunakan prosedur ini saat Anda melakukan rollback penginstalan multi-region dan tidak semua pod Cassandra berada dalam status Aktif / Normal (UN).
-
Jalankan perintah exec ke salah satu pod cassandra:
kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
-
Periksa status cluster Cassandra:
nodetool -u JMX_USER -pw JMX_PASSWORD status
-
Validasi bahwa node benar-benar Down (
DN). Jalankan perintah ke pod Cassandra di region tempat pod Cassandra tidak dapat diaktifkan.Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 1.15 MiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.0.18 1.21 MiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1 UN 10.48.14.16 1.18 MiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack DN 10.8.4.4 432.42 KiB 256 100.0% cd672398-5c45-4c88-a424-86d757951e53 rc-1 UN 10.8.19.6 5.8 MiB 256 100.0% 84f771f3-3632-4155-b27f-a67125d73bc5 rc-1 UN 10.8.21.5 5.74 MiB 256 100.0% f6f21b70-348d-482d-89fa-14b7147a5042 rc-1
-
Hapus referensi ke node bawah (
DN). Dari contoh di atas, kita akan menghapus referensi untuk host10.8.4.4kubectl exec -it -n apigee apigee-cassandra-default-2 -- /bin/bash nodetool -u JMX_USER -pw JMX_PASSWORD removenode HOST_ID
-
Setelah referensi dihapus, hentikan pod. Pod Cassandra baru akan muncul dan bergabung dengan cluster
kubectl delete pod -n POD_NAME
-
Validasi bahwa pod Cassandra baru telah bergabung ke cluster.
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.48.12.16 1.16 MiB 256 100.0% a6340ad9-37ba-4ec8-a8c2-f7b7ac931807 ra-1 UN 10.48.0.18 1.22 MiB 256 100.0% 0d57df49-52e4-4c01-832d-d9df845ab732 ra-1 UN 10.48.14.16 1.19 MiB 256 100.0% 39f03c51-e387-4dac-8360-6d8732e690a7 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.8.19.6 5.77 MiB 256 100.0% 84f771f3-3632-4155-b27f-a67125d73bc5 rc-1 UN 10.8.4.5 246.99 KiB 256 100.0% 0182e675-eec8-4d68-a465-69211b621601 rc-1 UN 10.8.21.5 5.69 MiB 256 100.0% f6f21b70-348d-482d-89fa-14b7147a5042 rc-1
Pada tahap ini, Anda dapat melanjutkan upgrade atau melakukan roll back pada region cluster yang tersisa.
LAMPIRAN: Pemecahan masalah: apigee-datastore dalam status macet setelah rollback
Gunakan prosedur ini jika Anda telah mengembalikan apigee-datastore ke hybrid 1.11 setelah upgrade, dan apigee-datastore berada dalam status macet.
-
Sebelum memperbaiki status pengontrol datastore lagi, validasi bahwa statusnya dalam status
releasingdan pod tidak muncul bersama dengan status cluster Cassandra.-
Validasi menggunakan perintah Helm bahwa datastore telah di-roll back:
helm -n APIGEE_NAMESPACE list
Contoh:
helm -n apigee listNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION datastore apigee 3 2024-04-04 22:15:08.792539892 +0000 UTC deployed apigee-datastore-1.11.0 1.11.0 ingress-manager apigee 1 2024-04-02 22:24:27.564184968 +0000 UTC deployed apigee-ingress-manager-1.12.0 1.12.0 redis apigee 1 2024-04-02 22:23:59.938637491 +0000 UTC deployed apigee-redis-1.12.0 1.12.0 telemetry apigee 1 2024-04-02 22:23:39.458134303 +0000 UTC deployed apigee-telemetry-1.12 1.12.0 myhybridorg apigee 1 2024-04-02 23:36:32.614927914 +0000 UTC deployed apigee-org-1.12.0 1.12.0 -
Dapatkan status pod Cassandra:
kubectl get pods -n APIGEE_NAMESPACE
Contoh:
kubectl get pods -n apigeeNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 0/1 CrashLoopBackOff 4 (13s ago) 2m13s -
Validasi bahwa pengontrol
apigeedsmacet dalam status melepaskan:kubectl get apigeeds -n APIGEE_NAMESPACE
Contoh:
kubectl get apigeeds -n apigeeNAME STATE AGE default releasing 46h -
Validasi status node Cassandra (perhatikan bahwa satu node dalam status
DN, yaitu node yang terjebak dalam statusCrashLoopBackOff):kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u JMX_USER -pw JMX_PASSWORD status
Contoh:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u jmxuser -pw JMX_PASSWORD statusDefaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.7.28 2.12 MiB 256 100.0% 4de9df37-3997-43e7-8b5b-632d1feb14d3 rc-1 UN 10.68.10.29 2.14 MiB 256 100.0% a54e673b-ec63-4c08-af32-ea6c00194452 rc-1 DN 10.68.6.26 5.77 MiB 256 100.0% 0fe8c2f4-40bf-4ba8-887b-9462159cac45 rc-1
-
Validasi menggunakan perintah Helm bahwa datastore telah di-roll back:
-
Upgrade datastore menggunakan diagram 1.12.
helm upgrade datastore APIGEE_HELM_1.12.0_HOME/apigee-datastore/ --install --namespace APIGEE_NAMESPACE -f overrides.yaml
-
Pastikan semua pod
Runningdan cluster Cassandra responsif kembali.-
Validasi semua pod sudah
READYlagi:kubectl get pods -n APIGEE_NAMESPACE
Contoh:
kubectl get pods -n apigeeNAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 29h apigee-cassandra-default-1 1/1 Running 0 29h apigee-cassandra-default-2 1/1 Running 0 60m -
Validasi status cluster Cassandra:
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u JMX_USER -pw JMX_PASSWORD status
Contoh:
kubectl exec apigee-cassandra-default-0 -n apigee -- nodetool -u jmxuser -pw JMX_PASSWORD statusDatacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.4.15 2.05 MiB 256 100.0% 0fe8c2f4-40bf-4ba8-887b-9462159cac45 rc-1 UN 10.68.7.28 3.84 MiB 256 100.0% 4de9df37-3997-43e7-8b5b-632d1feb14d3 rc-1 UN 10.68.10.29 3.91 MiB 256 100.0% a54e673b-ec63-4c08-af32-ea6c00194452 rc-1 -
Validasi status pengontrol
apigeeds:kubectl get apigeeds -n APIGEE_NAMESPACE
Contoh:
kubectl get apigeeds -n apigeeNAME STATE AGE default running 2d1h
-
Validasi semua pod sudah
Pada tahap ini, Anda telah memperbaiki datastore dan datastore tersebut harus dalam status running.