Menyiapkan Ingress HTTPS

Anda dapat mengamankan gateway masuk dengan HTTPS menggunakan TLS sederhana, dan mengaktifkan koneksi HTTPS ke halaman tertentu. Selain itu, Anda dapat mengalihkan koneksi HTTP ke HTTPS.

HTTPS membuat saluran yang aman melalui jaringan yang tidak aman, melindungi dari serangan man-in-the-middle, dan mengenkripsi traffic antara klien dan server. Untuk menyiapkan server web agar menerima sambungan HTTPS, administrator harus membuat sertifikat kunci publik untuk server. Sertifikat ini harus ditandatangani oleh certificate authority tepercaya agar browser web dapat menerimanya tanpa peringatan.

Edit gateway bernama external-gateway di namespace kf menggunakan editor Kubernetes bawaan:

kubectl edit gateway -n kf external-gateway
  1. Dengan asumsi Anda memiliki sertifikat dan kunci untuk layanan, buat rahasia Kubernetes untuk gateway masuk. Pastikan nama rahasia tidak diawali dengan istio atau prometheus. Untuk contoh ini, rahasianya diberi nama myapp-https-credential.
  2. Di bawah servers:
    1. Tambahkan bagian untuk port 443.
    2. Di bagian tls:, setel credentialName ke nama rahasia yang baru saja Anda buat.
    3. Di bagian hosts:, tambahkan nama host layanan yang ingin Anda amankan dengan HTTPS. Nama ini dapat ditetapkan ke seluruh domain menggunakan karakter pengganti (misalnya, *.example.com) atau diberi cakupan hanya satu nama host (misalnya, myapp.example.com).
  3. Seharusnya sudah ada bagian di bawah servers: untuk HTTP port 80. Simpan bagian ini dalam definisi Gateway jika Anda ingin semua traffic masuk sebagai HTTP.
  4. Untuk mengalihkan HTTP ke HTTPS, tambahkan nilai httpsRedirect: true pada tls di bagian server HTTP. Lihat dokumentasi Gateway Istio untuk referensi. Perhatikan bahwa menambahkan ini di bagian tempat hosts ditetapkan ke * berarti bahwa semua traffic dialihkan ke HTTPS. Jika Anda hanya ingin mengalihkan HTTP ke HTTPS untuk satu aplikasi/domain, tambahkan bagian HTTP terpisah yang menentukan pengalihan.

Di bawah ini adalah contoh spec Gateway yang menyiapkan HTTPS untuk myapp.example.com dan mengalihkan HTTP ke HTTPS untuk host tersebut:

spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - myapp.example.com
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      credentialName: myapp-https-credential
      mode: SIMPLE
  - hosts:
    - myapp.example.com
    port:
      name: http-my-app
      number: 80
      protocol: HTTP
    tls:
      httpsRedirect: true
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP