Mengupgrade penyajian Knative di VMware ke fleet

Pelajari cara memigrasikan penayangan Knative di VMware untuk menggunakan fleet sehingga Anda dapat mengupgrade ke Anthos Versi 1.8.

Penyajian Knative kini merupakan pengalaman yang terpisah dari produk Cloud Run terkelola dan kini disediakan sebagai komponen fleet di cluster Anda. Dengan menginstal penayangan Knative pada fitur VMware sebagai komponen fleet, Anda dapat mengelola dan mengupgrade penginstalan secara terpisah dari komponen fleet lainnya.

Pada tingkat tinggi, untuk memigrasikan penayangan Knative Anda pada penginstalan VMware agar dapat menggunakan fleet, Anda harus:

  • Konfigurasi penayangan Knative Anda pada penginstalan VMware untuk memenuhi persyaratan perangkat.
  • Aktifkan komponen fitur penayangan Knative di fleet Anda.

Perhatikan bahwa server Kubernetes API tidak terpengaruh selama migrasi ini.

Untuk mengetahui detail tentang cara melakukan penginstalan baru penayangan Knative di VMware, lihat Menginstal penayangan Knative di VMware.

Sebelum memulai

Anda harus memenuhi persyaratan berikut:

  • Langkah-langkah ini mengharuskan layanan Knative Anda di cluster VMware terdaftar di GKE Enterprise:

    Buka cluster GKE Enterprise

    Pelajari cara mendaftarkan cluster.

  • Penginstalan layanan Knative di VMware Anda berada di cluster yang menjalankan Anthos Versi 1.7 atau yang lebih lama.

  • Istio tidak lagi didukung di Anthos 1.8. Anthos Service Mesh versi 1.18 harus diinstal di fleet Anda, dan penginstalan layanan Knative harus dikonfigurasi sebelum Anda mengupgrade cluster tersebut ke Versi 1.8.

    Lihat petunjuk Anthos Service Mesh untuk mengetahui detail tentang cara menginstal GKE di VMware.

    Perlu diperhatikan bahwa Anthos Service Mesh mengharuskan cluster Anda menggunakan jenis mesin yang memiliki minimal empat vCPU, seperti e2-standard-4. Jika perlu mengubah jenis mesin cluster Anda, lihat Memigrasikan workload ke jenis mesin yang berbeda.

  • Ada dua opsi untuk memigrasikan penayangan Knative ke Anthos Service Mesh, Anda dapat:

    • Dapatkan alamat IP eksternal baru tempat Anda mengonfigurasi load balancer.

    • Menggunakan kembali alamat IP load balancer yang ada.

  • Pastikan lingkungan command line Anda dikonfigurasi dan merupakan versi terbaru.

Bermigrasi ke fleet

Untuk mengupgrade Anthos ke Versi 1.8, Anda harus melakukan langkah-langkah berikut terlebih dahulu untuk memastikan penayangan Knative yang ada di penginstalan VMware dimigrasikan untuk menggunakan komponen fleet.

Mengakses cluster admin

Dapatkan jalur dan nama file dari file kubeconfig cluster admin Anda, lalu buat variabel lingkungan ADMIN_KUBECONFIG:

export ADMIN_KUBECONFIG=[ADMIN_CLUSTER_KUBECONFIG]

Ganti [ADMIN_CLUSTER_KUBECONFIG] dengan jalur dan nama file di file kubeconfig cluster admin Anda.

Mengonfigurasi setiap cluster pengguna

  1. Buat variabel lingkungan lokal berikut untuk cluster pengguna:

    1. Buat variabel lingkungan USER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna Anda:

      export USER_KUBECONFIG=[USER_CLUSTER_KUBECONFIG]
      

      Ganti [USER_CLUSTER_KUBECONFIG] dengan jalur dan nama file ke file kubeconfig cluster pengguna Anda.

    2. Buat variabel lingkungan untuk konfigurasi berikut:

      • ID project Google Cloud Anda.
      • Lokasi resource Google Cloud Anda.
      • Nama cluster pengguna.
      export PROJECT_ID=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-project-id']}")
      export CLUSTER_LOCATION=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-gcp-location']}")
      export CLUSTER_NAME=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-cluster-name']}")
      
  2. Hapus konfigurasi cloudrun dari resource kustom OnPremUserCluster cluster pengguna Anda:

    1. Pastikan cloudRun disetel di OnPremUserCluster:

      $ kubectl get onpremusercluster \
        "${CLUSTER_NAME}" \
        --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \
        --kubeconfig="${ADMIN_KUBECONFIG}" \
        --output=jsonpath="{.spec.cloudRun}"
      

      Hasil:

      {"enabled":true}
      
    2. Hapus cloudRun dari OnPremUserCluster:

      kubectl patch onpremusercluster \
        "${CLUSTER_NAME}" \
        --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \
        --kubeconfig="${ADMIN_KUBECONFIG}" \
        --type="merge" \
        --patch '{"spec": {"cloudRun": null}}'
      
    3. Validasi bahwa cloudRun berhasil dihapus dari OnPremUserCluster dengan menjalankan perintah get yang sama dan memverifikasi bahwa tidak ada konfigurasi yang ditampilkan:

      kubectl get onpremusercluster \
        "${CLUSTER_NAME}" \
        --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \
        --kubeconfig="${ADMIN_KUBECONFIG}" \
        --output=jsonpath="{.spec.cloudRun}"
      

      Seharusnya tidak ada output ke terminal Anda.

  3. Perbarui rahasia pembuatan-konfigurasi cluster pengguna Anda:

    1. Buat salinan YAML lokal dari file create-config:

      kubectl get secret create-config \
        --kubeconfig="${ADMIN_KUBECONFIG}" \
        --namespace "${CLUSTER_NAME}" \
        --output=jsonpath={.data.cfg} \
        | base64 -d > "${CLUSTER_NAME}_create_secret.yaml"
      
    2. Buka file ${CLUSTER_NAME}_create_secret.yaml yang baru saja Anda buat di editor, lalu hapus kolom cloudrun dari bawah spec.

    3. Base64 mengenkode file ${CLUSTER_NAME}_cluster_create_secret.yaml menjadi file .b64:

      cat "${CLUSTER_NAME}_create_secret.yaml" | base64 -w0 > "${CLUSTER_NAME}_create_secret.b64"
      
    4. Di editor Anda, buka file .b64 lokal yang baru saja dibuat, lalu salin string dari atribut data.cfg untuk digunakan pada langkah berikutnya.

      Anda harus memastikan bahwa Anda hanya menyalin konten dari atribut cfg. Misalnya, jangan sertakan baris baru (\n).

    5. Jalankan perintah berikut untuk mengedit rahasia di cluster pengguna:

      kubectl edit secret create-config --kubeconfig="${ADMIN_KUBECONFIG}" \
        --namespace "${CLUSTER_NAME}"
      
    6. Di editor yang terbuka, ganti kolom data[cfg] dengan string yang Anda salin dari file .b64 lokal, lalu simpan perubahan Anda.

    7. Pastikan perubahan Anda di-deploy ke cluster pengguna dan atribut cloudrun berhasil dihapus dari rahasia create-config:

      kubectl get secret create-config \
        --kubeconfig="${ADMIN_KUBECONFIG}" \
        --namespace ${CLUSTER_NAME} \
        --output=jsonpath={.data.cfg} \
        | base64 -d
      
  4. Konfigurasikan namespace knative-serving di cluster pengguna Anda:

    1. Hapus operator cloudrun-operator dari namespace knative-serving:

      kubectl delete deployments.apps --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving cloudrun-operator
      
    2. Patch konfigurasi konfigurasi config-network di namespace knative-serving:

      kubectl patch configmap --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving config-network --patch '{"metadata": {"annotations":{"knative.dev/example-checksum": null}}}'
      
  5. Hapus konfigurasi cloudrun.enabled dari file konfigurasi cluster pengguna user-config.yaml di penginstalan GKE pada VMware.

    Atribut berikut harus dihapus dari dalam file user-config.yaml Anda:

    cloudRun:
      enabled: true
    

    Saat Anda melakukan upgrade cluster ke Anthos Versi 1.8, perubahan konfigurasi ini akan di-deploy.

  6. Jika memiliki beberapa cluster pengguna, Anda harus mengulangi semua langkah di bagian "Mengonfigurasi setiap cluster pengguna" ini untuk setiap cluster pengguna.

Mengonfigurasi komponen fleet Anda

  1. Aktifkan komponen penayangan Knative di fleet Anda:

    gcloud container fleet cloudrun enable --project=$PROJECT_ID
    

    Untuk mengetahui detail dan opsi tambahan, baca referensi gcloud container fleet cloudrun enable.

  2. Opsional: Pastikan komponen fitur penayangan Knative diaktifkan:

    Konsol

    Lihat apakah komponen penayangan Knative Diaktifkan di Konsol Google Cloud:

    Buka fitur GKE Enterprise

    Command line

    Lihat apakah status appdevexperience adalah ENABLED:

    gcloud container fleet features list --project=$PROJECT_ID
    

    Untuk mengetahui detail dan opsi tambahan, baca referensi gcloud container fleet features list.

    Hasil:

    NAME               STATE
    appdevexperience   ENABLED
    
  3. Deploy resource kustom CloudRun untuk menginstal penyaluran Knative di VMware pada setiap cluster pengguna Anda. Secara default, versi latest penayangan Knative di-deploy.

    Jalankan perintah kubectl apply berikut untuk men-deploy konfigurasi default resource kustom CloudRun:

    cat <<EOF | kubectl apply -f -
    apiVersion: operator.run.cloud.google.com/v1alpha1
    kind: CloudRun
    metadata:
      name: cloud-run
    spec:
      metricscollector:
        stackdriver:
          projectid: $PROJECT_ID
          gcpzone: $CLUSTER_LOCATION
          clustername: $CLUSTER_NAME
          secretname: "stackdriver-service-account-key"
          secretkey: "key.json"
    EOF
    

Mengonfigurasi Anthos Service Mesh

Konfigurasikan load balancer Anthos Service Mesh untuk setiap cluster pengguna.

Anda dapat mengonfigurasi gateway masuk Anthos Service Mesh dengan mengonfigurasi alamat IP eksternal baru atau menggunakan kembali alamat IP yang sudah ada:

  • Dengan alamat IP eksternal baru yang diperoleh, Anda akan mengonfigurasi load balancer dengan mengikuti langkah-langkah dalam dokumentasi Anthos Service Mesh.

    Perhatikan bahwa opsi ini memastikan layanan penayangan Knative Anda dimulai ulang tanpa gangguan.

  • Alternatif: Gunakan langkah-langkah berikut untuk mengonfigurasi load balancer Anthos Service Mesh ke alamat IP Anda yang sudah ada.

    1. Konfigurasikan gateway layanan Anda ke Anthos Service Mesh dengan menjalankan perintah berikut:

      export CURRENT_INGRESS_IP=$(kubectl get service --namespace gke-system istio-ingress --output jsonpath='{.spec.loadBalancerIP}')
      kubectl patch service --namespace istio-system istio-ingressgateway --patch "{\"spec\":{\"loadBalancerIP\": \"$CURRENT_INGRESS_IP\"}}"
      kubectl patch service --namespace gke-system istio-ingress --patch "{\"spec\":{\"loadBalancerIP\": null}}"
      
    2. Hapus setelan konfigurasi Istio saat ini:

      kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"local-gateway.cluster-local-gateway": null}}'
      kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"gateway.gke-system-gateway": null}}'
      

Memverifikasi migrasi

Anda dapat memeriksa apakah appdevexperience-operator sudah aktif dan berjalan untuk memverifikasi bahwa penayangan Knative Anda di VMware telah berhasil dimigrasikan ke fleet Anda.

Jalankan perintah berikut untuk setiap cluster pengguna:

 kubectl get deployment -n appdevexperience appdevexperience-operator

Operator appdevexperience-operator harus menampilkan 1/1 sebagai siap, misalnya:

 NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
 appdevexperience-operator   1/1     1            1           1h

Jika operator gagal mencapai status siap, Anda dapat melihat halaman beban kerja cluster di Konsol Google Cloud untuk mengidentifikasi masalah resource:

Buka beban kerja Google Kubernetes Engine

Mengupgrade cluster Anda

Setelah memigrasikan penayangan Knative di penginstalan VMware untuk menggunakan komponen fleet, Anda dapat mengupgrade cluster ke Anthos Versi 1.8. Ikuti petunjuk terperinci di artikel Mengupgrade GKE On-Prem.

Pemecahan masalah

Proses upgrade cluster pengguna Anda gagal diselesaikan

Pod cluster-local-gateway di namespace gke-system mungkin membuat cluster pengguna tidak dapat menyelesaikan upgrade ke Anthos Versi 1.8. Pod cluster-local-gateway tidak lagi diperlukan dan dapat dihapus dengan aman.

Untuk membantu proses upgrade secara manual, Anda dapat menghapus pod cluster-local-gateway secara manual dengan memperkecil skala replika deployment ke 0. Contoh:

  1. Perkecil cluster-local-gateway:

    kubectl scale deployment cluster-local-gateway --replicas 0 --namespace gke-system
    

    Pod cluster-local-gateway dalam namespace gke-system dan semua beban kerja dalam namespace knative-serving akan dihapus.

  2. Tunggu hingga proses upgrade selesai.

Pelajari lebih lanjut cara menskalakan deployment.