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
- Dengan asumsi Anda memiliki sertifikat dan kunci untuk layanan, buat rahasia Kubernetes untuk gateway masuk. Pastikan nama rahasia tidak diawali dengan
istio
atauprometheus
. Untuk contoh ini, rahasianya diberi namamyapp-https-credential
. - Di bawah
servers:
- Tambahkan bagian untuk port 443.
- Di bagian
tls:
, setelcredentialName
ke nama rahasia yang baru saja Anda buat. - 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
).
- 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. - Untuk mengalihkan HTTP ke HTTPS, tambahkan nilai
httpsRedirect: true
padatls
di bagian server HTTP. Lihat dokumentasi Gateway Istio untuk referensi. Perhatikan bahwa menambahkan ini di bagian tempathosts
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