Memigrasikan workload ke Knative OSS

Gunakan panduan ini untuk memigrasikan beban kerja Anda agar dijalankan di penawaran Knative open source dengan Google Kubernetes Engine. Secara umum, memigrasikan workload mengharuskan Anda untuk menginstal komponen Penayangan Knative di cluster GKE baru, lalu men-deploy ulang setiap layanan ke cluster Knative tersebut.

Meskipun penggunaan, pengelolaan, dan dukungan untuk Knative open source adalah pilihan dan tanggung jawab Anda, bermigrasi ke Knative memberi Anda peluang untuk terus menjalankan workload di platform Google Kubernetes Engine.

Perbedaan penting:

  • Dukungan terbatas untuk Google Kubernetes Engine. Anda dapat menghubungi komunitas Knative untuk mendapatkan dukungan Knative.
  • Google Cloud CLI (gcloud) hanya didukung oleh Google Kubernetes Engine. Knative mendukung perintah kubectl dan kn. Pelajari cara menginstal kn

Sebelum memulai

Menginstal Knative di Google Kubernetes Engine

Knative menyediakan beberapa opsi penginstalan dan lapisan jaringan yang dapat Anda pilih untuk digunakan. Langkah-langkah penginstalan Knative berikut menggunakan metode Operator Knative dan lapisan jaringan Istio.

  1. Instal Operator Knative:

    1. Deploy Operator ke cluster Anda:

      kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yaml
      

      Ganti VERSION dengan versi Operator Knative.

      Contoh:

      kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yaml
      
    2. Tetapkan CLI kubectl untuk menggunakan namespace default:

      kubectl config set-context --current --namespace=default
      
    3. Pastikan Operator berhasil dibuat:

      kubectl get deployment knative-operator
      

      Hasil:

      NAME               READY   UP-TO-DATE   AVAILABLE   AGE
      knative-operator   1/1     1            1           6m43s
      
  2. Instal komponen Penayangan Knative:

    1. Buat file YAML dengan kode berikut, misalnya SERVING_FILENAME.yaml:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: knative-serving
      ---
      apiVersion: operator.knative.dev/v1alpha1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
      
    2. Deploy file YAML ke cluster Anda:

      kubectl apply -f SERVING_FILENAME.yaml
      

      Ganti SERVING_FILENAME dengan file YAML yang Anda buat.

  3. Instal Istio dengan injeksi file bantuan sebagai lapisan jaringan:

    Anda memiliki opsi untuk melakukan dan mengonfigurasi penginstalan Istio alternatif. Lihat semua opsi penginstalan Istio di situs Knative. Perhatikan bahwa penginstalan ini dapat memerlukan waktu lebih dari 30 menit atau lebih.

    1. Download Istio dari halaman rilis.

    2. Instal Istio dengan menjalankan perintah berikut menggunakan flag --set hub=gcr.io/istio-release untuk menghindari pembatasan kapasitas Docker:

      istioctl install --set hub=gcr.io/istio-release
      
    3. Jalankan perintah berikut untuk mengaktifkan injeksi file bantuan:

      kubectl label namespace default istio-injection=enabled
      
    4. Opsional: Secara default, Istio diinstal di namespace istio-system. Jika ingin mengonfigurasi namespace yang berbeda, Anda dapat menggunakan langkah-langkah berikut:

      1. Guna mengonfigurasi namespace kustom untuk Istion, tambahkan atribut spec.config.istio ke file konfigurasi SERVING_FILENAME.yaml Anda. Contoh:

        apiVersion: operator.knative.dev/v1alpha1
        kind: KnativeServing
        metadata:
          name: knative-serving
          namespace: knative-serving
        spec:
          # ...
          config:
            istio:
              local-gateway.LOCAL_GATEWAY_NAMESPACE.knative-local-gateway: "knative-local-gateway.ISTIO_NAMESPACE.svc.cluster.local"
        

        Ganti:

        • LOCAL_GATEWAY_NAMESPACE adalah namespace tempat Anda menginstal Knative Serve. Default: knative-serving
        • ISTIO_NAMESPACE adalah namespace tempat Istio diinstal. Default: istio-system
      2. Deploy layanan SERVING_FILENAME.yaml yang telah diupdate ke cluster Knative Anda:

        kubectl apply -f SERVING_FILENAME.yaml
        
      3. Verifikasi penginstalan Istio dengan mengonfirmasi bahwa istio-ingressgateway berada di namespace yang Anda tentukan:

        kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACE
        

        Ganti ISTIO_NAMESPACE dengan namespace tempat Anda menginstal Istio. Default: istio-system

        Hasil:

        NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                                      AGE
        istio-ingressgateway   LoadBalancer   10.232.10.190   34.123.5.116   15021:30337/TCP,80:32549/TCP,443:31210/TCP   119m
        

Memigrasikan layanan

Untuk memigrasikan layanan, Anda harus men-deploy file konfigurasi YAML layanan ke cluster Knative.

  1. Ekspor layanan penyajian Knative Anda ke file YAML lokal dengan menjalankan perintah berikut:

    gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
    

    Ganti:

    • SERVICE dengan nama layanan penayangan Knative Anda.
    • NAMESPACE dengan namespace tempat layanan Anda dijalankan.
    • CLUSTER dengan nama cluster tempat layanan Anda berjalan.
    • FILENAME dengan nama file unik pilihan Anda.
  2. Ubah file FILENAME.yaml yang diekspor untuk menghapus konfigurasi penayangan Knative yang tidak diinginkan dengan menghapus salah satu atribut berikut beserta nilainya:

    • metadata.annotations.kubectl.kubernetes.io/last-applied-configuration
    • metadata.managedFields
    • spec.template.spec.containers.readinessProbes
    • spec.template.spec.enableServiceLinks

      Misalnya, Anda mungkin perlu menghapus konfigurasi berikut dari dalam atribut spec: > template: > spec: > containers::

      ...
       readinessProbe:
         successThreshold: 1
         tcpSocket: {}
      ...
      
  3. Deploy file .yaml yang telah dimodifikasi ke cluster Knative Anda:

    kubectl apply -f SERVICE.yaml
    

    Ganti SERVICE dengan nama file konfigurasi layanan Anda.

  4. Akses layanan yang di-deploy menggunakan domain pengujian atau perintah cURL. Anda dapat menggunakan layanan DNS karakter pengganti untuk menguji akses eksternal ke layanan Anda. Lihat bagian mengonfigurasi DNS dalam dokumen Knative untuk mengetahui opsi lainnya.

    Untuk menggunakan Magic DNS (sslip.io), jalankan perintah berikut.

    Perlu diperhatikan bahwa Anda juga dapat langsung menggunakan sslip.io.

    kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yaml
    

    Ganti VERSION dengan versi Penayangan Knative Anda.

    Contoh:

    kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
    

Memigrasikan traffic ke layanan

Setelah menguji layanan yang baru di-deploy dan siap memigrasikan semua traffic produksi, Anda dapat mengonfigurasi domain kustom dan memperbarui data DNS dengan registrar. Ikuti petunjuk di bagian Mengonfigurasi domain kustom.