Menyiapkan Ingress HTTPS

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

HTTPS membuat saluran 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 dapat menerima koneksi 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 secret Kubernetes untuk gateway ingress. Pastikan nama secret tidak diawali dengan istio atau prometheus. Untuk contoh ini, secret diberi nama myapp-https-credential.
  2. Di bagian servers:
    1. Tambahkan bagian untuk port 443.
    2. Di bagian tls:, tetapkan credentialName ke nama secret yang baru saja Anda buat.
    3. Di bagian hosts:, tambahkan nama host layanan yang ingin Anda amankan dengan HTTPS. Ini dapat ditetapkan ke seluruh domain menggunakan karakter pengganti (misalnya, *.example.com) atau dibatasi hanya untuk satu nama host (misalnya, myapp.example.com).
  3. Seharusnya sudah ada bagian di bagian 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 di bagian tls di bagian server HTTP. Lihat dokumentasi Istio Gateway untuk referensi. Perhatikan bahwa menambahkannya di bagian tempat hosts ditetapkan ke * berarti 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