Jika Anda ingin menggunakan nama domain kustom untuk Layanan Knative, kami menyarankan agar Anda mengonfigurasi sertifikat HTTPS untuk nama domain tersebut guna meningkatkan keamanan transmisi data. Knative memungkinkan Anda menentukan sertifikat HTTPS dengan mengonfigurasi DomainMapping, yang secara aman memetakan Layanan Knative ke nama domain kustom.
Prasyarat
Knative telah dideploy di kluster ACS Anda. Untuk informasi selengkapnya, lihat Deploy Knative.
Langkah 1: Buat Layanan Knative
-
Masuk ke Konsol Container Compute Service (ACS). Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri pada halaman detail kluster, pilih Applications > Knative.
-
Pada tab Services halaman Knative, atur Namespace menjadi default, lalu klik Create from Template untuk membuat Layanan Knative (Layanan
helloworld-go) dari templat contoh di konsol. Ikuti petunjuk untuk menyelesaikan pembuatan. Setelah Layanan dibuat, statusnya akan muncul sebagai berhasil di tab Services, dan nama domain default-nya adalahhelloworld-go.default.example.com. Sebelum mengakses Layanan tersebut, Anda harus mengikat nama domain akses ke gerbang masuk sebagai Host.
Langkah 2: Konfigurasikan layanan HTTPS
Cara mengonfigurasi HTTPS bergantung pada jenis gateway:
-
Gateway ALB: Sertifikat dikelola terpusat oleh AlbConfig. Anda mengaktifkan TLS dengan menggunakan anotasi, tanpa perlu menangani file sertifikat secara manual.
-
Gateway Kourier: Anda harus membuat Secret sertifikat secara manual, lalu mengikat Secret tersebut ke nama domain menggunakan DomainMapping.
ALB
Anda dapat menentukan sertifikat dalam AlbConfig dan mengaktifkan akses TLS pada Layanan Knative dengan menggunakan anotasi knative.k8s.alibabacloud/tls: "true". Lihat contoh berikut.
Untuk mengaktifkan akses HTTPS, tambahkan anotasi TLS ke YAML Layanan Knative dan konfigurasikan pendengar pada Port 443 di AlbConfig.
-
Tambahkan anotasi
knative.k8s.alibabacloud/tls: "true"ke YAML Layanan Knative.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 yang benar-benar Anda gunakan. env: - name: TARGET value: "Knative" -
Tambahkan pendengar pada Port 443 di AlbConfig (misalnya,
knative-internet) untuk mengarahkan trafik HTTPS ke dalam kluster.apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: knative-internet spec: config: ... listeners: - port: 443 # Nilai yang valid: HTTP, HTTPS, QUIC protocol: HTTPS ... -
Verifikasi bahwa Layanan dapat diakses melalui HTTPS.
# Ganti alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com dengan alamat gateway ALB Anda. curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -kOutput yang diharapkan:
Hello Knative!
Kourier
Gateway Kourier tidak menyediakan manajemen sertifikat bawaan. Anda harus menyimpan sertifikat TLS di kluster sebagai Secret terlebih dahulu. Setelah Secret siap, ikat nama domain ke sertifikat tersebut menggunakan DomainMapping.
1. Buat Secret sertifikat
Contoh berikut menggunakan sertifikat HTTPS tanda tangan sendiri yang dihasilkan dengan OpenSSL. Jika Anda sudah memiliki file sertifikat dalam format .pem, Anda dapat melewati langkah 1 dan langsung mulai dari langkah 2.
Sertifikat tanda tangan sendiri hanya untuk pengujian. Di lingkungan produksi, kami menyarankan agar Anda menggunakan sertifikat yang dikeluarkan oleh Otoritas Sertifikat (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 key -
Encode file
knativetop-key.pemdanknativetop-cert.pemyang dibuat pada langkah 1 ke Base64.-
Encode
knativetop-key.pemke Base64.cat knativetop-key.pem | base64Output yang diharapkan:
a25hdGl2ZXRvcC1r****** -
Encode
knativetop-cert.pemke Base64.cat knativetop-cert.pem | base64Output yang diharapkan:
a25hdGl2ZXRvcC1jZ******==
-
-
Buat Secret tersebut. Secret ini dapat digunakan dalam konfigurasi TLS Layanan Knative untuk mengaktifkan akses aman ke nama 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 objek resource yang memetakan nama domain ke satu atau beberapa Layanan Knative. Setelah Secret siap, gunakan DomainMapping untuk mengikat nama domain kustom ke Layanan Knative dan referensikan Secret yang telah dibuat sebelumnya untuk mengaktifkan enkripsi TLS.
-
Buat file
helloworld.knative.top.yamldengan konten 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-tls -
Terapkan DomainMapping ke kluster.
kubectl apply -f helloworld.knative.top.yamlOutput yang diharapkan:
domainmapping.serving.knative.dev/helloworld.knative.top created -
Jalankan perintah berikut untuk memverifikasi bahwa DomainMapping telah siap.
kubectl get domainmapping helloworld.knative.topOutput yang diharapkan:
NAME URL READY REASON helloworld.knative.top https://helloworld.knative.top True -
Verifikasi bahwa Layanan dapat diakses melalui nama domain kustom.
# 8.141.XX.XX adalah alamat gateway Kourier. curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX -kOutput yang diharapkan:
Hello Knative!