Service Mesh (ASM) terintegrasi dengan komponen Knative Serving yang diterapkan dalam klaster Container Service for Kubernetes (ACK) atau klaster ACK Serverless untuk menyederhanakan penerapan dan pengelolaan aplikasi serverless di berbagai lingkungan klaster. Knative pada ASM memberikan solusi all-in-one untuk membangun, menerapkan, dan mengelola aplikasi berbasis kontainer dengan penskalaan otomatis dan penagihan sesuai permintaan. Solusi ini membantu Anda menerapkan dan menskalakan aplikasi serverless secara efisien. Topik ini menjelaskan cara menggunakan Knative pada ASM untuk menerapkan Layanan Knative.
Prasyarat
Instans ASM versi 1.16.3.50 atau lebih baru telah dibuat, serta klaster ACK atau ACK Serverless telah ditambahkan ke instans tersebut. Untuk informasi lebih lanjut, lihat Buat Instans ASM dan Tambahkan Klaster ke Instans ASM.
PentingSaat membuat instans ASM, pastikan bahwa Allow data plane cluster KubeAPI to access Istio CR dipilih di bagian Resource configuration. Kotak centang ini dipilih secara default, menunjukkan bahwa Anda dapat mengakses sumber daya Istio menggunakan API Kubernetes dari klaster di bidang data.
Akses ke server API dari klaster ACK atau ACK Serverless harus diaktifkan untuk mendukung akses cepat.
Instans ASM dan klaster ACK atau ACK Serverless harus berada dalam virtual private cloud (VPC) yang sama di wilayah yang sama, serta menggunakan vSwitch yang sama.
Gateway ingress telah dibuat untuk klaster. Dalam contoh berikut, gateway ingress ASM digunakan. Untuk informasi lebih lanjut, lihat Buat Gateway Ingress.
CatatanAnda tidak perlu lagi secara manual membuat gateway ingress untuk instans ASM versi V1.21.6.84 atau lebih baru.
Gateway ASM memungkinkan Anda membagi lalu lintas untuk Revisi Knative yang berbeda, mengakses layanan Google Remote Procedure Call (gRPC), mengonfigurasi pengaturan timeout dan retry, memasang sertifikat Transport Layer Security (TLS), serta melakukan autentikasi dan otorisasi eksternal. Untuk informasi lebih lanjut, lihat Ikhtisar Gateway ASM.
Langkah 1: Instal Knative
Untuk instans ASM dengan versi lebih awal dari 1.18.2.104
Terapkan komponen Knative Serving di klaster ACK atau ACK Serverless. Pilih Kourier untuk parameter Gateway.
Untuk informasi lebih lanjut tentang cara menerapkan Knative di klaster ACK, lihat Terapkan dan Kelola Knative.
Untuk informasi lebih lanjut tentang cara menerapkan Knative di klaster ACK Serverless, lihat Terapkan Knative.
PentingSetelah komponen Knative Serving diinstal, klik tab Components. Di bagian Add-on Component, hapus instalasi komponen Kourier.
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
Di halaman Knative on ASM, klik Enable Knative on ASM.
Untuk instans ASM dengan versi mulai dari 1.18.2.104 hingga 1.21.6.83
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
Di halaman Knative on ASM, pilih versi Knative berdasarkan kebutuhan bisnis Anda dan klik Enable Knative on ASM.
Terapkan Knative di klaster ACK atau ACK Serverless. Pilih ASM untuk parameter Gateway.
Untuk informasi lebih lanjut tentang cara menerapkan Knative di klaster ACK, lihat Terapkan dan Kelola Knative.
Untuk informasi lebih lanjut tentang cara menerapkan Knative di klaster ACK Serverless, lihat Terapkan Knative.
Untuk instans ASM dengan versi 1.21.6.84 atau lebih baru
Jika versi instans ASM Anda adalah 1.21.6.84 atau lebih baru, Anda tidak perlu lagi mengaktifkan fitur Knative pada ASM di konsol ASM.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama klaster yang ingin Anda kelola. Kemudian, pilih di panel navigasi kiri.
Di tab Components halaman Knative, klik Deploy Knative. Di bagian Gateway, klik tab ASM dan kemudian klik Deploy.
Setelah Knative diinstal, Anda dapat menggunakan ASM di Knative.
CatatanSetelah pesan muncul menunjukkan bahwa Knative telah diinstal, pastikan bahwa gateway ingress telah dibuat dan berjalan dengan baik sebelum melanjutkan untuk menerapkan Layanan Knative.
Langkah 2: Terapkan Layanan Knative
Knative pada ASM memungkinkan Anda menerapkan Layanan Knative di konsol ACK atau menggunakan file konfigurasi YAML. Anda dapat memilih metode penerapan berdasarkan kebutuhan bisnis Anda.
Metode 1: Terapkan Layanan Knative di konsol ACK
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Knative, klik tab Services. Di sudut kanan atas, klik Create Service, atur parameter yang diperlukan, dan kemudian klik Create.
Untuk informasi lebih lanjut tentang parameter, lihat Cepat Menerapkan Aplikasi Knative.
Parameter
Deskripsi
Contoh
Namespace
Pilih namespace tempat Layanan berada.
default
Service Name
Masukkan nama untuk Layanan.
helloworld-go
Image Name
Untuk memilih gambar, klik Select Image. Di kotak dialog Pilih Gambar, pilih gambar dan klik OK. Anda dapat menentukan gambar dalam registri privat. Alamat gambar harus dalam format domainname/namespace/imagename:tag.
registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go
Image Version
Untuk memilih versi gambar, klik Select Image Version. Di kotak dialog Versi Gambar, pilih versi gambar dan klik OK.
73fbdd56
Access Protocol
HTTP dan gRPC didukung.
HTTP
Container Port
Tentukan port kontainer yang ingin Anda paparkan. Nomor port harus berada dalam rentang 1 hingga 65535.
8080
Environment Variables
Klik Advanced. Di bagian Environment Variables, klik Add untuk menetapkan variabel lingkungan dalam pasangan kunci-nilai.
Type: Pilih Kustom.
Variable Key: Tetapkan TARGET.
Value/ValueFrom: Tetapkan Knative.
Metode 2: Terapkan Layanan Knative menggunakan file konfigurasi YAML
Simpan konten berikut sebagai file bernama helloworld-go.yaml.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go annotations: knative.k8s.alibabacloud/tls: "false" spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/helloworld-go:160e4dc8 ports: - containerPort: 8080 env: - name: TARGET value: "Knative"Gunakan kubectl untuk terhubung ke klaster ACK. Jalankan perintah berikut untuk membuat Layanan Knative. Tunggu hingga Layanan Knative dibuat.
kubectl apply -f helloworld-go.yamlJalankan perintah berikut untuk melihat daftar Layanan Knative:
kubectl get ksvcSistem menampilkan informasi serupa dengan output berikut:
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go http://helloworld-go.default.example.com helloworld-go-00001 helloworld-go-00001 True
Metode 3: Gunakan template untuk membuat Layanan Knative
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama klaster yang ingin Anda kelola. Kemudian, pilih di panel navigasi kiri.
Di tab Services halaman Knative, pilih default dari daftar drop-down Namespace, klik Create from Template, salin konten YAML berikut ke editor kode, dan kemudian klik Create untuk membuat Layanan bernama helloworld-go.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73 fbdd56 # Ganti {REGION-ID} dengan wilayah tempat klaster Anda berada. env: - name: TARGET value: "Knative"
Langkah 3: Kueri alamat gateway
Metode 1: Kueri alamat gateway di konsol ACK
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Klik tab Services. Dalam daftar Layanan, klik nama Layanan Knative yang ingin Anda kueri alamat gatewaynya untuk melihat detail Layanan Knative. Di bagian Basic Information, Anda dapat melihat dan mendapatkan informasi tentang Gateway dan Default Domain.
Metode 2: Kueri alamat gateway di konsol ASM
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instans ASM yang diinginkan. Di panel navigasi kiri, pilih .
Di bagian Service address pada halaman Ingress Gateway, lihat dan catat alamat gateway.
Langkah 4: Akses Layanan Knative
Setelah Layanan Knative diterapkan, Anda dapat mengarahkan nama domainnya ke alamat IP gateway untuk mengaitkan Layanan dengan gateway. Ini memungkinkan Anda mengakses Layanan Knative menggunakan URL-nya.
Di halaman Services, peroleh alamat gateway layanan helloworld-go di kolom Gateway.
Jalankan perintah berikut untuk mengakses layanan helloworld-go:
curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # Ganti alamat IP dan nama domain dengan nilai sebenarnya.Output yang Diharapkan:
Hello Knative!Output ini menunjukkan bahwa akses layanan berhasil.
Referensi
Nama domain default dari Layanan Knative adalah example.com. Knative pada ASM memungkinkan Anda menggunakan nama domain kustom sebagai nama domain default. Untuk informasi lebih lanjut, lihat Atur Nama Domain Kustom di Knative pada ASM.
Gateway ASM mendukung HTTPS dan memungkinkan Anda memuat sertifikat secara dinamis. Saat menggunakan Knative pada ASM, Anda dapat menggunakan gateway ASM untuk mengakses Layanan Knative melalui HTTPS. Untuk informasi lebih lanjut, lihat Gunakan Gateway ASM untuk Mengakses Layanan Knative Melalui HTTPS.
Knative pada ASM memungkinkan Anda melakukan rilis canary berdasarkan pemisahan lalu lintas untuk Layanan Knative. Saat membuat Layanan Knative, Knative secara otomatis membuat Revisi pertama untuk Layanan tersebut. Setiap kali konfigurasi Layanan Knative berubah, Knative membuat Revisi baru dan mengubah persentase lalu lintas yang didistribusikan ke Revisi yang berbeda untuk menerapkan rilis canary. Untuk informasi lebih lanjut, lihat Lakukan Rilis Canary Berdasarkan Pemisahan Lalu Lintas untuk Layanan Knative Menggunakan Knative pada ASM.
Knative Serving menambahkan kontainer Queue Proxy ke setiap pod. Kontainer Queue Proxy mengirim metrik konkurensi dari kontainer aplikasi ke Knative Pod Autoscaler (KPA). Setelah KPA menerima metrik, KPA secara otomatis menyesuaikan jumlah pod yang disediakan untuk Deployment berdasarkan jumlah permintaan bersamaan dan algoritma autoscaling terkait. Untuk informasi lebih lanjut, lihat Aktifkan Penskalaan Otomatis Pod Berdasarkan Jumlah Permintaan.