Application Load Balancer (ALB) menyediakan load balancing lapisan 7 ber-throughput tinggi. Gunakan gerbang ALB—gerbang yang sepenuhnya dikelola dengan elastisitas otomatis dan dukungan rilis canary—untuk mendistribusikan traffic ke Knative Services yang memerlukan routing kompleks, pemisahan traffic detail halus, atau skalabilitas otomatis.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi selengkapnya, lihat Deploy Knative.
ALB Ingress Controller telah diterapkan.
Pada kluster yang menggunakan plugin jaringan Flannel, konfigurasikan Kubernetes Service yang sesuai dengan Knative sebagai tipe NodePort. Tambahkan parameter
eni: falseke ConfigMap config-network.Edit file
config-network.yaml.kubectl -n knative-serving edit configmap config-networkUbah dan simpan file sebagai berikut.
apiVersion: v1 data: ... eni: false # Tambahkan konfigurasi ini. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Langkah 1: Deploy 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 ALB secara otomatis saat menerapkan gerbang ALB
Jika Knative telah diterapkan, Anda dapat mengonfigurasi gerbang ALB dengan mengubah file konfigurasi Knative.
Konfigurasi gerbang ALB saat menerapkan Knative
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di tab Komponen, klik Menyebarkan. Pilih ALB sebagai gerbang layanan, pilih minimal dua vSwitch, lalu ikuti petunjuk di layar untuk menyelesaikan penerapan Knative.
Untuk detail cara membuat vSwitch, lihat Create VPC and vSwitch.
Terapkan gerbang ALB dengan mengubah file konfigurasi Knative
Untuk penerapan Knative yang telah dibuat sebelumnya, Anda dapat mengonfigurasi gerbang ALB dengan mengubah file konfigurasi Knative. Untuk informasi tentang cara menerapkan Knative, lihat Deploy Knative in an ACK cluster dan Deploy Knative in an ACK Serverless cluster.
Jalankan perintah berikut untuk mengedit file
config-network.yaml.kubectl -n knative-serving edit configmap config-networkUbah dan simpan file
config-network.yamlsebagai berikut:Ubah
ingress.class: alb.ingress.networking.knative.devdan aturvswitch-ids, lalu simpan dan tutup fileconfig-networkuntuk menyelesaikan konfigurasi gerbang ALB. Untuk informasi wilayah dan zona yang didukung ALB, lihat Regions and zones supported by ALB.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Menunjukkan bahwa ALB digunakan sebagai controller Ingress. vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Ganti dengan ID dua vSwitch yang telah Anda buat di zona berbeda. Sistem akan secara otomatis mengikat vSwitch ini saat membuat ALB. intranet: "true" # Juga membuat instans ALB akses internal. internet: "true" # Default: true, menunjukkan bahwa instans ALB akses internet dibuat. Jika diatur ke false, tidak ada ALB akses internet yang dibuat. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...PentingJika hanya ALB akses internal yang diaktifkan, Knative Service harus diatur hanya untuk akses internal. Untuk melakukannya, atur label
networking.knative.dev/visibility: cluster-local.
Metode 2: Gunakan gerbang ALB yang sudah ada
Anda dapat menggunakan instans ALB yang sudah ada dengan memodifikasi file konfigurasi Knative.
Jalankan perintah berikut untuk mengedit file
config-network.yaml.kubectl -n knative-serving edit configmap config-networkUbah dan simpan file
config-network.yamlsebagai berikut.Dalam file konfigurasi, ubah
ingress.class: alb.ingress.networking.knative.devdan aturalbconfigke ALB yang sudah ada. Dalam kasus ini,vswitch-idstidak perlu dikonfigurasi.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Menunjukkan bahwa ALB digunakan sebagai controller Ingress. albconfig: alb-dev-albconfig # Tentukan dan gunakan kembali nama ALBConfig akses internet yang sudah ada. intranet-albconfig: alb-dev-intranet-albconfig # Tentukan dan gunakan kembali nama ALBConfig akses internal yang sudah ada. ... 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.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Knative, klik tab Services, pilih default dari Namespace, klik Create from Template, tempel contoh YAML berikut ke dalam templat, lalu klik Create.
Contoh YAML berikut membuat Knative Service 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 yang Anda gunakan. env: - name: TARGET value: "Knative"Di halaman Services, dapatkan domain dan alamat gerbang layanan
helloworld-godari kolom Default Domain dan Access Gateway, masing-masing.Jalankan perintah berikut untuk mengakses layanan
helloworld-go.curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # Ganti dengan IP gerbang dan domain aktual.Output yang diharapkan:
Hello Knative!
(Opsional) Langkah 3: Lihat data pemantauan layanan
Knative menyediakan observabilitas siap pakai. Di halaman Knative, klik tab Monitoring Dashboards untuk melihat data pemantauan Knative Service yang dituju. Lihat View the Knative service monitoring dashboard.
Operasi terkait
Konfigurasi akses HTTPS
Tentukan sertifikat di ALBConfig dan aktifkan akses TLS di Knative Service menggunakan anotasi knative.k8s.alibabacloud/tls: "true". Contoh:
Untuk mengelola dan mengaitkan sertifikat menggunakan Secret, lihat Configure HTTPS access.
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 yang Anda gunakan.
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 permintaan HTTP ke Port HTTPS 443
Anda dapat mengarahkan permintaan HTTP ke Port HTTPS 443 di Knative Service 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 dengan wilayah aktual yang Anda gunakan.
env:
- name: TARGET
value: "Knative"Konfigurasi resolusi domain CNAME
ALB mendukung resolusi domain CNAME, yang memungkinkan Anda mengarahkan domain kustom ke domain layanan publik instans ALB untuk mengakses berbagai sumber daya jaringan. Untuk detailnya, lihat Configure a CNAME record for an ALB instance.
Dokumen terkait
Untuk mengaktifkan domain kustom untuk Knative Services, lihat Configure custom domains and paths.
Configure HTTPS certificate access untuk Knative Services.
Deploy gRPC services in Knative untuk meningkatkan efisiensi jaringan.
Configure port probing in Knative untuk memantau status kesehatan dan ketersediaan Knative Services.
Jika instans ECI Anda perlu terhubung ke Internet, bind EIP. Untuk informasi selengkapnya, lihat Associate an EIP with the elastic container instance on which a Knative Service runs.