Mengupgrade Apigee Hybrid ke versi 1.13

Prosedur ini mencakup upgrade dari Apigee Hybrid versi 1.12.x ke Apigee Hybrid versi 1.13.0.

Perubahan dari Apigee Hybrid v1.12

Harap perhatikan perubahan berikut:

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

Prasyarat

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

  • Jika penginstalan campuran Anda menjalankan versi yang lebih lama dari v1.12, Anda harus mengupgrade ke versi 1.12 sebelum mengupgrade ke v1.13. Lihat Mengupgrade Apigee Hybrid ke versi 1.12.
  • Helm versi v3.10+.
  • kubectl versi 1.27, 1.28, atau 1.29 (direkomendasikan).
  • cert-manager versi v1.15.1. Jika perlu, Anda akan mengupgrade cert-manager di bagian Bersiap untuk mengupgrade ke versi di bawah.

Upgrade ke ringkasan versi 1.13.0

Prosedur untuk mengupgrade Apigee hybrid diatur dalam bagian berikut:

  1. Bersiap melakukan upgrade.
  2. Menginstal runtime hybrid versi 1.13.0.

Bersiap untuk mengupgrade ke versi 1.13

Mencadangkan penginstalan hybrid

  1. Petunjuk ini menggunakan variabel lingkungan APIGEE_HELM_CHARTS_HOME untuk direktori di sistem file Anda di mana Anda menginstal bagan 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) di untuk mengautentikasi akun layanan, pastikan file sertifikat akun layanan Anda berada di direktori {i> Helm chart <i}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 layanan file akun, bergantung pada jenis penginstalan Anda:

    Prod

    Akun layanan Nama file default Direktori chart 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-produk

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

    Akun layanan Nama file default Direktori chart 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 Anda

Periksa versi platform Kubernetes Anda, dan jika perlu, upgrade platform Kubernetes Anda ke versi baru yang didukung oleh model hybrid 1.12 dan hybrid 1,13. Ikuti dokumentasi platform jika Anda memerlukan bantuan.

Menginstal runtime hybrid 1.13.0

Bersiap untuk upgrade diagram Helm

  1. Ambil chart Helm Apigee.

    Diagram hybrid Apigee dihosting di Google Artifact Registry:

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

    Menggunakan perintah pull, salin semua Helm hybrid Apigee diagram 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.0-hotfix.1
    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 pengelola sertifikat 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
    
  3. Jika namespace Apigee bukan apigee, edit file apigee-operator/etc/crds/default/kustomization.yaml dan ganti nilai namespace dengan namespace Apigee.
    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. Update replika deployment Operator Apigee yang ada di namespace apigee-system menjadi 0 (nol) agar kedua pengontrol tidak disesuaikan.
    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 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 kumpulan node dalam file overrides.yaml.

    Untuk informasi selengkapnya, lihat Mengonfigurasi kumpulan node khusus.

Menginstal diagram Helm hybrid Apigee

  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 \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run
    

    Tingkatkan diagram:

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

    Verifikasi penginstalan Operator Apigee:

    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.0   1.13.0
    

    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
    

    Tingkatkan diagram:

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

    Pastikan apigeedatastore sudah aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n APIGEE_NAMESPACE get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  4. Upgrade telemetri Apigee:

    Uji coba:

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

    Tingkatkan diagram:

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

    Pastikan aplikasi tersebut aktif dan berjalan dengan memeriksa statusnya:

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

    Tingkatkan diagram:

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

    Pastikan aplikasi tersebut aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n APIGEE_NAMESPACE get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  6. Upgrade ingress manager Apigee:

    Uji coba:

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

    Tingkatkan 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
    

    Tingkatkan diagram:

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

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

    kubectl -n APIGEE_NAMESPACE get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  8. Upgrade lingkungan.

    Anda harus menginstal lingkungan satu per satu. 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. Pada v1.10 hibrida, biasanya apigee-env-ENV_NAME. Dalam 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.0

    Tingkatkan 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 grup lingkungan (virtualhost) dalam satu waktu. 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 sebelumnya Anda gunakan untuk menginstal Diagram apigee-virtualhost. Pada v1.10 hibrida, biasanya apigee-virtualhost-ENV_GROUP_NAME. Dalam Hybrid v1.11 dan yang lebih baru, biasanya ENV_GROUP_NAME.

      Tingkatkan 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, periksa bahwa nilai Status AR 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 memastikan bahwa semua penginstalan berhasil diupgrade, hapus rilis apigee-operator 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 untuk menginstal ulang resource cakupan cluster yang telah dihapus:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    

Melakukan roll back ke versi sebelumnya

Untuk melakukan roll back ke versi sebelumnya, gunakan diagram versi lama untuk me-roll back proses upgrade dalam urutan terbalik. Mulai dengan apigee-virtualhost dan lanjutkan ke apigee-operator, lalu kembalikan CRD.

Karena adanya perubahan namespace untuk apigee-operator, Anda perlu melakukan langkah-langkah tambahan untuk menghapus hook penerimaan yang Memvalidasi dan Memutasi. Dengan demikian, saat Anda menginstal kembali apigee-operator di namespace apigee-system, fungsi tersebut akan dibuat ulang agar mengarah ke endpoint Operator Apigee yang benar.

  1. Update replika deployment Operator Apigee yang ada di Apigee ke 0 (nol) agar kedua pengontrol tidak merekonsiliasi Resource Kustom untuk menghindari konflik saat melakukan roll back 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. Putar ulang CRD dengan menginstal ulang CRD yang lebih 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 aplikasi tersebut dengan perintah berikut:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.12_OVERRIDES_FILE