Gunakan panduan ini untuk memigrasikan beban kerja Anda agar berjalan di penawaran Knative open source dengan Google Kubernetes Engine. Secara umum, memigrasikan workload mengharuskan Anda menginstal komponen Knative Serving di cluster GKE baru, lalu men-deploy ulang setiap layanan Anda ke cluster Knative tersebut.
Meskipun penggunaan, pengelolaan, dan dukungan untuk Knative open source adalah pilihan dan tanggung jawab Anda, migrasi ke Knative memberi Anda peluang untuk terus menjalankan beban kerja di platform Google Kubernetes Engine.
Perbedaan penting:
- Dukungan terbatas pada Google Kubernetes Engine. Anda dapat menghubungi komunitas Knative untuk mendapatkan dukungan Knative.
- Google Cloud CLI (
gcloud) hanya didukung oleh Google Kubernetes Engine. Knative mendukung perintahkubectldankn. Pelajari cara menginstalkn
Sebelum memulai
- Anda harus memiliki akses ke cluster GKE baru.
- Anda dapat membuat cluster baru di project yang sama atau project Google Cloud baru.
- Cluster Anda harus memenuhi persyaratan Knative.
- Pelajari cara membuat cluster:
- Anda harus secara manual memindahkan konfigurasi cluster ke cluster Knative baru, termasuk, tetapi tidak terbatas pada:
- Anda harus membuat dan mengonfigurasi kontrol akses IAM dan RBAC baru:
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 Knative Operator dan lapisan jaringan Istio.
Instal Knative Operator:
Deploy Operator ke cluster Anda:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yamlGanti VERSION dengan versi Knative Operator.
Contoh:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yamlTetapkan CLI
kubectluntuk menggunakan namespacedefault:kubectl config set-context --current --namespace=defaultPastikan Operator berhasil dibuat:
kubectl get deployment knative-operatorHasil:
NAME READY UP-TO-DATE AVAILABLE AGE knative-operator 1/1 1 1 6m43s
Instal komponen Knative Serving:
Buat file YAML dengan hal 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-servingDeploy file YAML ke cluster Anda:
kubectl apply -f SERVING_FILENAME.yamlGanti SERVING_FILENAME dengan file YAML yang Anda buat.
Instal Istio dengan injeksi sidecar 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 30 menit atau lebih.
Instal Istio dengan menjalankan perintah berikut menggunakan flag
--set hub=gcr.io/istio-releaseuntuk menghindari pembatasan kecepatan Docker:istioctl install --set hub=gcr.io/istio-releaseJalankan perintah berikut untuk mengaktifkan injeksi sidecar:
kubectl label namespace default istio-injection=enabledOpsional: Secara default, Istio diinstal di namespace
istio-system. Jika ingin mengonfigurasi namespace yang berbeda, Anda dapat menggunakan langkah-langkah berikut:Untuk mengonfigurasi namespace kustom untuk Istio, Anda menambahkan atribut
spec.config.istioke file konfigurasi SERVING_FILENAME.yaml. 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 Serving. Default:
knative-serving - ISTIO_NAMESPACE adalah namespace tempat Istio diinstal. Default:
istio-system
- LOCAL_GATEWAY_NAMESPACE adalah namespace
tempat Anda menginstal Knative Serving. Default:
Deploy layanan SERVING_FILENAME.yaml yang telah diupdate ke cluster Knative Anda:
kubectl apply -f SERVING_FILENAME.yamlVerifikasi penginstalan Istio dengan mengonfirmasi bahwa
istio-ingressgatewayberada di namespace yang Anda tentukan:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACEGanti ISTIO_NAMESPACE dengan namespace tempat Anda menginstal Istio. Default:
istio-systemHasil:
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 men-deploy file konfigurasi YAML layanan ke cluster Knative.
Ekspor layanan penayangan Knative Anda ke file YAML lokal dengan menjalankan perintah berikut:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yamlGanti:
SERVICEdengan nama layanan Knative Anda.NAMESPACEdengan namespace tempat layanan Anda berjalan.CLUSTERdengan nama cluster tempat layanan Anda berjalan.FILENAMEdengan nama file unik pilihan Anda.
Ubah file
FILENAME.yamlyang diekspor untuk menghapus konfigurasi layanan Knative yang tidak diinginkan dengan menghapus salah satu atribut berikut dan nilainya:metadata.annotations.kubectl.kubernetes.io/last-applied-configurationmetadata.managedFieldsspec.template.spec.containers.readinessProbesspec.template.spec.enableServiceLinksMisalnya, Anda mungkin perlu menghapus konfigurasi berikut dari di bawah atribut
spec:>template:>spec:>containers::... readinessProbe: successThreshold: 1 tcpSocket: {} ...
Deploy file
.yamlyang telah diubah ke cluster Knative Anda:kubectl apply -f SERVICE.yamlGanti SERVICE dengan nama file konfigurasi layanan Anda.
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 di dokumen Knative untuk opsi lainnya.Untuk menggunakan Magic DNS (sslip.io), jalankan perintah berikut.
Perhatikan bahwa Anda juga dapat langsung menggunakan sslip.io.
kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yamlGanti VERSION dengan versi Knative Serving Anda.
Contoh:
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
Memigrasikan traffic ke layanan Anda
Setelah menguji layanan yang baru di-deploy dan siap memigrasikan semua traffic produksi, Anda dapat mengonfigurasi domain kustom dan memperbarui data DNS dengan registrar Anda. Ikuti petunjuk di Mengonfigurasi domain kustom.