Gerbang ASM mendukung protokol HTTPS dan pemuatan sertifikat dinamis. Untuk mengakses serta mengelola layanan mikro yang dibangun dengan Knative secara aman, Anda dapat menggunakan gerbang ASM guna mengaktifkan akses HTTPS. Pendekatan ini mengenkripsi lalu lintas ke titik akhir layanan, melindungi komunikasi antar layanan, serta meningkatkan keamanan dan keandalan arsitektur Anda.
Prasyarat
-
Anda telah membuat layanan Knative di Knative on ASM. Untuk informasi selengkapnya, lihat Deploy aplikasi serverless di ASM dengan Knative.
-
Anda telah menggunakan nama domain kustom aliyun.com di Knative on ASM. Untuk informasi selengkapnya, lihat Gunakan nama domain kustom di Knative on ASM.
Buat sertifikat dan kunci privat
Sebelum menggunakan nama domain, Anda harus mendaftarkan Internet Content Provider (ICP) untuk nama domain tersebut. Contoh ini menggunakan nama domain aliyun.com untuk menghasilkan sertifikat dan kunci privat, lalu menyimpannya sebagai Secret.
Jika Anda sudah memiliki sertifikat dan kunci privat yang valid untuk aliyun.com, beri nama file sertifikat aliyun.com.crt dan file kunci privat aliyun.com.key.
Jika Anda belum memiliki sertifikat dan kunci privat untuk aliyun.com, Anda dapat menggunakan OpenSSL untuk menghasilkannya dengan mengikuti langkah-langkah berikut.
-
Jalankan perintah berikut untuk membuat sertifikat root dan kunci privat.
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
Jalankan perintah berikut untuk menghasilkan sertifikat dan kunci privat untuk server aliyun.com.
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
Setelah sertifikat dan kunci privat siap, jalankan perintah berikut dalam konteks KubeConfig kluster tempat Pod ingress gateway berada. Perintah ini membuat Secret yang berisi sertifikat dan kunci privat di Namespace istio-system. Catat nama Secret tersebut.
kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
Aktifkan akses HTTPS
-
Simpan konten berikut sebagai
default.yaml.apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMKnativeConfig metadata: name: default spec: enabled: true useExisting: true tag: 1.4.0 domainConfig: domainName: aliyun.com # Ganti dengan nama domain Anda. credentialName: myexample-credential # Ganti dengan nama Secret Anda. -
Gunakan kubectl untuk terhubung ke Service Mesh dan jalankan perintah berikut.
kubectl apply -f default.yaml
Akses layanan melalui HTTPS
-
Perbarui file hosts untuk menambahkan pemetaan nama domain baru.
Contohnya:
CatatanGanti
xx.xx.xxx.xxdengan alamat IP gateway aktual Anda. Untuk informasi cara memperoleh alamat IP gateway, lihat Peroleh alamat IP ingress gateway.xx.xx.xxx.xx helloworld-go.default.aliyun.com -
Akses layanan melalui HTTPS.
-
Akses dari command line
Jalankan perintah berikut untuk mengakses layanan melalui HTTPS menggunakan sertifikat.
curl -k --cert aliyun.com.crt --key aliyun.com.key https://helloworld-go.default.aliyun.com # Expected output Hello Knative! -
Akses dari browser
Masukkan
https://helloworld-go.default.aliyun.comdi bilah alamat browser Anda.Hello Knative!CatatanKarena menggunakan sertifikat tanda tangan sendiri, browser Anda mungkin menampilkan peringatan keamanan saat mengakses layanan. Anda dapat melanjutkan dengan aman.
-
Operasi terkait
-
Knative on ASM menyediakan kemampuan rilis canary berbasis traffic. Saat Anda membuat layanan Knative, Knative secara otomatis membuat Revision pertama untuk layanan tersebut. Setiap kali konfigurasi layanan berubah, Knative membuat Revision baru. Anda dapat menerapkan rilis canary dengan mengubah persentase traffic yang diarahkan ke Revision berbeda. Untuk informasi selengkapnya, lihat Lakukan rilis canary berbasis traffic untuk layanan Knative di Knative on ASM.
-
Knative Serving menyisipkan kontainer queue-proxy ke setiap Pod. Kontainer ini melaporkan metrik konkurensi untuk kontainer aplikasi ke Autoscaler. Setelah menerima metrik tersebut, Autoscaler mengaktifkan autoscaling dengan menyesuaikan jumlah Pod dalam Penyebaran berdasarkan jumlah permintaan konkuren dan algoritma penskalaan. Untuk informasi selengkapnya, lihat Autoscale layanan berdasarkan jumlah permintaan konkuren.