All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mengakses Layanan Knative melalui HTTPS menggunakan gerbang ASM

Last Updated:Mar 12, 2026

Gerbang Alibaba Cloud Service Mesh (ASM) menghentikan TLS pada lapisan ingress, sehingga klien eksternal terhubung melalui HTTPS sementara lalu lintas internal dikirimkan tanpa enkripsi ke Layanan Knative. Gerbang ini memuat dinamis sertifikat TLS dari Kubernetes Secret, yang memungkinkan Anda memperbarui kredensial tanpa perlu me-restart Pod gerbang.

Panduan ini menjelaskan langkah-langkah untuk membuat sertifikat TLS, menyimpannya sebagai Kubernetes Secret, mengonfigurasi gerbang ASM untuk HTTPS, serta memverifikasi konektivitas end-to-end.

Cara kerja

Ketika klien mengirim Permintaan HTTPS ke Layanan Knative:

  1. Permintaan tersebut mencapai Pod gerbang masuk ASM di namespace istio-system.

  2. Gerbang menghentikan proses jabat tangan TLS menggunakan sertifikat dan kunci privat yang disimpan dalam Kubernetes Secret.

  3. Gerbang meneruskan permintaan yang telah didekripsi ke Layanan Knative target di dalam mesh.

Pengaturan ini mengenkripsi lalu lintas antara klien eksternal dan gerbang, tetapi tidak mengenkripsi lalu lintas antar komponen internal dalam mesh. Untuk mengenkripsi lalu lintas antar layanan di dalam mesh, konfigurasikan mutual TLS (mTLS) ASM.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Layanan Knative yang telah dideploy melalui Knative on ASM. Untuk detailnya, lihat Gunakan Knative on ASM untuk mendeploy aplikasi arsitektur tanpa server.

  • Nama domain kustom yang telah dikonfigurasi di Knative on ASM (panduan ini menggunakan aliyun.com sebagai contoh). Untuk detailnya, lihat Atur nama domain kustom di Knative on ASM.

  • Pendaftaran Internet Content Provider (ICP) untuk nama domain aliyun.com.

  • OpenSSL yang telah diinstal di mesin lokal Anda (hanya diperlukan untuk sertifikat tanda tangan sendiri).

  • kubectl yang telah dikonfigurasi untuk mengakses baik lapisan kontrol ASM maupun kluster yang menjalankan Pod gerbang masuk.

Langkah 1: Buat sertifikat TLS dan kunci privat

Jika Anda sudah memiliki sertifikat dan kunci privat yang valid untuk aliyun.com, ubah namanya menjadi aliyun.com.crt dan aliyun.com.key, lalu lanjutkan ke bagian Simpan sertifikat sebagai Kubernetes Secret.

Untuk menghasilkan sertifikat tanda tangan sendiri dengan OpenSSL:

  1. Buat Otoritas Sertifikat Root (CA):

       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
  2. Hasilkan sertifikat server dan kunci privat yang ditandatangani oleh CA root:

       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
Catatan

Untuk lingkungan produksi, gunakan sertifikat dari Certificate Authority (CA) publik atau integrasikan dengan cert-manager untuk mengotomatiskan penyediaan dan perpanjangan sertifikat. Sertifikat tanda tangan sendiri hanya cocok untuk pengembangan dan pengujian.

Simpan sertifikat sebagai Kubernetes Secret

Menggunakan kubeconfig dari kluster yang menjalankan Pod gerbang masuk, buat TLS Secret di namespace istio-system:

kubectl create -n istio-system secret tls myexample-credential \
  --key=aliyun.com.key --cert=aliyun.com.crt

Catat nama Secret (myexample-credential). Anda akan membutuhkannya pada langkah berikutnya.

Langkah 2: Konfigurasikan HTTPS pada gerbang ASM

  1. Simpan YAML berikut sebagai default.yaml. Ganti nilai-nilai berikut:

    FieldDescription
    domainNameNama domain kustom yang dikonfigurasi di Knative on ASM
    credentialNameNama TLS Secret yang dibuat pada langkah sebelumnya
       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.
  2. Hubungkan kubectl ke lapisan kontrol ASM dan terapkan konfigurasi:

       kubectl apply -f default.yaml

Langkah 3: Verifikasi akses HTTPS

Perbarui file hosts lokal Anda

Tambahkan pemetaan DNS untuk domain Layanan Knative ke alamat IP gerbang ASM:

<gateway-ip>  helloworld-go.default.aliyun.com

Ganti <gateway-ip> dengan alamat IP gerbang masuk ASM. Untuk menemukan alamat ini, lihat Langkah 3: Kueri alamat gerbang dalam *Gunakan Knative on ASM untuk mendeploy aplikasi arsitektur tanpa server*.

Uji dengan curl

Kirim Permintaan HTTPS ke Layanan Knative menggunakan CA root untuk verifikasi sertifikat:

curl --cacert aliyun.root.crt \
  --cert aliyun.com.crt --key aliyun.com.key \
  https://helloworld-go.default.aliyun.com

Output yang diharapkan:

Hello Knative!
Catatan

Flag --cacert memverifikasi sertifikat server terhadap CA root yang Anda hasilkan. Jika Anda menggunakan sertifikat dari CA publik, hilangkan flag --cacert.

Untuk melewati verifikasi sertifikat selama pengujian cepat dengan sertifikat tanda tangan sendiri, gunakan flag -k:

curl -k --cert aliyun.com.crt --key aliyun.com.key \
  https://helloworld-go.default.aliyun.com

Uji dengan browser

Buka https://helloworld-go.default.aliyun.com di browser.

Catatan

Browser akan menampilkan peringatan keamanan untuk sertifikat tanda tangan sendiri. Hal ini normal dan bukan indikasi adanya kesalahan konfigurasi.

Pemecahan Masalah

GejalaKemungkinan penyebabPenyelesaian
connection refused pada port 443ASMKnativeConfig belum diterapkan, atau Pod gerbang belum dimuat ulangJalankan kubectl get asmknativeconfig default -o yaml untuk memverifikasi konfigurasi. Periksa log Pod gerbang untuk menemukan error.
TLS handshake failureNama Secret dalam ASMKnativeConfig tidak sesuai dengan Secret di istio-systemJalankan kubectl get secret -n istio-system untuk memastikan Secret ada dan namanya sesuai dengan credentialName.
certificate verify failed dengan curlFlag --cacert mengarah ke sertifikat CA yang salahBerikan CA root (aliyun.root.crt), bukan sertifikat server.
Browser menampilkan peringatan "Not Secure"Sertifikat tanda tangan sendiri sedang digunakanHal ini normal untuk sertifikat tanda tangan sendiri. Gunakan sertifikat dari CA publik untuk lingkungan produksi.
404 Not Found setelah menerapkan konfigurasiNama domain dalam ASMKnativeConfig tidak sesuai dengan domain Layanan KnativeVerifikasi bahwa domainName sesuai dengan domain yang dikonfigurasi di Knative on ASM.

Langkah Selanjutnya

  • Rilis canary dengan pemisahan lalu lintas: Knative on ASM mendukung rilis canary berdasarkan pemisahan lalu lintas. Saat Anda membuat Layanan Knative, Knative secara otomatis membuat Revision pertama. Setiap kali konfigurasi Layanan berubah, Knative membuat Revision baru dan menyesuaikan persentase lalu lintas yang didistribusikan ke berbagai Revision. Untuk detailnya, lihat Lakukan rilis canary berdasarkan pemisahan lalu lintas untuk Layanan Knative menggunakan Knative on ASM.

  • Autoscaling Pod berbasis permintaan: Knative Serving menambahkan kontainer Queue Proxy ke setiap Pod. Kontainer Queue Proxy melaporkan metrik konkurensi ke Knative Pod Autoscaler (KPA). Berdasarkan metrik tersebut, KPA secara otomatis menyesuaikan jumlah Pod yang disediakan untuk suatu Penyebaran sesuai dengan jumlah permintaan konkuren dan algoritma autoscaling terkait. Untuk detailnya, lihat Aktifkan autoscaling Pod berdasarkan jumlah permintaan.