Kourier adalah gerbang masuk (ingress gateway) ringan dan open-source yang native untuk Knative, dibangun di atas Envoy dan disediakan oleh komunitas Knative. Terapkan gerbang ini untuk mengarahkan traffic HTTP dan HTTPS antar revisi Knative, mengonfigurasi layanan gRPC, mengatur timeout dan retry, mengelola sertifikat Transport Layer Security (TLS), serta mengintegrasikan layanan otorisasi eksternal.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menerapkan Knative di kluster ACK Anda. Lihat Deploy and manage Knative.
Terapkan gerbang Kourier
Anda dapat menerapkan Kourier baik saat pengaturan awal Knative (menggunakan Konsol ACK) maupun setelah penerapan (menggunakan kubectl).
Untuk instalasi Knative baru
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.
Pada tab Components, temukan Kourier di bagian Add-on Component dan klik Deploy di kolom Actions. Pada dialog yang muncul, klik Confirm. Kolom Status untuk Kourier berubah menjadi Deployed.
Untuk instalasi Knative yang sudah ada
Jalankan perintah berikut untuk membuka ConfigMap
config-networkdi editor default Anda:kubectl -n knative-serving edit configmap config-networkDi editor, cari kunci
ingress.classdi bawah bagiandatadan ubah nilainya menjadikourier.ingress.networking.knative.dev, seperti yang ditunjukkan di bawah ini:apiVersion: v1 data: ... ingress.class: kourier.ingress.networking.knative.dev # Gunakan gerbang Kourier ... kind: ConfigMap metadata: name: config-network namespace: knative-servingSimpan dan tutup file tersebut. Kubernetes menerapkan perubahan tersebut secara otomatis.
(Opsional) Konfigurasikan CLB akses internal
Secara default, Kourier membuat Classic Load Balancer (CLB) yang menghadap Internet. Untuk menggunakan CLB akses internal sebagai gantinya, tambahkan anotasi service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" ke manifes Service Kourier:
apiVersion: v1
kind: Service
metadata:
name: kourier
namespace: knative-serving
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
...
spec:
ports:
- name: http2
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8443
selector:
app: 3scale-kourier-gateway
type: LoadBalancerNilai anotasi default adalahinternet. Atur menjadiintranetuntuk beralih ke CLB akses internal.
Akses Layanan Knative melalui gerbang Kourier
Langkah-langkah berikut menggunakan contoh Layanan Knative bernama helloworld-go untuk menunjukkan akses HTTP dan HTTPS. Terapkan Layanan terlebih dahulu, lalu pilih protokol yang Anda butuhkan.
Perintahcurldi bawah ini meneruskan nama domain dalam HeaderHostkarena DNS tidak dikonfigurasi secara default. Jika Anda mengonfigurasi DNS untuk gerbang, Anda dapat menghilangkan flag-H "Host:".
Terapkan layanan contoh
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Applications > Knative.
Pada tab Services, atur Namespace ke default, klik Create from Template, tempel YAML berikut ke editor, lalu klik Create.
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"Saat Status menampilkan Created, Layanan siap digunakan.
Pada tab Services, catat nama domain di kolom Default Domain dan alamat IP gerbang di kolom Gateway untuk Layanan
helloworld-go. Anda memerlukan nilai-nilai ini pada langkah selanjutnya.
Akses melalui HTTP
Jalankan perintah berikut, ganti alamat IP gerbang dan nama domain dengan nilai yang telah Anda catat:
curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XXOutput yang diharapkan:
Hello Knative!Akses melalui HTTPS
Langkah 1: Hasilkan sertifikat TLS.
Jalankan perintah berikut untuk membuat sertifikat tanda tangan sendiri:
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.cnfIni menghasilkan kunci RSA 4096-bit dan sertifikat yang berlaku selama 3650 hari, dengan Subject Alternative Names untuk helloworld-go.default.example.com dan helloworld-go.default.example.cn.
Langkah 2: Buat Secret dari sertifikat.
kubectl -n knative-serving create secret tls kourier-cert --key tls.key --cert tls.crtLangkah 3: Verifikasi bahwa Penyebaran `net-kourier-controller` tersedia.
kubectl get deployments -n knative-servingLangkah 4: Konfigurasikan sertifikat di controller.
kubectl -n knative-serving edit deployment net-kourier-controllerDi bawah spec.containers[].env, tambahkan dua variabel lingkungan berikut:
...
spec:
containers:
- env:
- name: CERTS_SECRET_NAMESPACE
value: knative-serving
- name: CERTS_SECRET_NAME
value: kourier-cert
...| Parameter | Deskripsi |
|---|---|
CERTS_SECRET_NAMESPACE | Namespace tempat Secret dibuat (knative-serving) |
CERTS_SECRET_NAME | Nama Secret (kourier-cert) |
Langkah 5: Verifikasi bahwa Pod controller sedang Berjalan.
kubectl -n knative-serving get poOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE
net-kourier-controller-****** 1/1 Running 0 10sLangkah 6: Akses Layanan melalui HTTPS.
curl -H "Host: helloworld-go.default.example.com" -k --cert tls.crt --key tls.key https://8.141.XX.XXOutput yang diharapkan:
Hello Knative!(Opsional) Tampilkan Dasbor pemantauan Knative
Knative mencakup pemantauan bawaan. Pada halaman Knative, klik tab Monitoring Dashboards untuk melihat metrik layanan Anda. Untuk petunjuk pengaturan, lihat View the Knative monitoring dashboard.
Langkah berikutnya
Use custom domain names and paths — konfigurasikan nama domain kustom untuk Layanan Knative.
Configure a certificate to access Services over HTTPS — siapkan sertifikat TLS tingkat produksi.
Deploy gRPC services in Knative — tingkatkan efisiensi jaringan dengan gRPC.
Configure port probing in Knative — pantau status kesehatan dan ketersediaan Layanan Knative.
Associate an EIP with the elastic container instance on which a Knative Service runs — hubungkan instans kontainer elastis ke Internet menggunakan alamat IP elastis (EIP).