Untuk aplikasi web berskala besar, aplikasi yang memerlukan pengarahan traffic detail halus atau skalabilitas elastis otomatis, serta aplikasi dengan kebutuhan pengarahan kompleks terhadap permintaan HTTP/HTTPS, Anda dapat menggunakan gerbang Application Load Balancer (ALB) untuk mengarahkan traffic ke layanan Knative. ALB adalah layanan load balancing yang dirancang untuk protokol lapisan aplikasi seperti HTTP, HTTPS, dan QUIC. ALB menyediakan elastisitas tinggi dan mampu memproses volume besar traffic Lapisan 7. Gerbang ALB merupakan gerbang yang sepenuhnya dikelola dan tidak memerlukan operasi & pemeliharaan (O&M). Gerbang ini menyediakan skalabilitas elastis otomatis dan mendukung berbagai kebijakan rilis canary.
Prasyarat
Kontroler ALB Ingress telah diterapkan. Untuk informasi selengkapnya, lihat Kelola kontroler ALB Ingress.
Jika kluster Anda menggunakan plugin jaringan Flannel, Anda harus mengonfigurasi layanan Kubernetes untuk Knative sebagai layanan NodePort. Untuk melakukannya, tambahkan parameter
eni: falseke ConfigMap config-network.Edit file config-network.yaml.
kubectl -n knative-serving edit configmap config-networkUbah file tersebut sebagai berikut dan simpan perubahannya.
apiVersion: v1 data: ... eni: false # Tambahkan konfigurasi ini. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Langkah 1: Terapkan gerbang ALB
Saat menerapkan gerbang ALB di Knative, Anda dapat menggunakan instans ALB yang dibuat secara otomatis oleh Knative atau menentukan instans ALB yang sudah ada.
Metode 1: Buat instans ALB secara otomatis saat menerapkan gerbang ALB
Anda dapat mengonfigurasi gerbang ALB saat menerapkan Knative. Jika Knative sudah diterapkan sebelumnya, Anda dapat mengonfigurasi gerbang ALB dengan memodifikasi file konfigurasi Knative.
Konfigurasikan gerbang 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 Component Management, klik One-click Deploy Knative. Pada halaman Deploy Knative, pilih gerbang layanan ALB dan minimal dua virtual switch, lalu ikuti petunjuk di layar untuk menerapkan Knative.
Untuk informasi selengkapnya, lihat Buat vSwitch.
Modifikasi file konfigurasi Knative untuk menerapkan gerbang ALB
Untuk penerapan Knative yang sudah ada, Anda dapat mengonfigurasi gerbang ALB dengan memodifikasi file konfigurasi Knative. Untuk informasi selengkapnya, lihat Terapkan Knative di kluster ACK atau Terapkan Knative di kluster ACK Serverless.
Jalankan perintah berikut untuk mengedit file config-network.yaml.
kubectl -n knative-serving edit configmap config-networkUbah file config-network.yaml sebagai berikut dan simpan perubahannya.
Untuk mengonfigurasi gerbang ALB, ubah
ingress.class: alb.ingress.networking.knative.devdan aturvswitch-idsdalam fileconfig-network, lalu simpan dan keluar. Untuk informasi selengkapnya tentang wilayah dan zona yang didukung oleh ALB, lihat Wilayah dan zona yang didukung oleh ALB.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Menentukan bahwa kontroler ALB Ingress digunakan. vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Ganti nilai parameter dengan ID dua vSwitch yang telah Anda buat di zona berbeda. Sistem akan secara otomatis mengaitkan vSwitch saat membuat instans ALB. intranet: "true" # Membuat instans ALB akses internal. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Metode 2: Gunakan instans ALB yang sudah ada
Anda dapat memodifikasi file konfigurasi Knative untuk menggunakan instans ALB yang sudah ada.
Jalankan perintah berikut untuk mengedit file config-network.yaml.
kubectl -n knative-serving edit configmap config-networkUbah file config-network.yaml sebagai berikut dan simpan perubahannya.
Dalam file konfigurasi, atur ingress.class menjadi
alb.ingress.networking.knative.devdanalbconfigke instans ALB yang sudah ada. Anda tidak perlu mengonfigurasivswitch-ids.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Menentukan bahwa kontroler ALB Ingress digunakan. albconfig: alb-dev-albconfig # Menentukan nama instans ALB akses Internet yang sudah ada untuk digunakan kembali. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Langkah 2: Akses layanan yang telah diterapkan melalui gerbang ALB
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 Service Management di halaman Knative, atur Namespace menjadi default, klik Create From Template, tempel contoh YAML berikut ke dalam templat, lalu klik Create.
Contoh YAML berikut membuat layanan Knative 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 dengan wilayah aktual. env: - name: TARGET value: "Knative"Pada halaman Services, temukan layanan
helloworld-godan peroleh nama domain-nya dari kolom Default Domain serta alamat gerbangnya dari kolom Gateway.Jalankan perintah berikut untuk mengakses layanan
helloworld-go.curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # Ganti alamat IP gerbang dan nama domain dengan nilai aktual.Output yang diharapkan:
Hello Knative!
(Opsional) Langkah 3: Lihat data pemantauan layanan
Knative menyediakan fitur pemantauan siap pakai. Di halaman Knative, klik tab Monitoring Dashboard untuk melihat data pemantauan layanan tertentu. Untuk informasi selengkapnya tentang cara mengaktifkan dasbor pemantauan Knative, lihat Lihat dasbor pemantauan Knative.
Operasi terkait
Konfigurasikan akses HTTPS
Anda dapat menentukan sertifikat dalam ALBConfig dan mengaktifkan akses Transport Layer Security (TLS) untuk layanan Knative menggunakan anotasi knative.k8s.alibabacloud/tls: "true". Contoh kode berikut menunjukkan caranya.
Untuk informasi selengkapnya tentang cara mengelola dan mengaitkan sertifikat menggunakan Secret, lihat Langkah 2: Buat sertifikat 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 dengan wilayah aktual.
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 -kOutput yang diharapkan:
Hello Knative!Arahkan ulang permintaan HTTP ke Port HTTPS 443
Anda dapat mengarahkan ulang permintaan HTTP ke Port HTTPS 443 untuk layanan Knative menggunakan anotasi networking.knative.dev/http-protocol. Contoh kode berikut menunjukkan caranya.
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 dengan wilayah aktual.
env:
- name: TARGET
value: "Knative"Tambahkan rekaman CNAME
ALB mendukung resolusi CNAME untuk memetakan nama domain kustom ke nama domain layanan publik instans ALB. Hal ini memungkinkan Anda mengakses berbagai sumber daya jaringan. Untuk informasi selengkapnya, lihat Konfigurasikan resolusi CNAME untuk ALB.
Referensi
Anda dapat mengaktifkan nama domain kustom untuk Layanan Knative. Untuk informasi selengkapnya, lihat Gunakan nama domain kustom dan Path.
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 kesehatan dan ketersediaan Layanan Knative. Untuk informasi selengkapnya, lihat Konfigurasikan probing port di Knative.
Jika instans ECI Anda memerlukan akses Internet, Anda harus menyambungkan alamat IP elastis (EIP). Untuk informasi selengkapnya, lihat Sambungkan EIP ke instans ECI untuk mengaktifkan akses Internet.