Jika Anda menggunakan domain kustom untuk Layanan Knative, konfigurasikan sertifikat HTTPS untuk mengamankan data dalam transit. Knative mendukung akses HTTPS, sehingga memungkinkan pemetaan Layanan Knative ke domain kustom secara aman.
Prasyarat
Knative telah dideploy di kluster Anda. Untuk informasi selengkapnya, lihat Deploy Knative.
Langkah 1: Buat Layanan Knative
-
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster target Anda. Di panel navigasi sebelah kiri, pilih .
Pada halaman Knative, pada tab Services, atur Namespace menjadi default, lalu klik Buat dengan Template. Gunakan templat contoh untuk membuat Layanan Knative bernama helloworld-go. Ikuti petunjuk di layar.
Setelah layanan dibuat, tab Services menampilkan layanan helloworld-go dengan status Successful. Nama domain default-nya adalah
helloworld-go.default.example.com. Sebelum mengakses layanan, konfigurasikan Header Host untuk memastikan permintaan ke domain layanan dirutekan oleh gerbang akses.
Langkah 2: Konfigurasikan layanan HTTPS
Metode konfigurasi HTTPS bergantung pada jenis gerbang yang Anda gunakan:
Gerbang ALB: AlbConfig mengelola sertifikat. Anda mengaktifkan TLS dengan menambahkan Anotasi, sehingga tidak perlu menangani sertifikat secara manual.
Gerbang Kourier: Anda harus membuat Secret sertifikat secara manual, lalu menggunakan DomainMapping untuk mengikat Secret tersebut ke domain.
ALB
Anda dapat menentukan sertifikat dalam AlbConfig dan mengaktifkan akses TLS pada Layanan Knative dengan menggunakan Anotasi knative.k8s.alibabacloud/tls: "true". Berikut ini contohnya.
Untuk mengaktifkan akses HTTPS, tambahkan Anotasi TLS ke Layanan Knative Anda dan konfigurasikan pendengar pada Port 443 dalam AlbConfig Anda.
Tambahkan Anotasi
knative.k8s.alibabacloud/tls: "true"ke file YAML Layanan Knative Anda.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 dengan wilayah Anda. env: - name: TARGET value: "Knative"Tambahkan pendengar pada Port 443 ke AlbConfig Anda, misalnya
knative-internet, untuk mengarahkan trafik HTTPS ke kluster.apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: knative-internet spec: config: ... listeners: - port: 443 # Opsi mencakup HTTP, HTTPS, dan QUIC protocol: HTTPS ...Verifikasi bahwa layanan dapat diakses melalui HTTPS.
# Ganti dengan alamat gerbang ALB Anda. curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -kOutput yang diharapkan:
Hello Knative!
Kourier
Gerbang Kourier tidak memiliki manajemen sertifikat bawaan. Anda harus menyimpan sertifikat TLS sebagai Secret di kluster, lalu menggunakan DomainMapping untuk mengikat sertifikat tersebut ke domain.
1. Buat Secret sertifikat
Contoh berikut menggunakan sertifikat HTTPS tanda tangan sendiri dari OpenSSL. Jika Anda sudah memiliki file sertifikat dalam format .pem, Anda dapat melewati Langkah 1 dan langsung ke Langkah 2.
Sertifikat tanda tangan sendiri hanya untuk tujuan pengujian. Di lingkungan produksi, gunakan sertifikat yang dikeluarkan oleh Certificate Authority (CA).
Buat sertifikat tanda tangan sendiri menggunakan OpenSSL.
openssl genrsa -out knativetop-key.pem 4096 openssl req -subj "/CN=helloworld.knative.top" -sha256 -new -key knativetop-key.pem -out knativetop.csr echo subjectAltName = DNS:helloworld.knative.top > extfile.cnf openssl x509 -req -days 3650 -sha256 -in knativetop.csr -signkey knativetop-key.pem -out knativetop-cert.pem -extfile extfile.cnfOutput yang diharapkan:
Signature ok subject=CN = helloworld.knative.top Getting Private keySecara opsional, dapatkan encoding Base64 dari file
knativetop-key.pemdanknativetop-cert.pemdari langkah 1. Ini hanya diperlukan jika Anda membuat Secret secara manual dari file YAML, bukan untuk perintah kubectl pada langkah berikutnya.Terapkan encoding Base64 ke
knativetop-key.pem.cat knativetop-key.pem | base64Output yang diharapkan:
a25hdGl2ZXRvcC1r******Terapkan encoding Base64 ke
knativetop-cert.pem.cat knativetop-cert.pem | base64Output yang diharapkan:
a25hdGl2ZXRvcC1jZ******==
Buat Secret tersebut.
Anda dapat menggunakan Secret dalam konfigurasi TLS Layanan Knative untuk mengaktifkan akses aman ke domain
helloworld.knative.top.kubectl create secret tls secret-tls --key knativetop-key.pem --cert knativetop-cert.pemOutput yang diharapkan:
secret/secret-tls created
2. Buat DomainMapping
Di Knative, DomainMapping adalah resource yang memetakan domain ke satu atau beberapa Layanan Knative.
Dengan Secret yang telah dibuat, gunakan DomainMapping untuk mengikat domain kustom ke Layanan Knative dan aktifkan enkripsi TLS dengan mereferensikan Secret tersebut.
Buat file
helloworld.knative.top.yamldan tulis konfigurasi DomainMapping berikut.apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: helloworld.knative.top namespace: default spec: ref: name: helloworld-go kind: Service apiVersion: serving.knative.dev/v1 # blok tls menentukan secret yang akan digunakan tls: secretName: secret-tlsTerapkan DomainMapping ke kluster.
kubectl apply -f helloworld.knative.top.yamlOutput yang diharapkan:
domainmapping.serving.knative.dev/helloworld.knative.top createdJalankan perintah berikut untuk memverifikasi bahwa DomainMapping siap digunakan.
kubectl get domainmapping helloworld.knative.topOutput yang diharapkan:
NAME URL READY REASON helloworld.knative.top https://helloworld.knative.top TrueVerifikasi bahwa layanan dapat diakses melalui domain kustom.
# Ganti dengan alamat gerbang Kourier Anda. curl -H "Host: helloworld.knative.top" https://8.141.XX.XX -kOutput yang diharapkan:
>Hello Knative!
Dokumen terkait
Anda dapat mengonfigurasi probe untuk memantau kesehatan dan ketersediaan Layanan Knative Anda. Untuk informasi selengkapnya, lihat Configure Probes for a Knative Service.
Jika instans ECI Anda perlu terhubung ke Internet, asosiasikan dengan EIP. Untuk informasi selengkapnya, lihat Associate an EIP with an ECI instance for Internet access.