Knative Functions menyediakan model pemrograman yang disederhanakan untuk membuat dan men-deploy fungsi di Knative dengan menyembunyikan detail implementasi Knative, Kubernetes, dan kontainer. Buat fungsi Anda, biarkan platform membangun gambar kontainer, sesuaikan pengaturan pembuatan dan penerapan gambar, lalu terapkan sebagai Knative Service.
Prasyarat
Pastikan Anda telah:
-
Menerapkan Knative di kluster ACK Anda. Lihat Deploy and manage Knative.
Langkah 1: Instal CLI func
Unduh biner func untuk sistem operasi Anda dari func release page.
Contoh untuk Linux:
-
Ubah nama biner menjadi
func:mv <path-to-binary-file> funcGanti
<path-to-binary-file>dengan path biner yang diunduh, misalnyafunc_linux_amd64. -
Jadikan biner dapat dieksekusi:
chmod +x func -
Pindahkan biner ke direktori dalam
PATHAnda:mv func /usr/local/bin -
Verifikasi instalasi:
func versionOutput versi mengonfirmasi bahwa instalasi berhasil.
Langkah 2: Buat fungsi
Knative Functions mendukung runtime berikut, semuanya kompatibel dengan pemanggilan HTTP dan CloudEvent:
Contoh ini menggunakan Go.
-
Buat fungsi:
func create -l <language> <function-name>Contoh: Buat fungsi Go bernama
hello:func create -l go helloOutput yang diharapkan:
Created go function in /usr/local/bin/hello -
Daftar file dalam direktori
hello:ls hello/Output yang diharapkan:
func.yaml go.mod handle.go handle_test.go README.md -
Tinjau
func.yamlyang dihasilkan di direktorihello:cat func.yamlOutput yang diharapkan:
specVersion: 0.35.0 name: hello runtime: go created: 2023-12-13T06:48:45.419587147Z -
Edit
func.yamluntuk mengonfigurasi registri dan pengaturan penerapan. Contoh lengkap:specVersion: 0.35.0 name: hello runtime: go created: 2023-11-29T14:47:34.101658+08:00 registry: registry.cn-beijing.aliyuncs.com/knative-release-xxx image: registry.cn-beijing.aliyuncs.com/knative-release-xxx/hello:latest build: builderImages: pack: registry-cn-beijing.ack.aliyuncs.com/acs/knative-func-builder-jammy-tiny:latest deploy: namespace: defaultBidang utama:
Field Description registryRegistri kontainer untuk gambar yang dibangun. Contoh: registry.cn-beijing.aliyuncs.com/knative-release-xxxbuild.builderImages.packGambar builder untuk fungsi. Contoh: registry-cn-beijing.ack.aliyuncs.com/acs/knative-func-builder-jammy-tiny:latestdeploy.namespaceNamespace Kubernetes target untuk fungsi. Lihat
func.yamlreference untuk semua opsi yang tersedia.
Langkah 3: Terapkan fungsi
Jalankan func deploy dari direktori hello. Perintah ini menggunakan nama proyek sebagai nama Knative Service dan menggabungkannya dengan registri untuk membentuk alamat gambar.
func deploy
Verifikasi penerapan:
func info
Output yang diharapkan:
Function name:
hello
Function is built in image:
Function is deployed in namespace:
default
Routes:
http://hello.default.example.com
Langkah 4: Panggil fungsi
-
Tambahkan entri file hosts untuk memetakan domain Knative Service ke IP gateway:
121.xx.xxx.xx hello.default.example.comGanti
121.xx.xxx.xxdengan IP gateway Knative Anda danhello.default.example.comdengan domain penerapan Anda. -
Panggil fungsi:
func invokeOutput yang diharapkan:
POST / HTTP/1.1 hello.default.example.com Content-Type: application/json Forwarded: for=192.168.102.101;proto=http Knative-Serving-Default-Route: true X-Forwarded-Proto: http User-Agent: Go-http-client/1.1 Content-Length: 25 Accept-Encoding: gzip K-Proxy-Request: activator X-Forwarded-For: 192.168.102.101, 192.168.102.97 X-Request-Id: 3d82cfc8-f9df-4935-84cd-c6561b4587f6 Body:Output tersebut mengonfirmasi bahwa fungsi menerima dan menangani permintaan HTTP.
-
Verifikasi bahwa Pod fungsi telah dibuat:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE hello-00001-deployment-7b65fcdc4c-gfcbp 2/2 Running 0 34
Langkah selanjutnya
Lihat Knative FAQ untuk pertanyaan umum tentang Knative di ACK.