Mengupgrade Apigee hybrid ke versi 1.12

Prosedur ini mencakup upgrade dari Apigee Hybrid versi 1.11.x ke Apigee Hybrid versi 1.12.3.

Perubahan dari Apigee hybrid v1.11

Apigee hybrid versi 1.12 memperkenalkan perubahan berikut yang memengaruhi proses upgrade. Untuk 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.
  • Rangkaian metrik baru untuk memantau proxy Apigee dan endpoint target kini tersedia. Untuk hybrid v1.12, resource yang dipantau ProxyV2 dan TargetV2 tidak akan digunakan lagi secara default. Semua metrik proxy dan target akan dipublikasikan ke resource yang dimonitor Proxy dan Target.

    Untuk terus memunculkan metrik ke resource yang dipantau ProxyV2 dan TargetV2, tetapkan metrics.disablePrometheusPipeline ke true di overrides.yaml.

    Jika Anda telah mengonfigurasi pemberitahuan berbasis metrik, konfirmasi penggunaan metrik yang benar untuk penginstalan campuran Anda. Untuk mengetahui informasi selengkapnya, lihat Notifikasi berbasis metrik.

Pertimbangan sebelum memulai upgrade ke versi 1.12

Mengupgrade 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, harap pertimbangkan hal-hal berikut:

  • Upgrade versi Cassandra akan dilakukan di latar belakang dan akan dilakukan di 1 pod (atau node Cassandra) pada satu waktu, jadi rencanakan pengurangan kapasitas database selama upgrade.
  • Skalakan kapasitas Cassandra dan pastikan penggunaan disk mendekati atau di bawah 50% sebelum Anda mulai mengupgrade.
  • Validasi dan uji prosedur pencadangan dan pemulihan Cassandra Anda.
  • Cadangkan data Cassandra di penginstalan hibrida versi 1.11 sebelum Anda mulai mengupgrade dan memvalidasi pencadangan.
  • Mengupgrade apigee-datastore akan menyebabkan peningkatan konsumsi CPU sementara 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 melakukan rollback upgrade ke hybrid v1.12 setelah mengupgrade komponen apigee-datastore:
    • Jika komponen apigee-datastore dalam status baik, tetapi komponen lain memerlukan rollback, Anda dapat melakukan rollback pada komponen lain tersebut satu per satu.
    • Jika komponen apigee-datastore dalam status 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, proses ini mungkin memerlukan periode nonaktif. Oleh karena itu, jika mengupgrade penginstalan satu region, sebaiknya buat region kedua, lalu upgrade hanya satu region dalam satu waktu dalam urutan berikut:

  1. Tambahkan region kedua ke penginstalan yang ada menggunakan versi campuran 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 region berikutnya hanya setelah memvalidasi traffic di region sebelumnya.
  5. Jika ada kemungkinan perlunya melakukan rollback upgrade dalam deployment multi-region, bersiaplah untuk mengalihkan traffic dari region yang gagal, pertimbangkan untuk menambahkan kapasitas yang memadai di region tempat traffic akan dialihkan untuk menangani traffic untuk kedua region.

Prasyarat

Sebelum mengupgrade ke versi campuran 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 versi hybrid Apigee 1.11 ke versi 1.12. Perencanaan dapat membantu mengurangi kebutuhan untuk periode nonaktif jika Anda perlu melakukan roll back atau pemulihan setelah upgrade.

  • Cadangan dari Hybrid 1.12 tidak dapat dipulihkan di Hybrid 1.11 dan sebaliknya, karena inkompatibilitas antara kedua versi tersebut.
  • Anda tidak dapat menskalakan pod datastore selama upgrade ke versi 1.12. Atasi kebutuhan penskalaan Anda di semua region sebelum Anda mulai mengupgrade penginstalan campuran.
  • Dalam penginstalan campuran satu region, Anda tidak dapat melakukan rollback komponen datastore setelah proses upgrade datastore selesai. Anda tidak dapat melakukan roll back datastore Cassandra 4.x ke datastore Cassandra 3.x. Tindakan ini akan memerlukan pemulihan dari cadangan terbaru data Cassandra 3.x (dari penginstalan versi campuran 1.11).
  • Penghapusan atau penambahan region 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.3

Prosedur untuk mengupgrade Apigee hybrid diatur dalam bagian berikut:

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

Bersiap untuk mengupgrade ke versi 1.12

Mencadangkan cassandra

  • Cadangkan database Cassandra di semua region yang berlaku dan validasi data dalam penginstalan hibrida versi 1.11 sebelum memulai upgrade. Lihat Memantau pencadangan dalam dokumentasi versi 1.11.
  • Mulai ulang semua pod Cassandra di cluster sebelum Anda memulai proses upgrade, sehingga masalah yang tersisa dapat muncul.

    Untuk memulai ulang dan menguji pod Cassandra, hapus setiap pod satu per satu, lalu validasi bahwa pod tersebut kembali dalam status berjalan dan bahwa probe kesiapan lulus:

    1. Cantumkan 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 lagi file penggantian terakhir yang diketahui untuk memastikan tidak ada perubahan yang dilakukan sehingga Anda dapat menggunakan konfigurasi yang sama untuk mengupgrade ke versi campuran 1.12.
  • Pastikan semua node Cassandra di semua region berada dalam status UN (Up / Normal). Jika ada node Cassandra yang berada dalam status yang berbeda, atasi terlebih dahulu sebelum memulai upgrade.

    Anda dapat memvalidasi status node Cassandra dengan perintah berikut:

    1. Cantumkan 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 dapat menggunakan proses pencadangan apa pun. Misalnya, Anda dapat membuat file tar dari seluruh direktori 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 sertifikat TLS dan file kunci 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 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.3

Bersiap untuk upgrade diagram Helm

  1. Ambil 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 hibrida Apigee 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.3
    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 diperbarui:
    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 di node dengan label cloud.google.com/gke-nodepool=apigee-data dan pod runtime dijadwalkan di 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 Operator/Pengontrol Apigee:

    Uji coba:

    helm upgrade operator apigee-operator/ \
      --install \
      --create-namespace \
      --namespace apigee-system \
      -f OVERRIDES_FILE \
      --dry-run
    

    Upgrade 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.3   1.12.3

    Pastikan server 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
    

    Upgrade 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
    

    Upgrade diagram:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  5. Mengupgrade Redis Apigee:

    Uji coba:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run
    

    Upgrade diagram:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  6. Mengupgrade pengelola ingress Apigee:

    Uji coba:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run
    

    Upgrade diagram:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    Pastikan server 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
    

    Upgrade diagram:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    Pastikan aplikasi tersebut sudah aktif dan berjalan dengan memeriksa status organisasi masing-masing:

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  8. Mengupgrade 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 untuk menginstal diagram apigee-env sebelumnya. 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 untuk v.1.12.3

    Upgrade diagram:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

    Pastikan aplikasi sudah aktif dan berjalan dengan memeriksa status setiap lingkungan:

    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) satu per satu. 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 untuk menginstal diagram apigee-virtualhost sebelumnya. Di hybrid v1.10, biasanya apigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, nilai ini biasanya ENV_GROUP_NAME.

      Upgrade 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 pengamat Apigee mengambil detail terkait grup env dari bidang kontrol. Oleh karena itu, pastikan 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

Melakukan roll back ke versi sebelumnya

Bagian ini dibagi menjadi beberapa bagian, bergantung pada status komponen apigee-datastore Anda setelah mengupgrade ke Apigee hybrid versi 1.12. Ada prosedur untuk rollback satu region atau multi-region dengan komponen apigee-datastore dalam status yang baik dan prosedur untuk pemulihan atau pemulihan dari cadangan saat apigee-datastore dalam status yang buruk.

Pemulihan dan rollback satu region

Melakukan rollback saat apigee-datastore dalam status yang baik

Prosedur ini menjelaskan cara melakukan rollback setiap komponen Apigee Hybrid dari v1.12 ke v1.11 kecuali apigee-datastore. Komponen apigee-datastore v1.12 kompatibel dengan komponen hybrid v1.11.

Untuk melakukan rollback penginstalan satu region ke versi 1.11:

  1. Sebelum memulai rollback, validasi 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. Kembalikan 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. Kembalikan 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 untuk menginstal diagram apigee-virtualhost sebelumnya. Di hybrid v1.10, biasanya apigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, nilai ini biasanya ENV_GROUP_NAME.

    3. Men-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 untuk menginstal diagram apigee-env sebelumnya. Di hybrid v1.10, biasanya apigee-env-ENV_NAME. Di Hybrid v1.11 dan yang lebih baru, nilai ini biasanya ENV_NAME.

      Pastikan aplikasi sudah aktif dan berjalan dengan memeriksa status setiap lingkungan:

      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 aplikasi tersebut sudah aktif dan berjalan dengan memeriksa status organisasi masing-masing:

      kubectl -n apigee get apigeeorg
      
      NAME                STATE     AGE
      apigee-org1-xxxxx   running   2d
    5. Kembalikan Pengelola Ingress:
      helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server 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. Lakukan rollback Redis:
      helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

      kubectl -n apigee get apigeeredis default
      
      NAME      STATE     AGE
      default   running   2d
    7. Melakukan rollback Telemetri Apigee:
      helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

      kubectl -n apigee get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   2d
    8. Kembalikan 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.3   1.12.3

      Pastikan server 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. Kembalikan 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 berada dalam 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 tidak dalam status yang baik

Jika upgrade komponen apigee-datastore tidak berhasil, Anda tidak dapat melakukan rollback 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 wilayah lain), buat penginstalan baru v1.11 menggunakan diagram dan file penggantian 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 bagian Meng-uninstal runtime campuran.

Pemulihan dan rollback multi-region

Melakukan rollback saat apigee-datastore dalam status yang baik

Prosedur ini menjelaskan cara melakukan rollback setiap komponen Apigee Hybrid dari v1.12 ke v1.11 kecuali apigee-datastore. Komponen apigee-datastore v1.12 kompatibel 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 yang berada dalam status yang berbeda, atasi terlebih dahulu sebelum memulai proses upgrade.

    Anda dapat memvalidasi status node Cassandra dengan perintah berikut:

    1. Cantumkan 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. Mengubah konteks ke region yang diupgrade
    kubectl config use-context UPGRADED_REGION_CONTEXT
        
  5. Validasi bahwa semua pod berada 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. Kembalikan 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. Kembalikan 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 untuk menginstal diagram apigee-virtualhost sebelumnya. Di hybrid v1.10, biasanya apigee-virtualhost-ENV_GROUP_NAME. Di Hybrid v1.11 dan yang lebih baru, nilai ini biasanya ENV_GROUP_NAME.

    3. Men-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 untuk menginstal diagram apigee-env sebelumnya. Di hybrid v1.10, biasanya apigee-env-ENV_NAME. Di Hybrid v1.11 dan yang lebih baru, nilai ini biasanya ENV_NAME.

      Verifikasi bahwa setiap env 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 aplikasi tersebut sudah aktif dan berjalan dengan memeriksa status organisasi masing-masing:

      kubectl -n apigee get apigeeorg
      
      NAME                STATE     AGE
      apigee-org1-xxxxx   running   2d
    5. Kembalikan Pengelola Ingress:
      helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server 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. Lakukan rollback Redis:
      helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

      kubectl -n apigee get apigeeredis default
      
      NAME      STATE     AGE
      default   running   2d
    7. Melakukan rollback Telemetri Apigee:
      helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f PREVIOUS_OVERRIDES_FILE
      

      Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

      kubectl -n apigee get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   2d
    8. Kembalikan 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.3   1.12.3

      Pastikan server 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. Kembalikan 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 berada dalam 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 beberapa penginstalan region. Metode ini hanya dapat dilakukan jika ada minimal 1 region aktif di Hybrid 1.11. Datastore v1.12 kompatibel dengan komponen v1.11.

Untuk memulihkan region yang gagal dari region yang sehat, 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 di Menonaktifkan region hybrid. Tunggu hingga penghentian layanan selesai sebelum melanjutkan ke langkah berikutnya.

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

Jika upgrade komponen apigee-datastore tidak berhasil, Anda tidak dapat melakukan rollback 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 wilayah lain), buat penginstalan baru v1.11 menggunakan diagram dan file penggantian 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, buat 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 Menguninstal runtime hybrid.

LAMPIRAN: Memulihkan region dari upgrade yang gagal

Menghapus Datacenter jika upgrade dari 1.11 ke 1.12 gagal.

  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. Cantumkan 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 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 akan terlihat 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 menggunakan versi skema yang sama:
      nodetool -u JMX_USER -pw JMX_PASSWORD describecluster

      Outputnya akan terlihat 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. Bersihkan replikasi ruang kunci 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 ruang kunci Cassandra dengan membuat penampung klien mengikuti petunjuk di Membuat penampung klien.
    3. Dapatkan semua ruang kunci. Jalankan ke 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 ruang kunci:

      select * from system_schema.keyspaces;

      Output akan terlihat seperti berikut dengan dc-1 adalah DC live:

      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 ruang kunci.
      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 ruang kunci:

      select * from system_schema.keyspaces;

      Gunakan nama ruang kunci dari perintah di atas dan ganti di 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 ruang kunci 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 menghapus semua referensi untuk DC yang mati dari cluster Cassandra.

LAMPIRAN: Menghapus node DOWN dari Cluster Cassandra

Gunakan prosedur ini saat Anda melakukan rollback penginstalan multi-region dan tidak semua pod Cassandra berada dalam status Aktif / Normal (UN).

  1. Jalankan 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 Nonaktif (DN). Jalankan ke pod Cassandra di region tempat pod Cassandra tidak dapat muncul.
    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 down (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 rollback pada region cluster yang tersisa.

LAMPIRAN: Pemecahan masalah: apigee-datastore dalam status macet setelah rollback

Gunakan prosedur ini jika Anda telah melakukan rollback apigee-datastore ke hybrid 1.11 setelah upgrade, dan apigee-datastore tersebut dalam status macet.

  1. Sebelum memperbaiki status pengontrol datastore lagi, validasi bahwa statusnya dalam status releasing dan pod tidak muncul bersama 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 rilis:
      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 berada dalam status DN yang merupakan 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. Validasi semua pod adalah Running dan cluster Cassandra kembali responsif.
    1. Validasi semua pod kembali menjadi READY:
      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.