Mengupgrade Apigee hybrid ke versi 1.13

Prosedur ini mencakup upgrade dari Apigee hybrid versi 1.12.x ke Apigee hybrid versi 1.13.2.

Perubahan dari Apigee hybrid v1.12

Perhatikan perubahan berikut:

  • apigee-operator di namespace Apigee: Mulai versi 1.13, apigee-operator berjalan di namespace Kubernetes yang sama dengan komponen campuran Apigee lainnya, apigee secara default. Anda dapat memberikan nama apa pun untuk namespace. Pada versi sebelumnya, apigee-operator harus berjalan di namespace-nya sendiri, apigee-system.
  • Anthos (di bare metal atau VMware) kini menjadi Google Distributed Cloud (untuk bare metal atau VMware): Untuk informasi selengkapnya, lihat ringkasan produk untuk Google Distributed Cloud untuk bare metal dan Google Distributed Cloud untuk VMware.

Prasyarat

Sebelum mengupgrade ke versi campuran 1.13, pastikan penginstalan Anda memenuhi persyaratan berikut:

Ringkasan upgrade ke versi 1.13.2

Prosedur untuk mengupgrade Apigee hybrid diatur dalam bagian berikut:

  1. Bersiap untuk mengupgrade.
  2. Instal runtime campuran versi 1.13.2.

Bersiap untuk mengupgrade ke versi 1.13

Mencadangkan 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.12. 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.12-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 (.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.12 dan hybrid 1.13. Ikuti dokumentasi platform Anda jika Anda memerlukan bantuan.

Menginstal runtime hybrid 1.13.2

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.13.2
    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.15.1/cert-manager.yaml
    

    Lihat Platform dan versi yang didukung: cert-manager untuk mengetahui daftar versi yang didukung.

  3. Jika namespace Apigee Anda bukan apigee, edit file apigee-operator/etc/crds/default/kustomization.yaml dan ganti nilai namespace dengan namespace Apigee Anda.
    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    namespace: APIGEE_NAMESPACE
    

    Jika menggunakan apigee sebagai namespace, Anda tidak perlu mengedit file.

  4. 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=server
      
    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                    2024-08-21T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2024-08-21T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2024-08-21T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2024-08-21T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2024-08-21T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2024-08-21T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2024-08-21T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2024-08-21T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2024-08-21T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2024-08-21T14:48:35Z
      
  5. Migrasikan apigee-operator dari namespace apigee-system ke APIGEE_NAMESPACE.
    1. Anotasikan clusterIssuer dengan namespace baru
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='APIGEE_NAMESPACE'
      
    2. Jika Anda mengubah nama rilis untuk apigee-operator, anotasikan clusterIssuer dengan nama rilis baru.
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='APIGEE_OPERATOR_RELEASE_NAME'
      
  6. Perbarui replika deployment Apigee Operator yang ada di namespace apigee-system menjadi 0 (nol) untuk menghindari rekonsiliasi kedua pengontrol.
    kubectl scale deployment apigee-controller-manager -n apigee-system --replicas=0
    
  7. Perbarui replika deployment Apigee Operator yang ada di namespace apigee-system menjadi 0 (nol) untuk menghindari rekonsiliasi kedua pengontrol.
    kubectl delete mutatingwebhookconfiguration apigee-mutating-webhook-configuration
    kubectl delete validatingwebhookconfiguration apigee-validating-webhook-configuration
    
  8. 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. Jalankan perintah berikut dari direktori tersebut.
  2. Upgrade Operator/Pengontrol Apigee:

    Uji coba:

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

    Upgrade diagram:

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

    Verifikasi penginstalan Apigee Operator:

    helm ls -n APIGEE_NAMESPACE
    
    NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                   APP VERSION
    operator   apigee   3          2024-08-21 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.13.2   1.13.2
    

    Pastikan server sudah aktif dan berjalan dengan memeriksa ketersediaannya:

    kubectl -n APIGEE_NAMESPACE 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=server
    

    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_NAMESPACE 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
    

    Verifikasi bahwa aplikasi sudah aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n APIGEE_NAMESPACE 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
    

    Verifikasi bahwa aplikasi sudah aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n APIGEE_NAMESPACE 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_NAMESPACE 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_NAMESPACE 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.13.2

    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_NAMESPACE 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 lingkungan 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 lingkungan dari bidang kontrol. Oleh karena itu, pastikan status AR yang sesuai sedang berjalan:

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2d
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                        STATE     AGE
      apigee-org1-dev-egroup-xxxxxx                running   2d
  10. Setelah Anda memverifikasi bahwa semua penginstalan berhasil diupgrade, hapus rilis apigee-operator yang lebih lama dari namespace apigee-system.
    1. Uninstal rilis operator lama:
      helm delete operator -n apigee-system
      
    2. Hapus namespace apigee-system:
      kubectl delete namespace apigee-system
      
  11. Upgrade operator lagi di namespace Apigee Anda untuk menginstal ulang resource cakupan cluster yang dihapus:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    

Melakukan roll back ke versi sebelumnya

Untuk melakukan rollback ke versi sebelumnya, gunakan versi diagram yang lebih lama untuk melakukan rollback proses upgrade dalam urutan terbalik. Mulai dengan apigee-virtualhost dan kembali ke apigee-operator, lalu kembalikan CRD.

Karena perubahan namespace untuk apigee-operator, Anda perlu melakukan langkah tambahan untuk menghapus hook validasi dan mutasi. Dengan begitu, saat Anda menginstal kembali apigee-operator di namespace apigee-system, apigee-operator akan dibuat ulang untuk mengarah ke endpoint Operator Apigee yang benar.

  1. Perbarui replika deployment Operator Apigee yang ada di Apigee menjadi 0 (nol) agar kedua pengontrol tidak merekonsiliasi Resource Kustom untuk menghindari konflik saat melakukan rollback di namespace apigee-system.
    kubectl scale deployment apigee-controller-manager -n APIGEE_NAMESPACE --replicas=0
    
    kubectl delete mutatingwebhookconfiguration \
      apigee-mutating-webhook-configuration-APIGEE_NAMESPACE
    
    kubectl delete validatingwebhookconfiguration \
      apigee-validating-webhook-configuration-APIGEE_NAMESPACE
    
  2. Kembalikan semua diagram dari apigee-virtualhost ke apigee-datastore. Perintah berikut mengasumsikan bahwa Anda menggunakan diagram dari versi sebelumnya (v1.12.x).

    Jalankan perintah berikut untuk setiap grup lingkungan:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f 1.12_OVERRIDES_FILE
    

    Jalankan perintah berikut untuk setiap lingkungan:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f 1.12_OVERRIDES_FILE
    

    Kembalikan diagram yang tersisa kecuali apigee-operator.

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
  3. Buat namespace apigee-system.
    kubectl create namespace apigee-system
    
  4. Patch anotasi resource kembali ke namespace apigee-system.
    kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
    
  5. Jika Anda juga telah mengubah nama rilis, perbarui anotasi dengan nama rilis operator.
    kubectl annotate --overwrite cluseterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
    
  6. Instal apigee-operator kembali ke namespace apigee-system.
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
  7. Kembalikan CRD dengan menginstal ulang CRD lama.
    kubectl apply -k apigee-operator/etc/crds/default/ \
      --server-side \
      --force-conflicts \
      --validate=false
    
  8. Bersihkan rilis apigee-operator dari namespace APIGEE_NAMESPACE untuk menyelesaikan proses rollback.
    helm uninstall operator -n APIGEE_NAMESPACE
    
  9. Beberapa resource cakupan cluster, seperti clusterIssuer, akan dihapus saat operator di-uninstal. Instal ulang dengan perintah berikut:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.12_OVERRIDES_FILE