Menggunakan sertifikat TLS dan HTTPS terkelola

Halaman ini menunjukkan cara menonaktifkan dan mengaktifkan kembali fitur sertifikat TLS terkelola yang secara otomatis menyediakan dan memperpanjang sertifikat TLS untuk mendukung koneksi HTTPS di layanan Knative.

Jika Anda ingin menggunakan HTTPS,

  • Penampung Anda akan terus memproses $PORT
  • Anda harus memilih cara Anda menyediakan sertifikat TLS:

    • Gunakan sertifikat TLS terkelola, yang sertifikat TLS-nya dibuat secara otomatis sesuai kebutuhan, dan diperpanjang secara otomatis. Halaman ini menjelaskan fitur ini, yang tersedia di versi Google Kubernetes Engine yang didukung.
    • Gunakan sertifikat Anda sendiri, di mana Anda bertanggung jawab untuk mendapatkan dan memperpanjang sertifikat. Dalam beberapa situasi, yang dijelaskan di bagian Batasan, Anda harus menggunakan sertifikat Anda sendiri.
  • Jika menggunakan sertifikat terkelola, Anda juga harus memetakan domain kustom untuk menggunakan fitur sertifikat terkelola.

Menggunakan HTTPS dan HTTP

Secara default, jika Anda menggunakan sertifikat terkelola, cluster atau layanan Knative dengan sertifikat terkelola diekspos ke traffic HTTP dan HTTPS. Jika hanya menginginkan traffic HTTPS, Anda dapat mengaktifkan pengalihan HTTPS untuk memaksa semua traffic menggunakan HTTPS saja.

Pemecahan masalah

Jika Anda mengalami masalah saat menggunakan sertifikat TLS terkelola, lihat halaman pemecahan masalah TLS terkelola.

Batasan

Pertimbangan berikut berlaku untuk penggunaan fitur sertifikat TLS terkelola:

  • Sertifikat TLS terkelola dinonaktifkan dan tidak didukung untuk cluster pribadi layanan Knative di Google Cloud.
  • Untuk menggunakan fitur sertifikat terkelola, layanan Anda harus diekspos secara eksternal: layanan tersebut tidak boleh berupa layanan lokal cluster atau layanan yang diekspos oleh Virtual Private Cloud.
  • Fitur sertifikat terkelola hanya berfungsi dengan Cloud Service Mesh. Add-on Istio atau konfigurasi Istio lainnya tidak didukung.
  • Fitur ini menggunakan Let's Encrypt, yang memiliki batas kuota awal 50 sertifikat TLS per minggu per domain terdaftar. Anda dapat meminta penambahan kuota dengan mengikuti dokumentasi Let's Encrypt.
  • Saat menjalankan cluster layanan Knative di platform lain, seperti di lokal atau AWS, fitur ini dinonaktifkan. Untuk menggunakan fitur ini, Anda harus memastikan cluster Anda dapat mengakses Let's Encrypt, dan layanan ingress Cloud Service Mesh Anda diekspos ke internet publik.

Sebelum memulai

Petunjuk di halaman ini mengasumsikan hal berikut:

Menonaktifkan sertifikat TLS dan HTTPS terkelola untuk seluruh cluster

Nonaktifkan TLS terkelola untuk cluster dengan mengupdate ConfigMap config-domainmapping:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

Menonaktifkan TLS dan HTTPS terkelola untuk pemetaan domain tertentu

Jika perlu, Anda dapat menonaktifkan TLS terkelola untuk pemetaan domain tertentu:

  1. Tambahkan anotasi domains.cloudrun.com/disableAutoTLS: "true"`:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. Pastikan HTTPS tidak berfungsi:

    curl https://DOMAIN

  3. Pastikan HTTP digunakan untuk layanan:

    gcloud run domain-mappings describe --domain DOMAIN

    Ganti DOMAIN dengan nama domain Anda sendiri, misalnya: your-domain.com

    Periksa kolom url: dalam hasil yang ditampilkan dari perintah di atas: URL harus memiliki http, bukan https.

Mengaktifkan kembali sertifikat TLS terkelola dan HTTPS

Untuk mengaktifkan kembali TLS terkelola:

  1. Jika Anda belum melakukannya, buat pemetaan domain untuk layanan Anda dan perbarui data DNS Anda sesuai dengan petunjuk di halaman pemetaan domain.

  2. Aktifkan sertifikat TLS terkelola dan HTTPS dengan memperbarui ConfigMap config-domainmapping:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. Tunggu beberapa menit setelah perintah berhasil, lalu pastikan fitur sertifikat berfungsi:

    kubectl get kcert

    Jika sertifikat sudah siap, Anda akan melihat pesan seperti ini:

    NAME              READY   REASON
    your-domain.com              True

    Kcert mungkin memerlukan waktu 20 detik hingga 2 menit untuk siap. Jika Anda mengalami masalah, lihat petunjuk pemecahan masalah untuk fitur ini.

Memverifikasi keberhasilan

  1. Pastikan bahwa data DNS telah berlaku dengan menjalankan perintah:

    gcloud run domain-mappings describe --domain DOMAIN

    Ganti DOMAIN dengan nama domain Anda sendiri, misalnya: your-domain.com

  2. Periksa kolom url: dalam hasil yang ditampilkan dari perintah di atas: URL harus memiliki https, bukan http.

  3. Periksa alamat IP dari perintah di atas, yang tercantum di bagian resourceRecords:rrdata, dan bandingkan dengan nilai yang Anda lihat saat menjalankan perintah host DOMAIN. Keduanya harus sama.

Mengaktifkan pengalihan HTTPS untuk inferensi Knative

Jika Anda menggunakan fitur sertifikat TLS terkelola, secara default cluster akan diekspos ke traffic HTTP dan HTTPS karena alasan kompatibilitas mundur. Jika Anda ingin memaksa semua traffic hanya menggunakan HTTPS, Anda dapat mengaktifkan pengalihan HTTPS untuk pemetaan domain yang ada dengan memanggil perintah

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

dengan DOMAIN adalah nama pemetaan domain.

  • Memecahkan masalah TLS terkelola untuk mengetahui detail tentang memeriksa pemetaan domain, kuota sertifikat, status pesanan dan waktu tunggu pesanan, serta kegagalan otorisasi.
  • Bawa sertifikat TLS Anda sendiri untuk mengetahui petunjuk tentang cara menggunakan sertifikat TLS Anda sendiri, bukan sertifikat TLS terkelola.