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