全部产品
Search
文档中心

Container Service for Kubernetes:Deploy Knative Functions

更新时间:Jul 02, 2025

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

  1. Buka halaman rilis func dan unduh file biner alat baris perintah func sesuai dengan OS yang digunakan.

    Contoh berikut menunjukkan cara menginstal func di Linux.

  2. 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.

  3. Jalankan perintah berikut untuk membuat file dapat dieksekusi:

    chmod +x func
  4. Jalankan 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/bin
  5. Jalankan perintah berikut untuk memeriksa apakah func telah diinstal:

    func version

    Jika 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.

  1. 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 hello

    Output yang diharapkan:

    Created go function in /usr/local/bin/hello
  2. Jalankan perintah ls di direktori hello untuk melihat struktur direktori proyek yang dibuat:

    func.yaml  go.mod  handle.go  handle_test.go  README.md
  3. Jalankan perintah berikut di direktori hello untuk melihat file func.yaml yang dibuat secara otomatis:

    cat func.yaml

    Output yang diharapkan:

    specVersion: 0.35.0
    name: hello
    runtime: go
    created: 2023-12-13T06:48:45.419587147Z
  4. Modifikasi 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: default
    • registry: 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.

  1. 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 deploy

    Output yang diharapkan

    Membangun image fungsi
    Masih membangun
    Masih membangun
    Ya, masih membangun
    Jangan menyerah padaku
    Masih membangun
    Ini membutuhkan waktu
    Masih membangun
    Masih membangun
    Ya, masih membangun
    Fungsi dibangun: registry.cn-beijing.aliyuncs.com/knative-release-xxx/hello:latest
    Mendorong image fungsi ke registri "registry.cn-beijing.aliyuncs.com" menggunakan kredensial pengguna "xxx"
    Menerapkan fungsi ke kluster
    Fungsi diterapkan di namespace "default" dan diekspos di URL:
       http://hello.default.example.com
  2. Jalankan perintah berikut untuk melihat fungsi yang diterapkan:

    func info

    Output 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

  1. 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.
  2. Jalankan perintah berikut untuk memanggil fungsi:

    func invoke

    Output 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.

  3. Jalankan perintah berikut untuk melihat pod di kluster:

    kubectl get pod

    Output yang diharapkan:

    NAME                                      READY   STATUS    RESTARTS   AGE
    hello-00001-deployment-7b65fcdc4c-gfcbp   2/2     Running   0          34

    Output 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.