Knative Functions menyediakan platform pemrograman yang disederhanakan untuk membuat dan menerapkan fungsi di Knative. Platform ini membebaskan Anda dari detail dasar Knative, Kubernetes, dan kontainer. Anda hanya perlu membuat fungsi, dan sistem akan secara otomatis menghasilkan image kontainer. Setelah menyesuaikan parameter terkait pembuatan image dan penerapan, Anda dapat menyelesaikan penerapan fungsi dalam bentuk Layanan Knative.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi lebih lanjut, lihat atau Deploy dan kelola Knative.
Langkah 1: Unduh dan instal alat baris perintah
Buka halaman rilis func dan unduh file biner alat baris perintah
funcsesuai dengan OS yang digunakan.Contoh berikut menunjukkan cara menginstal func di Linux.
Setelah mengunduh file biner, jalankan perintah berikut untuk mengganti nama file menjadi
func:mv <path-to-binary-file> func # <path-to-binary-file> adalah path lokal dari file biner. Contoh: func_darwin_amd64 atau func_linux_amd64.Jalankan perintah berikut untuk membuat file dapat dieksekusi:
chmod +x funcJalankan perintah berikut untuk memindahkan file biner func ke direktori yang termasuk dalam variabel PATH Linux. Dengan cara ini, file biner dapat dieksekusi dari path mana pun.
mv func /usr/local/binJalankan perintah berikut untuk memeriksa apakah func telah diinstal:
func versionJika informasi versi func ditampilkan, func telah berhasil diinstal.
Langkah 2: Buat sebuah fungsi
Knative Functions menyediakan template yang mendukung berbagai bahasa pemrograman dan metode pemanggilan. Template berikut berlaku untuk pemanggilan CloudEvent dan HTTP:
Contoh berikut menunjukkan cara menggunakan template Go untuk membuat fungsi.
Jalankan perintah berikut untuk membuat fungsi:
func create -l <language> <function-name>Sebagai contoh, buat fungsi demo yang ditulis dalam Go.
func create -l go helloOutput yang diharapkan:
Created go function in /usr/local/bin/helloJalankan perintah
lsdi direktorihellountuk melihat struktur direktori proyek yang dibuat:func.yaml go.mod handle.go handle_test.go README.mdJalankan perintah berikut di direktori
hellountuk melihat file func.yaml yang dibuat secara otomatis:cat func.yamlOutput yang diharapkan:
specVersion: 0.35.0 name: hello runtime: go created: 2023-12-13T06:48:45.419587147ZModifikasi file func.yaml dengan menyesuaikan parameter untuk pembuatan dan penerapan fungsi. File func.yaml berisi konfigurasi proyek fungsi. Untuk informasi lebih lanjut, lihat func_yaml.md.
Blok kode berikut memberikan contoh file func.yaml:
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: defaultregistry: registri tempat image didorong setelah dibangun.builderImages: image yang digunakan oleh pembuat image. Contoh:registry-cn-beijing.ack.aliyuncs.com/acs/knative-func-builder-jammy-tiny:latest.deploy: konfigurasi untuk menerapkan fungsi, seperti namespace tempat fungsi diterapkan.
Langkah 3: Terapkan ke Knative Functions
Anda dapat menerapkan fungsi setelah dibuat.
Jalankan perintah berikut untuk menerapkan fungsi.
Secara default, perintah deploy menerapkan fungsi sebagai Layanan Knative yang dinamai sesuai dengan nama proyek fungsi. Nama proyek dan nama registri digunakan untuk menghasilkan alamat image lengkap saat fungsi dibangun.
func deployJalankan perintah berikut untuk melihat fungsi yang diterapkan:
func infoOutput yang diharapkan:
Nama Fungsi: hello Fungsi dibangun dalam image: Fungsi diterapkan di namespace: default Rute: http://hello.default.example.com
Langkah 4: Panggil dari Knative Functions
Tambahkan konfigurasi berikut ke file hosts untuk mengarahkan nama domain Layanan Knative ke alamat IP gateway Knative. Contoh:
121.xx.xxx.xx hello.default.example.com # Ganti 121.xx.xxx.xx dengan alamat IP gateway Knative yang sebenarnya. Ganti hello.default.example.com dengan nama domain Layanan Knative.Jalankan perintah berikut untuk memanggil 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 menunjukkan bahwa permintaan HTTP dikirim ke Knative Functions dan fungsi berhasil dipanggil.
Jalankan perintah berikut untuk melihat pod di kluster:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE hello-00001-deployment-7b65fcdc4c-gfcbp 2/2 Running 0 34Output menunjukkan bahwa pod dibuat setelah pemanggilan.
Referensi
Untuk informasi lebih lanjut tentang jawaban atas beberapa pertanyaan yang sering diajukan (FAQ) tentang Knative di Container Service for Kubernetes (ACK), lihat Knative FAQ.