Kami menyarankan penggunaan Ingress Application Load Balancer (ALB) untuk mengarahkan lalu lintas Layanan Knative pada aplikasi web berskala besar, aplikasi yang memerlukan pengarahan lalu lintas detail halus atau penskalaan otomatis, serta aplikasi dengan persyaratan pengarahan rute kompleks untuk permintaan HTTP/HTTPS. ALB beroperasi pada lapisan aplikasi dan mendukung protokol seperti HTTP, HTTPS, dan Quick UDP Internet Connections (QUIC). ALB menawarkan elastisitas tinggi serta mampu memproses volume besar lalu lintas jaringan pada Lapisan 7. Ingress ALB merupakan gerbang yang sepenuhnya dikelola dan bebas O&M, mendukung penskalaan otomatis serta beberapa aturan rilis canary.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi selengkapnya, lihat Terapkan dan kelola Knative.
Kontroler Ingress ALB telah diinstal. Untuk informasi selengkapnya, lihat Kelola kontroler Ingress ALB.
Pada kluster yang menggunakan plugin jaringan Flannel, layanan Knative harus diekspos melalui tipe layanan NodePort. Untuk mengaktifkan perilaku ini, tambahkan parameter
eni: falsepada ConfigMapconfig-network.Buka file
config-network.yamluntuk diedit.kubectl -n knative-serving edit configmap config-networkPada editor yang terbuka, tambahkan baris
eni: falsedi bawah bagiandataseperti yang ditunjukkan di bawah ini:apiVersion: v1 data: ... eni: false # Tambahkan konfigurasi ini. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Langkah 1: Terapkan Ingress ALB
Saat menerapkan Ingress ALB di Knative, Anda dapat menggunakan instans ALB yang dibuat secara otomatis oleh Knative atau menentukan instans ALB yang sudah ada.
Metode 1: Membuat instans ALB secara otomatis saat menerapkan Ingress ALB
Anda dapat mengonfigurasi Ingress ALB selama penerapan Knative. Jika Knative sudah diterapkan, Anda dapat memodifikasi file konfigurasi Knative untuk mengonfigurasi Ingress ALB.
Konfigurasikan Ingress ALB saat menerapkan Knative
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel kiri, pilih .
Pada tab Components, klik Deploy Knative. Pada halaman Deploy Knative, pilih ALB dan pilih minimal dua vSwitch. Ikuti petunjuk pada halaman untuk menerapkan Knative.
Untuk informasi selengkapnya tentang cara membuat vSwitch, lihat Buat dan kelola vSwitch.
Modifikasi file konfigurasi Knative untuk mengonfigurasi Ingress ALB
Jika Knative sudah diterapkan, Anda dapat memodifikasi file konfigurasi Knative untuk menentukan Ingress ALB. Untuk informasi selengkapnya tentang cara menerapkan Knative, lihat Terapkan Knative di kluster ACK dan Terapkan Knative di kluster ACK Serverless.
Jalankan perintah berikut untuk memodifikasi file
config-network.yaml:kubectl -n knative-serving edit configmap config-networkLihat templat berikut untuk memodifikasi dan menyimpan file
config-network.yaml.Ubah
ingress.class: alb.ingress.networking.knative.dev, konfigurasikan parametervswitch-ids, lalu simpan fileconfig-networkdan keluar. Untuk informasi selengkapnya tentang wilayah dan zona yang mendukung Ingress ALB, lihat Wilayah dan zona yang mendukung ALB.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Tentukan kontroler Ingress ALB. vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Ganti dengan ID dua vSwitch yang Anda buat di zona berbeda. Sistem akan secara otomatis mengikat vSwitch saat membuat instans ALB. intranet: "true" # Buat instans ALB internal. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Metode 2: Gunakan instans ALB yang sudah ada untuk mengonfigurasi Ingress ALB
Anda dapat memodifikasi file konfigurasi Knative untuk mengonfigurasi Ingress ALB dengan menggunakan instans ALB yang sudah ada.
Jalankan perintah berikut untuk memodifikasi file config-network.yaml:
kubectl -n knative-serving edit configmap config-networkModifikasi dan simpan file config-network.yaml berdasarkan templat berikut.
Ubah
ingress.class: alb.ingress.networking.knative.devdalam file konfigurasi dan aturalbconfigke Ingress ALB yang sudah ada. Anda tidak perlu mengonfigurasi parametervswitch-ids.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Tentukan kontroler Ingress ALB. albconfig: alb-dev-albconfig # Tentukan nama instans ALB publik yang sudah ada untuk digunakan kembali. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Langkah 2: Gunakan Ingress ALB untuk mengakses Layanan
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel navigasi kiri, pilih .
Pada tab Services halaman Knative, pilih default dari daftar drop-down Namespace, klik Create from Template, salin konten YAML berikut ke editor kode, lalu klik Create.
Templat ini membuat Layanan bernama
helloworld-go.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Ganti wilayah contoh dengan wilayah aktual Anda. env: - name: TARGET value: "Knative"Pada halaman Services, catat nama domain dan alamat IP gateway Layanan
helloworld-godi kolom Default Domain dan Gateway, masing-masing.Jalankan perintah berikut untuk mengakses Layanan bernama
helloworld-go:curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # Ganti alamat IP dan nama domain dengan nilai aktual.Keluaran yang diharapkan:
Hello Knative!
(Opsional) Langkah 3: Lihat dasbor pemantauan Knative
Knative menyediakan fitur pemantauan siap pakai. Pada halaman Knative, klik tab Monitoring Dashboards untuk melihat data pemantauan Layanan tertentu. Untuk informasi selengkapnya tentang cara mengaktifkan dasbor pemantauan Knative, lihat Lihat dasbor pemantauan Knative.
Langkah terkait
Konfigurasikan akses melalui HTTPS
Untuk mengamankan Layanan Knative Anda dengan Transport Layer Security (TLS), Anda dapat menentukan sertifikat dalam ALBConfig. Akses TLS dapat diaktifkan pada Layanan Knative dengan menggunakan anotasi knative.k8s.alibabacloud/tls: "true". Contoh:
Untuk mengelola sertifikat sebagai Secret, lihat Langkah 2: Buat sertifikat yang dikelola sebagai Secret.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld
namespace: default
annotations:
knative.k8s.alibabacloud/tls: "true"
spec:
template:
spec:
containers:
- image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Ganti wilayah contoh dengan wilayah aktual Anda.
env:
- name: TARGET
value: "Knative"Jalankan perintah berikut untuk mengakses Layanan HTTPS:
curl -H "Host: helloworld.default.knative.top" https://alb-ppcate4ox6ge9m1wik.cn-shenzhen.alb.aliyuncs.com -kKeluaran yang diharapkan:
Hello Knative!Arahkan ulang permintaan HTTP ke Port HTTPS 443
Permintaan HTTP dapat diarahkan ulang ke Port HTTPS 443 pada Layanan Knative dengan menggunakan anotasi networking.knative.dev/http-protocol. Contoh:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
annotations:
networking.knative.dev/http-protocol: redirected
spec:
template:
spec:
containers:
- image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Ganti wilayah contoh dengan wilayah aktual Anda.
env:
- name: TARGET
value: "Knative"Tambahkan Rekaman CNAME
Untuk memudahkan akses ke sumber daya jaringan, Anda dapat menggunakan Rekaman CNAME untuk memetakan nama domain kustom ke nama domain instans ALB. Untuk informasi selengkapnya, lihat Konfigurasikan Rekaman CNAME untuk instans ALB.
Referensi
Anda dapat menyesuaikan nama domain untuk Layanan Knative. Untuk informasi selengkapnya, lihat Gunakan nama domain kustom dan jalur.
Anda dapat mengonfigurasi sertifikat untuk mengakses Layanan Knative melalui HTTPS. Untuk informasi selengkapnya, lihat Konfigurasikan sertifikat untuk mengakses Layanan melalui HTTPS.
Anda dapat menerapkan Layanan gRPC di Knative untuk meningkatkan efisiensi jaringan. Untuk informasi selengkapnya, lihat Terapkan Layanan gRPC di Knative.
Anda dapat mengonfigurasi probe untuk memantau status kesehatan dan ketersediaan Layanan Knative. Untuk informasi selengkapnya, lihat Konfigurasikan probing port di Knative.
Jika Anda ingin menghubungkan instans kontainer elastis ke Internet, Anda harus mengaitkan alamat IP elastis (EIP) dengan instans kontainer elastis tersebut. Untuk informasi selengkapnya, lihat Kaitkan EIP dengan instans kontainer elastis tempat Layanan Knative berjalan.