Mengupgrade Apigee hybrid ke versi 1.12

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 ProxyV2 dan TargetV2 tidak akan lagi digunakan secara default. Semua metrik proxy dan target akan dipublikasikan ke resource yang dimonitor Proxy dan Target.

    Untuk terus memancarkan metrik ke resource yang dipantau ProxyV2 dan TargetV2, tetapkan metrics.disablePrometheusPipeline ke true di overrides.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-datastore akan menyebabkan peningkatan sementara dalam konsumsi CPU karena tugas pasca-upgrade yang dilakukan oleh Cassandra
  • 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 komponen apigee-datastore:
    • Jika komponen apigee-datastore dalam kondisi baik, tetapi komponen lain memerlukan roll back, Anda dapat melakukan roll back komponen lain tersebut satu per satu.
    • Jika komponen apigee-datastore dalam kondisi buruk, Anda harus memulihkan dari cadangan v1.11 ke penginstalan v1.11.

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:

  1. Tambahkan region kedua ke penginstalan yang ada menggunakan versi hybrid yang sama. Lihat Deployment multi-region dalam dokumentasi versi 1.11.
  2. Cadangkan dan validasi data dari region pertama sebelum memulai upgrade. Lihat Ringkasan pencadangan Cassandra dalam dokumentasi versi 1.11.
  3. Upgrade wilayah yang baru ditambahkan ke hybrid 1.12.
  4. Alihkan traffic ke region baru dan validasi traffic.
  5. Setelah divalidasi, upgrade region yang lebih lama dengan hybrid 1.12.
  6. Alihkan semua traffic kembali ke region lama dan validasi traffic.
  7. Nonaktifkan region baru.

Pertimbangan sebelum mengupgrade penginstalan multi-region

Apigee merekomendasikan urutan berikut untuk mengupgrade penginstalan multi-region:

  1. Cadangkan dan validasi data dari setiap region sebelum memulai upgrade.
  2. Upgrade versi Hybrid di satu region dan pastikan semua pod dalam status berjalan untuk memvalidasi upgrade.
  3. Validasi traffic di wilayah yang baru diupgrade.
  4. Upgrade setiap wilayah berikutnya hanya setelah memvalidasi traffic di wilayah sebelumnya.
  5. 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.
  • Helm versi v3.14.2+.
  • kubectl versi 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:

  1. Bersiap untuk mengupgrade.
    • Cadangkan Cassandra.
    • Cadangkan direktori penginstalan hybrid Anda.
  2. Instal hybrid runtime versi 1.12.4.

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:

    1. Mencantumkan pod cassandra:
      kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra

      Contoh:

      kubectl get pods -n apigee -l app=apigee-cassandra
      NAME                         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
      
      . . .
    2. Menghapus pod:
      kubectl delete pod -n APIGEE_NAMESPACE CASSANDRA_POD_NAME

      Contoh:

      kubectl delete pod -n apigee apigee-cassandra-default-0
    3. 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-cassandra
      NAME                         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
      
      . . .
  • 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:

    1. Mencantumkan pod cassandra:
      kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra

      Contoh:

      kubectl get pods -n apigee -l app=apigee-cassandra
      NAME                         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
    2. 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 status
      Datacenter: 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

Mencadangkan direktori penginstalan hybrid

  1. 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_HOME

    Mac OS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. Buat salinan cadangan direktori $APIGEE_HELM_CHARTS_HOME/ versi 1.11 Anda. Anda dapat menggunakan proses pencadangan apa pun. Misalnya, Anda dapat membuat file tar dari seluruh direktori Anda dengan:
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.11-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. Cadangkan database Cassandra Anda dengan mengikuti petunjuk di Pencadangan dan pemulihan Cassandra.
  4. 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-cassandra PROJECT_ID-apigee-cassandra.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    apigee-logger PROJECT_ID-apigee-logger.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-mart PROJECT_ID-apigee-mart.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-metrics PROJECT_ID-apigee-metrics.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-runtime PROJECT_ID-apigee-runtime.json $APIGEE_HELM_CHARTS_HOME/apigee-env
    apigee-synchronizer PROJECT_ID-apigee-synchronizer.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
    apigee-udca PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-watcher PROJECT_ID-apigee-watcher.json $APIGEE_HELM_CHARTS_HOME/apigee-org/

    Non-prod

    Buat salinan file akun layanan apigee-non-prod di setiap direktori berikut:

    Akun layanan Nama file default Direktori diagram Helm
    apigee-non-prod PROJECT_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/
  5. 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

  1. Tarik diagram Helm Apigee.

    Diagram hybrid Apigee dihosting di Google Artifact Registry:

    oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

    Dengan 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.4
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. 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
    
  3. Instal CRD Apigee yang telah diupdate:
    1. Gunakan fitur uji coba kubectl dengan menjalankan perintah berikut:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run
      
    2. Setelah memvalidasi dengan perintah uji coba, jalankan perintah berikut:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. 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
      
  4. Periksa label pada node cluster. Secara default, Apigee menjadwalkan pod data pada node dengan label cloud.google.com/gke-nodepool=apigee-data dan pod runtime dijadwalkan pada node dengan label cloud.google.com/gke-nodepool=apigee-runtime. Anda dapat menyesuaikan label node pool di file overrides.yaml.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi node pool khusus.

Menginstal diagram Helm Apigee hybrid

  1. Jika belum, buka direktori APIGEE_HELM_CHARTS_HOME Anda. Jalankan perintah berikut dari direktori tersebut.
  2. 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
  3. 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 apigeedatastore sudah aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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, biasanya apigee-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
  9. Upgrade grup lingkungan (virtualhosts).
    1. 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, biasanya apigee-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
      
    2. Periksa status ApigeeRoute (AR).

      Menginstal virtualhosts akan 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

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.

  1. 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.

  2. 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.

  3. 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, tetapkan conf_security-secure.constructor.only ke true di bagian runtime:cwcAppend:. Contoh:
      # Apigee Runtime
      runtime:
        cwcAppend:
          conf_security-secure.constructor.only: true
    • Perbarui diagram apigee-env untuk 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 dengan ENV_NAME. Namun, jika lingkungan Anda memiliki nama yang sama dengan grup lingkungan, Anda harus menggunakan nama rilis yang berbeda untuk lingkungan dan grup lingkungan, misalnya dev-env-release dan dev-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.

  4. 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.only ke true dan memperbarui diagram apigee-env untuk 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:

  1. Sebelum memulai rollback, pastikan semua pod dalam status berjalan:
    kubectl get pods -n APIGEE_NAMESPACE
    kubectl get pods -n apigee-system
  2. 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
  3. Lakukan rollback setiap komponen kecuali apigee-datastore dengan perintah berikut:
    1. Buat variabel lingkungan berikut:
      • PREVIOUS_HELM_CHARTS_HOME: Direktori tempat diagram Helm Apigee hybrid sebelumnya diinstal. Ini adalah versi yang Anda roll back.
    2. 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, biasanya apigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME.

    3. 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, biasanya apigee-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
    4. 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
    5. 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
    6. 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
    7. 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
    8. 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
    9. Roll back CRD Apigee Hybrid:
      kubectl apply -k  $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
  4. Validasi semua pod dalam status berjalan atau selesai:
    kubectl get pods -n APIGEE_NAMESPACE
    kubectl get pods -n apigee-system
  5. 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

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.

  1. 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.
  2. Pulihkan region v1.11 (atau penginstalan baru) dari cadangan Anda dengan mengikuti petunjuk di:
  3. Memverifikasi traffic ke penginstalan yang dipulihkan
  4. 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.

  1. Sebelum memulai rollback, validasi semua pod dalam status berjalan:
    kubectl get pods -n APIGEE_NAMESPACE
    kubectl get pods -n apigee-system
  2. 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:

    1. Mencantumkan pod cassandra:
      kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra

      Contoh:

      kubectl get pods -n apigee -l app=apigee-cassandra
      NAME                         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
    2. 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 status
      Datacenter: 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.

  3. Buka direktori tempat diagram Helm Apigee Hybrid sebelumnya diinstal
  4. Ubah konteks ke region yang diupgrade
    kubectl config use-context UPGRADED_REGION_CONTEXT
        
  5. Pastikan semua pod dalam status berjalan:
    kubectl get pods -n APIGEE_NAMESPACE
    kubectl get pods -n apigee-system
  6. 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
  7. Lakukan rollback setiap komponen kecuali apigee-datastore dengan perintah berikut:
    1. Buat variabel lingkungan berikut:
      • PREVIOUS_HELM_CHARTS_HOME: Direktori tempat diagram Helm Apigee hybrid sebelumnya diinstal. Ini adalah versi yang Anda roll back.
    2. 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, biasanya apigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME.

    3. 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, biasanya apigee-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
    4. 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
    5. 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
    6. 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
    7. 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
    8. 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
    9. Roll back CRD Apigee Hybrid:
      kubectl apply -k  $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
  8. 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 datastore telah 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:

  1. 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.
  2. 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.

  3. Bersihkan region yang gagal dengan mengikuti petunjuk di Memulihkan region dari upgrade yang gagal.
  4. 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.

  1. 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.
  2. Pulihkan region v1.11 (atau penginstalan baru) dari cadangan Anda dengan mengikuti petunjuk di:
  3. Memverifikasi traffic ke penginstalan yang dipulihkan
  4. Untuk penginstalan multi-region, bangun ulang dan pulihkan region berikutnya. Lihat petunjuk di Memulihkan dari cadangan di Memulihkan di beberapa region.
  5. 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.

  1. Validasi status cluster Cassandra dari region aktif:
    1. Alihkan konteks kubectl ke region yang akan dihapus:
      kubectl config use-context CONTEXT_OF_LIVE_REGION
    2. Mencantumkan pod cassandra:
      kubectl get pods -n APIGEE_NAMESPACE -l app=apigee-cassandra

      Contoh:

      kubectl get pods -n apigee -l app=apigee-cassandra
      NAME                 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
    3. Jalankan perintah exec ke salah satu pod cassandra:
      kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
    4. 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
      
    5. 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 describecluster
      
      Schema versions:
          4bebf2de-0582-31b4-9c5f-e36f60127e1b: [10.48.14.16, 10.48.12.16, 10.48.0.18]
      
  2. Membersihkan replikasi keyspace Cassandra:
    1. Dapatkan tugas user-setup dan hapus. Tugas user-setup baru akan segera dibuat.
      kubectl get jobs -n APIGEE_NAMESPACE

      Contoh:

      kubectl get jobs -n apigee
        NAME                                                           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        21s
      
      kubectl 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 apigee
      
        apigee-cassandra-user-setup-myhybridorg-8b3e61d-wl92b         0/1     Init:0/1    0               1s
        
    2. Validasi setelan replikasi keyspace Cassandra dengan membuat penampung klien dengan mengikuti petunjuk di Buat penampung klien.
    3. 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 user karena 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-1 adalah 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)
      
    4. Jika karena alasan tertentu tugas user-setup terus 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 user karena 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'};
    5. Validasi bahwa semua keyspace direplikasi di region yang tepat dengan perintah cqlsh berikut:
      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)

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).

  1. Jalankan perintah exec ke salah satu pod cassandra:
    kubectl exec -it -n CASSANDRA_POD_NAME -- /bin/bash
  2. Periksa status cluster Cassandra:
    nodetool -u JMX_USER -pw JMX_PASSWORD status
  3. 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
    
  4. Hapus referensi ke node bawah (DN). Dari contoh di atas, kita akan menghapus referensi untuk host 10.8.4.4
    kubectl exec -it -n apigee apigee-cassandra-default-2 -- /bin/bash
     nodetool -u JMX_USER -pw JMX_PASSWORD removenode HOST_ID
    
  5. Setelah referensi dihapus, hentikan pod. Pod Cassandra baru akan muncul dan bergabung dengan cluster
    kubectl delete pod -n POD_NAME
  6. 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.

  1. Sebelum memperbaiki status pengontrol datastore lagi, validasi bahwa statusnya dalam status releasing dan pod tidak muncul bersama dengan status cluster Cassandra.
    1. Validasi menggunakan perintah Helm bahwa datastore telah di-roll back:
      helm -n APIGEE_NAMESPACE list

      Contoh:

      helm -n apigee list
      NAME              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
      
    2. Dapatkan status pod Cassandra:
      kubectl get pods -n APIGEE_NAMESPACE

      Contoh:

      kubectl get pods -n apigee
      NAME                         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
      
    3. Validasi bahwa pengontrol apigeeds macet dalam status melepaskan:
      kubectl get apigeeds -n APIGEE_NAMESPACE

      Contoh:

      kubectl get apigeeds -n apigee
      NAME      STATE       AGE
      default   releasing   46h
    4. Validasi status node Cassandra (perhatikan bahwa satu node dalam status DN, yaitu node yang terjebak dalam status CrashLoopBackOff):
      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 status
      Defaulted 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
      
  2. Upgrade datastore menggunakan diagram 1.12.
    helm upgrade datastore APIGEE_HELM_1.12.0_HOME/apigee-datastore/   --install   --namespace APIGEE_NAMESPACE   -f overrides.yaml
  3. Pastikan semua pod Running dan cluster Cassandra responsif kembali.
    1. Validasi semua pod sudah READY lagi:
      kubectl get pods -n APIGEE_NAMESPACE

      Contoh:

      kubectl get pods -n apigee
      NAME                         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
    2. 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 status
      Datacenter: 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
        
    3. Validasi status pengontrol apigeeds:
      kubectl get apigeeds -n APIGEE_NAMESPACE

      Contoh:

      kubectl get apigeeds -n apigee
      NAME      STATE     AGE
      default   running   2d1h

Pada tahap ini, Anda telah memperbaiki datastore dan datastore tersebut harus dalam status running.