Gunakan panduan ini untuk memigrasikan workload Anda agar berjalan di Knative open source dengan Google Kubernetes Engine. Secara umum, memigrasikan workload mengharuskan Anda menginstal Komponen Penayangan Knative di ke cluster GKE baru, lalu deploy ulang setiap layanan Anda ke Gugus Knative.
Meskipun penggunaan, pengelolaan, dan dukungan untuk Knative open source adalah pilihan Anda dan tanggung jawab, bermigrasi ke Knative memberi Anda kesempatan untuk terus menjalankan workload Anda di platform Google Kubernetes Engine.
Perbedaan penting:
- Dukungan terbatas untuk Google Kubernetes Engine. Anda dapat menghubungi Komunitas Knative untuk Dukungan Knative.
- Google Cloud CLI (
gcloud
) hanya didukung oleh Google Kubernetes Engine. Knative mendukung perintahkubectl
dankn
. Pelajari cara menginstalkn
Sebelum memulai
- Anda harus memiliki akses ke cluster GKE baru.
- Anda dapat membuat cluster baru di project Google Cloud yang sama atau baru.
- Cluster Anda harus memenuhi Persyaratan Knative.
- Pelajari cara membuat cluster:
- Anda harus mem-port secara manual konfigurasi cluster ke Knative baru cluster, 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 ini menggunakan Metode Operator Knative dan Lapisan jaringan Istio.
Instal Operator Knative:
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
Tetapkan CLI
kubectl
untuk menggunakan namespacedefault
:kubectl config set-context --current --namespace=default
Pastikan Operator berhasil dibuat:
kubectl get deployment knative-operator
Hasil:
NAME READY UP-TO-DATE AVAILABLE AGE knative-operator 1/1 1 1 6m43s
Instal komponen Penayangan Knative:
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
Deploy file YAML ke cluster Anda:
kubectl apply -f SERVING_FILENAME.yaml
Ganti SERVING_FILENAME dengan file YAML yang Anda dibuat.
Instal Istio dengan injeksi file bantuan sebagai lapisan jaringan:
Anda memiliki opsi untuk melakukan dan mengonfigurasi penginstalan Istio alternatif. Lihat semua Penginstalan Istio opsi di situs web Knative. Perhatikan bahwa instalasi ini membutuhkan waktu lebih dari 30 menit atau lebih.
Instal Istio dengan menjalankan perintah berikut dengan Flag
--set hub=gcr.io/istio-release
yang harus dihindari Pembatasan kapasitas Docker:istioctl install --set hub=gcr.io/istio-release
Jalankan perintah berikut untuk mengaktifkan injeksi file bantuan:
kubectl label namespace default istio-injection=enabled
Opsional: Secara default, Istio diinstal di namespace
istio-system
. Jika ingin mengonfigurasi namespace yang berbeda, Anda dapat menggunakan langkah:Untuk mengonfigurasi namespace kustom untuk Istion, tambahkan
spec.config.istio
ke 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:
Men-deploy layanan SERVING_FILENAME.yaml yang telah diupdate ke cluster Knative Anda:
kubectl apply -f SERVING_FILENAME.yaml
Memverifikasi penginstalan Istio dengan mengonfirmasi bahwa
istio-ingressgateway
berada di namespace yang Anda tentukan:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACE
Mengganti 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 men-deploy YAML layanan file konfigurasi ke cluster Knative Anda.
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 penyaluran Knative.NAMESPACE
dengan namespace tempat layanan berjalan.CLUSTER
dengan nama cluster tempat layanan Anda berjalan.FILENAME
dengan nama file unik pilihan.
Ubah file
FILENAME.yaml
yang diekspor untuk dihapus konfigurasi penyaluran Knative yang tidak diinginkan dengan menghapus salah satu atribut berikut dan 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 di bagian
spec:
>template:
>spec:
> Atributcontainers:
:... readinessProbe: successThreshold: 1 tcpSocket: {} ...
Deploy file
.yaml
yang telah diubah ke cluster Knative Anda:kubectl apply -f SERVICE.yaml
Ganti SERVICE dengan nama layanan Anda file konfigurasi Anda.
Akses layanan yang telah di-deploy menggunakan domain pengujian atau perintah
cURL
. Anda dapat menggunakan layanan DNS karakter pengganti untuk menguji akses eksternal ke layanan Anda. Lihat 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.yaml
Ganti VERSION dengan versi Penayangan Knative.
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 DNS Anda dengan registrar. Ikuti petunjuknya di Mengonfigurasi domain kustom.