Upgrade Kf

Dokumen ini menjelaskan cara mengupgrade penginstalan Kf yang sudah ada beserta dependensinya.

Sebagai bagian dari prosedur upgrade, Anda memastikan bahwa penginstalan Kf menggunakan versi terbaru operator Kf:

  • Konfirmasi versi Kf Anda saat ini yang dapat diupgrade ke Kf v2.4.1.
  • Upgrade ke Kf v2.4.1.
  • Mengupgrade dependensi (jika diperlukan).

Sebelum memulai

Yang Anda butuhkan:

  • Cluster yang ada dengan Kf terinstal.
  • Akses ke komputer dengan gcloud, kf, dan kubectl terinstal.

Mempersiapkan upgrade

Menghubungkan ke cluster target

gcloud container clusters get-credentials CLUSTER_NAME \
 --zone CLUSTER_ZONE \
 --project CLUSTER_PROJECT_ID

Mengonfirmasi kecocokan Kf CLI dan versi server Anda saat ini

Jalankan kf debug dan validasi kecocokan versi server Kf CLI dan Kf.

  • Versi CLI tercantum di bagian Kf Client.
  • Versi server Kf tercantum di bagian kf["app.kubernetes.io/version"].
$ kf debug
...
Version:
  Kf Client:                        v2.3.2
  Server version:                   v1.20.6-gke.1000
  kf["app.kubernetes.io/version"]:  v2.3.2
...

Jika nilai klien Kf dan server Kf tidak cocok, tetapi versi server adalah v2.3.x, instal CLI Kf v2.4.1 sebelum Anda melanjutkan.

Jika nilai server Kf lebih lama dari v2.3.x, Anda harus melakukan upgrade secara bertahap ke Kf v2.3.x untuk melanjutkan.

Konfirmasi bahwa Kf responsif sebelum mengupgrade

Jalankan kf doctor untuk memeriksa status cluster Anda. Pastikan semua pengujian lulus sebelum Anda melanjutkan.

$ kf doctor
...
=== RUN doctor/user
=== RUN doctor/user/ContainerRegistry
--- PASS: doctor/user
   --- PASS: doctor/user/ContainerRegistry
...

Jika Anda melihat pesan FAIL atau Error: environment failed checks, ikuti panduan dalam output kf doctor, atau lihat panduan pemecahan masalah untuk menyelesaikan masalah dan coba lagi perintah sampai berhasil.

Secara opsional, mencadangkan configmaps Kf jika Anda telah membuat penyesuaian

  1. Buat cadangan configmap config-defaults dengan menjalankan:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
    
  2. Buat cadangan configmap config-secrets dengan menjalankan:

    kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
    

Mengupgrade operator Kf

Operator Kf pertama kali dirilis sebagai bagian dari versi 2.4.0:

  • Jika sudah menginstal operator Kf sebagai bagian dari penginstalan 2.4.0, Anda hanya perlu mengupgradenya sebagai bagian dari upgrade ke 2.4.1.

    Lihat Mengupgrade operator Kf.

  • Jika mengupgrade dari versi 2.3.2, Anda harus menginstal operator Kf versi 2.4.1 untuk mengupgrade ke Kf yang dikelola operator.

    Lihat Menginstal operator Kf.

Mengupgrade operator Kf saat ini

Operator Kf melakukan upgrade untuk Anda.

  1. Terapkan operator yaml:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"

Menginstal operator Kf untuk pertama kalinya

Lakukan langkah-langkah berikut untuk mengupgrade ke Kf yang dikelola operator.

  1. Terapkan operator yaml:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Pilih antara menggunakan default atau mempertahankan penyesuaian:

    1. Siapkan kfsystem.yaml untuk upgrade menggunakan default:

      Download file kfsystem.yaml, isi variabel di bawah, lalu jalankan perintah di direktori yang sama dengan file tersebut guna menyiapkan kfsystem.yaml untuk upgrade secara otomatis.

      export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
      export CLUSTER_NAME=YOUR_CLUSTER_NAME
      export CONTAINER_REGISTRY=YOUR_CLUSTER_COMPUTE_REGION-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
      
      kubectl apply -f kfsystem.yaml
      
      kubectl patch \
      kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
      
    2. Siapkan kfsystem.yaml untuk upgrade sekaligus mempertahankan penyesuaian:

      1. Download file kfsystem.yaml.

      2. Buat cadangan configmap config-defaults dengan menjalankan:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
        
      3. Buat cadangan configmap config-secrets dengan menjalankan:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
        
      4. Periksa configmap default konfigurasi dan rahasia konfigurasi saat ini, lalu temukan setelan yang sesuai di kfsystem.yaml.

      5. Salin setelan yang ada dari config-secrets dan config-defaults. Semua setelan di config-secrets dan config-defaults dapat ditemukan di kfsystem.yaml. Kolom googleProjectId kini wajib diisi.

      6. Kolom wi.googleServiceAccount adalah Akun Layanan lengkap di config-secrets, tetapi untuk kfsystem, akhiran harus dihapus. Misalnya, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com akan menjadi ${CLUSTER_NAME}-sa di kfsystem.yaml.

      7. Setelah setelan disalin, ubah kolom enabled di kfsystem menjadi true.

      8. Simpan perubahan ke kfsystem.yaml.

      9. Konfigurasikan operator untuk Kf:

        kubectl apply -f kfsystem.yaml
        

Mengupgrade dependensi Kf

  1. Upgrade Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
  2. Upgrade Anthos Service Mesh:

    1. Ikuti langkah-langkah dalam panduan upgrade Anthos Service Mesh 1.9.
  3. Upgrade Config Connector.

    1. Download file tar Operator Config Connector yang diperlukan.

    2. Ekstrak file tar.

      tar zxvf release-bundle.tar.gz
      
    3. Instal operator Config Connector di cluster Anda.

      kubectl apply -f operator-system/configconnector-operator.yaml
      
    4. Mengonfigurasi operator Config Connector jika menginstal Config Connector untuk pertama kalinya.

      1. Salin YAML berikut ke dalam file bernama configconnector.yaml:

        # configconnector.yaml
        apiVersion: core.cnrm.cloud.google.com/v1beta1
        kind: ConfigConnector
        metadata:
        # the name is restricted to ensure that there is only one
        # ConfigConnector resource installed in your cluster
        name: configconnector.core.cnrm.cloud.google.com
        spec:
        mode: cluster
        googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
        
      2. Terapkan konfigurasi ke cluster Anda.

        kubectl apply -f configconnector.yaml
    5. Pastikan Config Connector sudah terinstal sepenuhnya sebelum melanjutkan.

      • Config Connector menjalankan semua komponennya dalam namespace yang bernama cnrm-system. Verifikasi bahwa Pod sudah siap dengan menjalankan perintah berikut:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Jika Config Connector sudah diinstal dengan benar, output-nya akan terlihat seperti berikut:

        pod/cnrm-controller-manager-0 condition met
    6. Menyiapkan Workload Identity jika menginstal Config Connector untuk pertama kalinya.

      kubectl annotate serviceaccount \
      --namespace cnrm-system \
      --overwrite \
      cnrm-controller-manager \
      iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

Mengupgrade ke CLI Kf v2.4.1

  1. Instal CLI:

    Linux

    Perintah ini menginstal Kf CLI untuk semua pengguna di sistem. Ikuti petunjuk di tab Cloud Shell untuk menginstalnya sendiri.

    gsutil cp gs://kf-releases/v2.4.1/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf
    

    Mac

    Perintah ini menginstal kf untuk semua pengguna pada sistem.

    gsutil cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf
    

    Cloud Shell

    Perintah ini menginstal kf pada instance Cloud Shell jika Anda menggunakan bash, petunjuk mungkin perlu diubah untuk shell lainnya.

    mkdir -p ~/bin
    gsutil cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kf
    chmod a+x ~/bin/kf
    echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc
    

    Windows

    Tindakan ini akan mendownload kf ke direktori saat ini. Tambahkan ke jalur jika Anda ingin memanggilnya dari mana saja selain direktori saat ini.

    gsutil cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
    
  2. Validasi kecocokan versi server Kf CLI dan Kf:

    • Versi CLI tercantum di bagian Kf Client.
    • Versi server Kf tercantum di bagian kf["app.kubernetes.io/version"].
    $ kf debug
    ...
    Version:
      Kf Client:                        v2.4.1
      Server version:                   v1.20.6-gke.1000
      kf["app.kubernetes.io/version"]:  v2.4.1
    ...
    

Memverifikasi bahwa Kf berhasil diupgrade

  1. Jika menginstal operator Kf untuk pertama kalinya, konfirmasi operator yang telah diinstal:

    kubectl get deployment -n appdevexperience appdevexperience-operator
    

    Jika Anda tidak melihat operator seperti dalam contoh output di bawah, tinjau langkah-langkah Menginstal operator Kf untuk pertama kalinya.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Jalankan doctor untuk memastikan versi yang baru diinstal responsif:

    kf doctor --retries=20
    

    Perintah ini akan menjalankan pemeriksaan cluster beberapa kali. Adanya beberapa upaya yang gagal saat {i>controller<i} baru dimulai.

    Jika perintah gagal dengan pesan Error: environment failed checks, ikuti panduan dalam output doctor untuk menyelesaikan masalah dan coba lagi perintah tersebut sampai berhasil.

  3. Jika Anda telah melakukan penyesuaian pada config-defaults atau config-secrets, pastikan keduanya dipindahkan ke:

    Bandingkan file config-defaults-backup.yaml dengan kubectl diff -f config-defaults-backup.yaml untuk memastikan cluster Anda masih dikonfigurasi dengan benar.

    Misalnya, jika Anda menyimpan semua perubahan dari versi Kf lama, dan menyetujui penggunaan buildpack baru yang dipaketkan dengan Kf versi berikutnya:

    $ kubectl diff -f config-defaults-backup.yaml
    diff -u -N /tmp/LIVE/v1.ConfigMap.kf.config-defaults /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    --- /tmp/LIVE/v1.ConfigMap.kf.config-defaults
    +++ /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    @@ -131,6 +131,8 @@
         enable_route_services: false
       spaceBuildpacksV2: |
    -    - name: new_buildpack
    -      url: https://github.com/cloudfoundry/new-buildpack
         - name: staticfile_buildpack
           url: https://github.com/cloudfoundry/staticfile-buildpack
         - name: java_buildpack
    exit status 1
    

Jika langkah verifikasi lulus, cluster Anda telah berhasil diupgrade. Jika Anda mengalami masalah, tinjau halaman dukungan untuk mendapatkan panduan.