Mengupgrade Apigee Hybrid ke versi 1.3.6

Ikhtisar peningkatan ke versi 1.3.6.

Prosedur untuk mengupgrade Apigee Hybrid diatur dalam bagian berikut:

  1. Persiapan
    1. Membuat dan mengupdate akun layanan.
    2. Merencanakan grup lingkungan.
    3. Menyalin dan memperbarui file penggantian.
  2. Mengupgrade Istio dan pengelola sertifikat.
  3. Instal hybrid runtime versi 1.3.
  4. Jalankan pembersihan.

Prasyarat

Persiapan

  1. (Direkomendasikan) Buat salinan cadangan direktori $APIGEECTL_HOME/ versi 1.2 Anda. Contoh:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-backup.tar.gz $APIGEECTL_HOME
  2. (Direkomendasikan) Cadangkan database Cassandra Anda dengan mengikuti petunjuk dalam Pencadangan dan pemulihan Cassandra
  3. Upgrade platform Kubernetes Anda sebagai berikut. Ikuti dokumentasi platform jika Anda memerlukan bantuan:
    Platform Upgrade ke versi
    GKE 1,15.x
    Anthos 1,5
    AKS 1.16.x menggunakan cluster terpasang Anthos
  4. Jika Anda tidak menggunakan Apigee Connect dalam penginstalan hybrid, aktifkan Apigee Connect.
    1. Periksa apakah Apigee Connect API sudah diaktifkan:
      gcloud services list | grep apigeeconnect
      
      apigeeconnect.googleapis.com         Apigee Connect API
    2. Jika tidak, aktifkan API:
      gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID

      Dengan $PROJECT_ID sebagai ID project Google Cloud Anda.

    3. Pada command line, dapatkan kredensial autentikasi gcloud, seperti yang ditunjukkan contoh berikut:

      TOKEN=$(gcloud auth print-access-token)

      Untuk memeriksa apakah token Anda sudah diisi, gunakan echo, seperti yang ditunjukkan contoh berikut:

      echo $TOKEN

      Ini akan menampilkan token Anda sebagai string yang dienkode.

      Untuk mengetahui informasi selengkapnya, baca ringkasan alat command line gcloud.

    4. Periksa apakah Apigee Connect diaktifkan untuk organisasi Anda:
      curl -H "Authorization: Bearer $TOKEN" \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"

      Dengan $ORG_NAME sebagai ID organisasi Anda.

      Jika output berisi:

            "name" : "features.mart.connect.enabled",
            "value" : "true"

      Apigee Connect diaktifkan.

    5. Jika Apigee Connect tidak diaktifkan, tetapkan peran Apigee Connect Agent ke akun layanan MART:
      gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/apigeeconnect.Agent
    6. Aktifkan Apigee Connect dengan perintah berikut:
      curl -H "Authorization: Bearer $TOKEN" -X PUT \
        -H "Content-Type: application/json" \
        -d '{
          "name" : "'"$ORG_NAME"'",
          "properties" : {
            "property" : [ {
              "name" : "features.hybrid.enabled",
              "value" : "true"
            }, {
              "name" : "features.mart.connect.enabled",
              "value" : "true"
            } ]
          }
        }' \
        "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
      

      Jika output berisi dua properti berikut, berarti Apigee Connect berhasil diaktifkan:

            {
              "name": "features.mart.connect.enabled",
              "value": "true"
            },
            {
              "name": "features.hybrid.enabled",
              "value": "true"
            }
      
  5. Buat akun layanan apigee-watcher. Apigee Watcher adalah akun layanan baru yang diperkenalkan di v1.3. Layanan ini menggunakan sinkronisasi untuk perubahan level organisasi dan menerapkan perubahan tersebut untuk mengonfigurasi ingress Istio.

    Dari direktori hibrid utama Anda:

    ./tools/create-service-account apigee-watcher ./service-accounts
  6. Tetapkan peran Agen Runtime Apigee ke akun layanan Watcher:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \
      --role roles/apigee.runtimeAgent

    Dengan PROJECT_ID sebagai project ID Google Cloud Anda. Jika alamat email akun layanan Anda berbeda dengan pola ini, ganti alamat email yang sesuai.

    Output harus menyertakan daftar semua akun layanan dan perannya, termasuk:

      ...
    - members:
      - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com
      role: roles/apigee.runtimeAgent
      ...
  7. Rencanakan grup lingkungan untuk perutean. Apigee Hybrid 1.3 mengelola pemilihan rute jalur dasar dengan grup lingkungan, bukan routingRules. Jika Anda menggunakan routingRules dalam konfigurasi campuran, desain grup lingkungan untuk mereplikasi perutean Anda.

    Anda harus membuat setidaknya satu grup lingkungan.

    Lihat Tentang grup lingkungan.

  8. Perbarui file penggantian:
    1. Buat salinan file penggantian Anda.
    2. Perbarui stanza gcp dan k8sCluster.

      Properti konfigurasi berikut telah diganti di versi hybrid 1.3:

      • gcpRegion diganti dengan gcp:region
      • gcpProjectID diganti dengan gcp:projectID
      • gcpProjectIDRuntime diganti dengan gcp:gcpProjectIDRuntime
      • k8sClusterName diganti dengan k8s:clusterName
      • k8sClusterRegion diganti dengan k8s:clusterRegion

      Misalnya, ganti struktur berikut:

      gcpRegion: gcp region
      gcpProjectID: gcp project ID
      gcpProjectIDRuntime: gcp project ID
      
      k8sClusterName: name
      k8sClusterRegion: region

      with:

      gcp:
       projectID: gcp project ID
       region: gcp region
       gcpProjectIDRuntime: gcp project ID # optional. This is only required if you
                                             # want logger/metrics data to be sent in
                                             # different gcp project.
      
      k8sCluster:
       name: gcp project ID
       region: gcp region
      
    3. Jika Anda belum memiliki ID instance unik di file penggantian, tambahkan ID:
      # unique identifier for this installation. 63 chars length limit
      instanceID: ID

      Dengan ID adalah ID unik untuk penginstalan campuran ini, seperti "my-hybrid-131-installation" atau "acmecorp-hybrid-131".

    4. Tambahkan akun layanan Watcher (apigee-watcher) ke file penggantian:
      # Note: the SA should have the "Apigee Runtime Agent" role
      watcher:
       serviceAccountPath: "service account file"
    5. Tambahkan akun layanan Metrik (apigee-metrics) ke file penggantian:
      metrics:
       serviceAccountPath: "service account file"
    6. Perbarui stanza virtualhosts: untuk mengganti routingRules dengan grup lingkungan Anda.
      1. -name: Ganti nama dengan nama grup lingkungan Anda. Anda dapat memiliki beberapa entri nama, satu untuk setiap grup lingkungan.
      2. hostAliases:[] Hapus baris ini.
      3. Simpan (atau tambahkan) entri sslCertPath: dan sslKeyPath:.
      4. Hapus semua routingRules entri.

      Contoh:

      virtualhosts:
        - name: default
          hostAliases:
            - "*.acme.com"
          sslCertPath: ./certs/keystore.pem
          sslKeyPath: ./certs/keystore.key
          routingRules:
            - paths:
              - /foo
              - /bar
            - env: my-environment

      Menjadi:

      virtualhosts:
        - name: example-env-group
          sslCertPath: ./certs/keystore.pem
          sslKeyPath: ./certs/keystore.key
    7. Perbarui stanza mart dan connectAgent:.
      1. Di bagian mart:, hapus entri hostAlias:, sslCertPath:, dan sslKeyPath:.
      2. Tambahkan stanza connectAgent:.
      3. Di bagian connectAgent:, tambahkan entri serviceAccountPath: dan berikan jalur ke file akun layanan yang memiliki peran Agen Apigee Connect yang ditetapkan (biasanya akun layanan MART).

      Contoh:

      mart:
        hostAlias: "mart.apigee-hybrid-docs.net"
        serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.key

      Menjadi:

      mart:
        serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
      
      connectAgent:
        serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json

Mengupgrade Istio dan pengelola sertifikat

Apigee Hybrid versi 1.3 memerlukan cert-manager v0.14.2 untuk mengelola dan memverifikasi sertifikat, serta distribusi Istio yang disediakan dengan Anthos Service Mesh (ASM) versi 1.5.7 (atau yang lebih baru) untuk membuat dan mengelola gateway masuk runtime.

Mengupgrade Istio 1.4.6 ke ASM 1.5.7 (atau yang lebih baru)

  1. Untuk meminimalkan periode nonaktif, deployment Istio dan HPA masing-masing harus memiliki minimal dua replika. Jalankan perintah berikut untuk menentukan jumlah replika:
    kubectl -n istio-system get deployments # list of deployments
    kubectl -n istio-system get hpa # list of hpa
  2. Edit setiap deployment yang hanya memiliki satu replika dan tingkatkan replicas: menjadi 2 atau lebih:
    kubectl -n istio-system edit deployment name

    Contoh:

    spec:
      progressDeadlineSeconds: 600
      replicas: 2
  3. Edit setiap HPA yang hanya memiliki satu replika dan tingkatkan minReplicas: menjadi 2 atau lebih:
    kubectl -n istio-system edit hpa name

    Contoh:

    spec:
      maxReplicas: 5
      minReplicas: 2
    
  4. Download dan instal ASM dengan mengikuti petunjuk penginstalan di Mendownload dan menginstal ASM.
  5. Setelah penginstalan, jalankan perintah versi untuk memastikan Anda telah menginstal versi 1.5.x dengan benar:
    ./bin/istioctl version
    
    client version: 1.5.8-asm.0
    apigee-mart-ingressgateway version:
    citadel version: 1.4.6
    galley version: 1.4.6
    ingressgateway version: 1.5.8-asm.0
    pilot version: 1.4.6
    policy version: 1.4.6
    sidecar-injector version: 1.4.6
    telemetry version: 1.4.6
    pilot version: 1.5.8-asm.0
    data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)

Mengupgrade pengelola sertifikat

  1. Hapus deployment pengelola sertifikat saat ini:
    kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
  2. Verifikasi versi Kubernetes Anda:
    kubectl version
  3. Jalankan perintah berikut untuk menginstal cert-manager dari Jetstack:
    kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml 

Menginstal runtime hybrid

  1. Simpan nomor versi terbaru dalam variabel:
    export VERSION=$(curl -s \
        https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
  2. Periksa apakah variabel telah diisi dengan nomor versi. Jika ingin menggunakan versi lain, Anda dapat menyimpannya dalam variabel lingkungan. Contoh:
    echo $VERSION
      1.3.6
  3. Download paket rilis untuk sistem operasi Anda:

    Mac 64 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz

    Linux 64 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz

    Mac 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gz

    Linux 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_32.tar.gz
  4. Ganti nama direktori apigeectl/ Anda saat ini menjadi nama direktori cadangan. Contoh:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  5. Ekstrak konten file gzip yang didownload ke direktori dasar hybrid Anda. Contoh:

    tar xvzf filename.tar.gz -C hybrid-base-directory

  6. cd ke direktori dasar.
  7. Secara default, konten tar diperluas ke direktori dengan versi dan platform dalam namanya. Misalnya: ./apigeectl_1.0.0-f7b96a8_linux_64. Ganti nama direktori tersebut menjadi apigeectl:

    mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl
  8. Hapus tugas apigee-resources-install dari apigee-system:
    kubectl -n apigee-system delete job apigee-resources-install
  9. Hapus CRD lama:
    kubectl delete crd apigeetelemetries.apigee.cloud.google.com
  10. Perbarui stanza cassandra: di file penggantian dengan properti externalSeedHost. Properti ini akan membantu memastikan penginstalan hybrid versi 1.3.6 baru Anda akan menggunakan cluster Kubernetes yang sama dengan penginstalan versi 1.2. Langkah ini hanya diperlukan untuk mengupgrade dari versi hybrid 1.2 ke versi 1.3.6 (atau yang lebih baru).
    1. Temukan salah satu alamat IP Cassandra yang ada di cluster Kubernetes yang sama tempat Anda mengupgrade penginstalan 1.2.0.
      kubectl -n namespace get pods -o wide

      Dengan namespace sebagai namespace hybrid Apigee Anda.

      Catat alamat IP node Cassandra. Contoh:

      kubectl -n apigee get pods -o wide
      NAME                  READY   STATUS    RESTARTS   AGE   IP          NODE
      apigee-cassandra-0    1/1     Running   0          33d   10.68.8.24   gke-example-cluster-rc5-apigee-data-c8bf1234-09kc
      apigee-cassandra-1    1/1     Running   0          16d   10.68.8.33   gke-example-cluster-rc5-apigee-data-c9221ee7-10kc
      apigee-cassandra-2    1/1     Running   0          23h   10.68.9.11   gke-example-cluster-rc5-apigee-data-d123e456-11kc
    2. Tambahkan nilai untuk properti externalSeedHost:
      cassandra:
       externalSeedHost: Cassandra_node_IP

      Dengan Cassandra_node_IP adalah IP node cassandra (10.68.8.24 pada contoh sebelumnya).

  11. Di direktori apigeectl/ baru, jalankan apigeectl init, apigeectl apply, dan apigeectl check-ready:
    1. Lakukan inisialisasi hybrid 1.3.6:
      apigeectl init -f overrides_1.3.yaml

      Dengan overrides_1.3.yaml adalah file override.yaml yang sudah Anda edit.

    2. Pada versi campuran 1.3, sintaksis flag --dry-run bergantung pada versi kubectl yang Anda jalankan. Periksa versi kubectl:
      gcloud version
    3. Periksa error saat uji coba:

      kubectl versi 1.17 dan yang lebih lama:

      apigeectl apply -f overrides_1.3.yaml --dry-run=true

      kubectl versi 1.18 dan yang lebih baru:

      apigeectl apply -f overrides_1.3.yaml --dry-run=client
    4. Terapkan penggantian Anda. Pilih dan ikuti petunjuk untuk lingkungan produksi atau lingkungan demo/eksperimental, bergantung pada penginstalan Anda.

      Produksi

      Untuk lingkungan produksi, Anda harus mengupgrade setiap komponen hybrid satu per satu, dan memeriksa status komponen yang diupgrade sebelum melanjutkan ke komponen berikutnya.

      1. Terapkan penggantian untuk mengupgrade Cassandra:
        apigeectl apply -f overrides_1.3.yaml --datastore
      2. Periksa penyelesaian:
        kubectl -n namespace get pods

        Dengan namespace sebagai namespace hybrid Apigee Anda.

        Lanjutkan ke langkah berikutnya hanya jika pod sudah siap.

      3. Terapkan penggantian Anda untuk mengupgrade komponen Telemetry dan memeriksa penyelesaian:
        apigeectl apply -f overrides_1.3.yaml --telemetry
        kubectl -n namespace get pods
      4. Terapkan penggantian untuk mengupgrade komponen tingkat organisasi (MART, Watcher, dan Apigee Connect) dan periksa penyelesaian:
        apigeectl apply -f overrides_1.3.yaml --org
        kubectl -n namespace get pods
      5. Terapkan penggantian untuk mengupgrade lingkungan. Anda memiliki dua pilihan:
        • Terapkan penggantian Anda ke satu lingkungan dalam satu waktu dan periksa penyelesaiannya. Ulangi langkah ini untuk setiap lingkungan:
          apigeectl apply -f overrides_1.3.yaml --env env_name
          kubectl -n namespace get pods

          Dengan env_name adalah nama lingkungan yang Anda upgrade.

        • Terapkan penggantian ke semua lingkungan sekaligus dan periksa penyelesaian:
          apigeectl apply -f overrides_1.3.yaml --all-envs
          kubectl -n namespace get pods

      Demo/Eksperimental

      Di sebagian besar lingkungan demo atau eksperimental, Anda dapat menerapkan penggantian ke semua komponen sekaligus. Jika lingkungan demo/eksperimental Anda besar dan kompleks atau sangat meniru lingkungan produksi, Anda dapat menggunakan petunjuk untuk mengupgrade lingkungan produksi

      1. apigeectl apply -f overrides_1.3.yaml
      2. Periksa status:
        apigeectl check-ready -f overrides_1.3.yaml

      Untuk mendapatkan petunjuk lebih lanjut, lihat Penyiapan GKE Hybrid - Langkah 5: Menginstal hybrid di GKE.

    5. Setelah Anda mengaktifkan dan menjalankan konfigurasi hybrid 1.3, pastikan semua node Cassandra (lama dan baru) merupakan bagian dari cluster Cassandra yang sama. Jalankan perintah berikut pada salah satu node Cassandra:
      kubectl -n namespace get pods
      kubectl -n namespace exec old Cassandra pod -- nodetool status

      Dalam contoh output berikut, 10.68.8.24 berasal dari versi 1.2.0 dan merupakan IP node yang Anda gunakan sebagai externalSeedHost. 10.68.7.11 berasal dari versi 1.3.6:

      Datacenter: dc-1
      ================
      Status=Up/Down
      |/ State=Normal/Leaving/Joining/Moving
      --  Address     Load        Tokens       Owns (effective)  Host ID                               Rack
      UN  10.68.8.24  379.41 KiB  256          50.8%             11bbd43b-af64-464b-a96d-0d6dd0521de1  ra-1
      UN  10.68.7.11  1.35 MiB    256          49.2%             0b4d9e08-f353-413a-b4a9-7d18a8d07e58  ra-1

      Jika keduanya tidak berada di cluster yang sama, periksa nilai externalSeedHost.

    6. Setelah semua pod aktif dan berjalan, hapus externalSeedHost dari file penggantian dan jalankan apigeectl apply lagi dengan opsi --datastore:
      apigeectl apply --datastore -f overrides_1.3.6.yaml

    Pembersihan

    Setelah Anda memastikan semua pod sudah aktif dan responsif serta endpoint ASM valid untuk penginstalan baru, Anda dapat menghapus:

    • Resource hybrid 1.2.
    • Instance Cassandra lama
    • Resource Istio 1.4.6.

    Menghapus resource Hybrid 1.2.0

    1. Hapus detail pemilihan rute virtualhost 1.2.0:
      $APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml

      Dengan $APIGEECTL_HOME-v1.2 adalah direktori tempat Anda mencadangkan direktori apigeectl versi 1.2.

    2. Jika endpoint masih berfungsi seperti yang diharapkan dan Anda telah memverifikasi bahwa semua komponen 1.3.0 berfungsi, jalankan perintah berikut untuk menghapus resource hybrid 1.2.0:
      $APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \
        -f 1.2.0_overrides.yaml

    Penonaktifan instance Cassandra lama

    1. cd ke direktori apigeectl yang baru diinstal.
    2. Jalankan skrip tools/cas_cleanup.sh.

      Skrip ini menonaktifkan pod Cassandra lama dari cincin Cassandra, menghapus STS lama, dan menghapus PVC.

      bash cas_cleanup.sh Apigee namespace

    Menghapus resource Istio versi 1.4.6

    1. Jalankan perintah berikut untuk menghapus resource Istio v.1.4.6 terbaru:
      kubectl delete all -n istio-system --selector \
        'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
    2. Jalankan perintah berikut untuk menghapus tugas lama dari penginstalan Istio 1.4.6:
      kubectl -n istio-system delete job istio-init-crd-10-1.4.6
      kubectl -n istio-system delete job istio-init-crd-11-1.4.6
      kubectl -n istio-system delete job istio-init-crd-14-1.4.6

    Selamat! Anda telah berhasil mengupgrade ke Apigee Hybrid versi 1.3.6.