Kourier adalah gerbang ringan berbasis arsitektur Envoy yang disediakan oleh komunitas Knative sebagai gateway open source. Gerbang ini mendistribusikan traffic ke revisi Knative dan mendukung fitur-fitur seperti layanan gRPC, timeout, retry, sertifikat TLS, serta autentikasi dan otorisasi eksternal.
Prasyarat
Service discovery menggunakan DNS telah diaktifkan untuk Kluster ACK Serverless. Untuk informasi selengkapnya, lihat Service discovery menggunakan DNS.
Knative telah diterapkan di kluster Anda. Untuk informasi selengkapnya, lihat Deploy Knative.
Langkah 1: Deploy gerbang Kourier
Anda dapat memilih gerbang Kourier saat deployment awal Knative atau mengubah file konfigurasi setelah deployment.
Untuk instalasi Knative baru
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada tab Component Management, di bagian Add-on Components, klik Deploy pada kolom Actions untuk Kourier. Pada kotak dialog yang muncul, klik OK.
Jika Status dari Kourier berubah menjadi Deployed, deployment berhasil.
Knative yang sudah terinstal
Anda dapat mengedit file config-network.
kubectl -n knative-serving edit configmap config-networkUbah nilai
ingress.classmenjadikourier.ingress.networking.knative.devdan simpan file config-network.apiVersion: v1 data: ... ingress.class: kourier.ingress.networking.knative.dev # Use the Kourier service gateway. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving
Anda juga dapat mengonfigurasi Classic Load Balancer (CLB) jaringan pribadi untuk gerbang Kourier. Untuk melakukannya, tambahkan anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type ke Service Kourier seperti pada contoh berikut.
Gerbang Kourier secara default membuat CLB jaringan publik (nilai anotasi adalahinternet). Untuk mengonfigurasi CLB jaringan pribadi, atur nilai anotasi menjadiintranet.
apiVersion: v1
kind: Service
metadata:
name: kourier
namespace: knative-serving
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" # Change the value to intranet to create a private network CLB.
...
spec:
ports:
- name: http2
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8443
selector:
app: 3scale-kourier-gateway
type: LoadBalancerLangkah 2: Akses layanan melalui gerbang Kourier
Bagian ini menjelaskan cara membuat layanan helloworld-go dan mengaksesnya melalui HTTP atau HTTPS melalui gerbang Kourier.
Akses layanan HTTP
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Knative, di tab Service Management, atur Namespace ke default. Klik Create from Template, tempel contoh YAML berikut ke dalam templat, lalu klik Create.
Ini akan 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:73fbdd56 env: - name: TARGET value: "Knative"Jika Succeeded ditampilkan di kolom Status layanan, layanan berhasil diterapkan.
Pada halaman Service Management, peroleh nama domain dan alamat gateway layanan
helloworld-godari kolom Default Domain Name dan Access Gateway.Jalankan perintah berikut untuk mengakses layanan
helloworld-go.curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX # Replace the gateway IP address and domain name with your actual information.Output yang diharapkan:
Hello Knative!Output tersebut menunjukkan bahwa layanan HTTP berhasil diakses.
Akses layanan HTTPS
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Knative, di tab Service Management, atur Namespace ke default. Klik Create from Template, tempel contoh YAML berikut ke dalam templat, lalu klik Create.
Ini akan 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:73fbdd56 env: - name: TARGET value: "Knative"Jika Succeeded ditampilkan di kolom Status layanan, layanan berhasil diterapkan.
Buat sertifikat.
Jalankan perintah berikut untuk menghasilkan sertifikat TLS.
openssl genrsa -out tls.key 4096 openssl req -subj "/CN=*.example.com/L=*.example.com" -sha256 -new -key tls.key -out tls.csr echo subjectAltName = DNS:helloworld-go.default.example.com,DNS:helloworld-go.default.example.cn > extfile.cnf openssl x509 -req -days 3650 -sha256 -in tls.csr -signkey tls.key -out tls.crt -extfile extfile.cnfJalankan perintah berikut untuk membuat Secret di kluster dari file sertifikat TLS yang dihasilkan.
kubectl -n knative-serving create secret tls kourier-cert --key tls.key --cert tls.crt
Jalankan perintah berikut untuk memeriksa apakah deployment bernama
net-kourier-controllerada di namespaceknative-serving.kubectl get deployments -n knative-servingJalankan perintah berikut untuk mengonfigurasi sertifikat.
kubectl -n knative-serving edit deployment net-kourier-controllerPada halaman konfigurasi
net-kourier-controller, atur parameter berikut.CERTS_SECRET_NAMESPACE: Namespace yang berisi Secret sertifikat.CERTS_SECRET_NAME: Nama Secret sertifikat.
... spec: containers: - env: - name: CERTS_SECRET_NAMESPACE value: knative-serving - name: CERTS_SECRET_NAME value: kourier-cert ...Setelah konfigurasi selesai, jalankan perintah berikut untuk memeriksa status net-kourier-controller.
kubectl -n knative-serving get poOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE net-kourier-controller-****** 1/1 Running 0 10sJalankan perintah berikut untuk mengakses layanan HTTPS menggunakan sertifikat.
curl -H "Host: helloworld-go.default.example.com" -k --cert tls.crt --key tls.key https://8.141.XX.XX # Replace the gateway IP address and domain name with your actual information.Output yang diharapkan:
Hello Knative!Output tersebut menunjukkan bahwa layanan HTTPS berhasil diakses.
(Opsional) Langkah 3: Tampilkan Dasbor Pemantauan Knative
Knative menyediakan fitur pemantauan siap pakai. Pada halaman Knative, klik tab Monitoring Dashboards untuk melihat data pemantauan dari Service tertentu. Untuk informasi selengkapnya tentang cara mengaktifkan dasbor pemantauan Knative, lihat View the Knative monitoring dashboard.
Referensi
Anda dapat menyesuaikan nama domain untuk Layanan Knative. Untuk informasi selengkapnya, lihat Use custom domain names and paths.
Anda dapat mengonfigurasi sertifikat untuk mengakses Layanan Knative melalui HTTPS. Untuk informasi selengkapnya, lihat Configure a certificate to access Services over HTTPS.
Anda dapat menerapkan Layanan gRPC di Knative untuk meningkatkan efisiensi jaringan. Untuk informasi selengkapnya, lihat Deploy a gRPC Service in Knative.
Anda dapat mengonfigurasi probe untuk memantau status kesehatan dan ketersediaan Layanan Knative. Untuk informasi selengkapnya, lihat Configure port probing in Knative.
Jika Anda ingin menghubungkan instans kontainer elastis ke Internet, Anda harus mengaitkan elastic IP address (EIP) dengan instans kontainer elastis tersebut. Untuk informasi selengkapnya, lihat Associate an EIP with the elastic container instance on which a Knative Service runs.