Melakukan Upgrade Kf

Dokumen ini menjelaskan cara mengupgrade penginstalan Kf yang ada dan dependensinya.

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

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

Sebelum memulai

Anda memerlukan:

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

Mempersiapkan upgrade

Menghubungkan ke cluster target

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

Pastikan versi server dan Kf CLI Anda saat ini cocok

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

  • 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 servernya 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 mengupgrade secara bertahap ke Kf v2.3.x terlebih dahulu untuk melanjutkan.

Memastikan Kf berfungsi dengan baik 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 tersebut hingga berhasil.

Secara opsional, cadangkan configmap Kf jika Anda telah melakukan 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 menginstal 2.4.0, Anda hanya perlu mengupgradenya sebagai bagian dari upgrade ke 2.4.1.

    Lihat Mengupgrade operator Kf.

  • Jika mengupgrade dari 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 yaml operator:

    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 yaml operator:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Pilih antara menggunakan setelan 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 untuk menyiapkan kfsystem.yaml secara otomatis untuk upgrade.

      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 sambil 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 config-defaults dan config-secrets 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. Mengupgrade Tekton:

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

    1. Ikuti langkah-langkah dalam panduan upgrade Cloud Service Mesh 1.9.
  3. Mengupgrade 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. Konfigurasikan 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 telah diinstal sepenuhnya sebelum melanjutkan.

      • Config Connector menjalankan semua komponennya di namespace bernama cnrm-system. Pastikan Pod sudah siap dengan menjalankan perintah berikut:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Jika Config Connector diinstal dengan benar, outputnya akan mirip dengan yang berikut ini:

        pod/cnrm-controller-manager-0 condition met
    6. Siapkan 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 hanya untuk Anda.

    gcloud storage 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 di sistem.

    gcloud storage 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 di instance Cloud Shell Anda jika Anda menggunakan bash, petunjuk mungkin perlu diubah untuk shell lain.

    mkdir -p ~/bin
    gcloud storage 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.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. Validasi kecocokan versi server Kf dan CLI 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, confirmasikan operator yang 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 berfungsi dengan baik:

    kf doctor --retries=20

    Perintah ini akan menjalankan pemeriksaan cluster beberapa kali. Wajar jika beberapa upaya gagal saat pengontrol baru dimulai.

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

  3. Jika Anda telah melakukan penyesuaian pada config-defaults atau config-secrets, pastikan penyesuaian tersebut diterapkan:

    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 mempertahankan semua perubahan dari versi Kf lama, dan menyetujui penggunaan buildpack baru yang dipaketkan dengan versi Kf 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-langkah verifikasi berhasil, cluster Anda telah berhasil diupgrade. Jika Anda mengalami masalah, tinjau halaman dukungan untuk mendapatkan panduan.