Keamanan data dan integritas transmisi adalah prioritas utama dalam arsitektur DKubes. Dengan memanfaatkan DBalance sebagai Load Balancer terpusat, panduan ini akan memandu Anda dalam menerapkan protokol SSL/TLS melalui konfigurasi HTTPS Ingress.
Dalam arsitektur ini, Ingress bertindak sebagai gerbang keamanan utama yang menjamin:
Enkripsi Data: Melindungi data sensitif dari ancaman penyadapan saat berpindah dari internet menuju klaster Anda.
Kepatuhan Standar Produksi: Memastikan layanan Anda memenuhi standar keamanan industri dan meningkatkan kepercayaan pengguna melalui verifikasi sertifikat resmi.
Catatan: Untuk kebutuhan pengujian dasar atau skenario yang tidak memerlukan enkripsi, Anda dapat merujuk pada Panduan Konfigurasi HTTP (Tanpa SSL).
A. Tahapan Pembuatan HTTPS Ingress (Akses dengan SSL/TLS)
Tahap ini menjelaskan langkah-langkah teknis untuk menyediakan akses aman melalui protokol HTTPS. Dengan mengonfigurasi sertifikat pada level Ingress, komunikasi antara browser pengguna dan server Anda akan terenkripsi secara otomatis.
Prasyarat Utama
Sebelum memulai, pastikan infrastruktur Anda telah memenuhi kriteria berikut:
- Telah memiliki kluster DKubes yang aktif yang dapat diakses.
- Layanan DBalance telah terpasang (attached) pada kluster terkait.
- Dibutuhkan Helm Charts sebagai manajer paket untuk mempermudah instalasi komponen tambahan.
- Cert-Manager Komponen untuk mengelola dan menerbitkan sertifikat SSL secara otomatis.
Langkah-Langkah Konfigurasi
Untuk melakukan konfigurasi Ingress dengan SSL Certificate dapat mengikuti langkah-langkah dibawah ini:
- Instalasi Perangkat Lunak Pendukung
Pastikan kubectl dan Helm sudah terpasang di sistem lokal Anda.
Sebelum melakukan konfigurasi, pastikan kubectl dan Helm sudah terpasang di sistem lokal Anda. Jika belum tersedia, silakan instal melalui panduan resmi instalasi kubectl dan instalasi helm. - Konfigurasi DNS (A Record)
Agar domain Anda dapat mengarah ke Load Balancer, Anda perlu menghubungkan nama domain dengan alamat IP publik DBalance. Ingress bekerja berdasarkan nama domain (hostname). Tanpa DNS yang tepat, lalu lintas internet tidak akan tahu ke mana harus mengarah.

Catatan: Ganti [ip load balancer] dengan ipv4 DBalance Anda, dan [url domain] domain yang Anda gunakan. - Validasi Koneksi pada Dasbor DBalance
Masuk ke Dasbor DBalance dan pastikan status pada bagian Ingress Connected telah tercentang. Hal ini menandakan bahwa jaringan antara Load Balancer dan kluster telah tersinkronisasi dengan baik.
Gambar 1. Dashboard DBalance - Instalasi Cert-Manager
Cert-Manager berfungsi sebagai otoritas penerbit sertifikat otomatis (misalnya melalui Let’s Encrypt). Untuk menambahkan repositori cert-manager dapat menggunakan perintah berikut.helm repo add jetstack https://charts.jetstack.io --force-update
Selanjutnya install cert-manager ke dalam kluster dengan menggunakan perintah berikut.
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.20.0 \ --set crds.enabled=true
- Membuat Konfigurasi ClusterIssuer (YAML)
Buat sebuah file baru bernama cluster-issuer.yaml dan masukkan perintah dibawah ini. Pastikan bagian email diisi dengan alamat email aktif untuk menerima notifikasi masa berlaku sertifikat dari Let’s Encrypt.apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: yourmail@gmail.com privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: ingressClassName: haproxy - Menerapkan Konfigurasi
Jalankan perintah berikut untuk mengirim konfigurasi tersebut ke dalam klaster:
kubectl apply -f cluster-issuer.yaml - Verifikasi Status ClusterIssuer
Setelah diterapkan, Anda harus memastikan bahwa ClusterIssuer tersebut berhasil terdaftar dan siap digunakan. Jika statusnya Ready, berarti cert-manager sudah berhasil mendaftarkan akun ke server Let’s Encrypt.
kubectl get clusterissuer letsencrypt-prod - Persiapan Aplikasi Uji
Untuk memastikan konfigurasi berjalan lancar, jalankan perintah dibawah ini pada kubectl untuk membuat sebuah deployment sederhana pada DKubes dan melakukan expose deployment tersebut dengan type service Cluster IP.# Membuat deployment aplikasi kubectl create deployment httpbin --image kennethreitz/httpbin # Mengekspos aplikasi melalui service internal pada port 80 kubectl expose deployment httpbin --name httpbin-svc --port 80
- Membuat Konfigurasi Ingress HTTPS (YAML)
Buatlah berkas bernama ingress.yaml kemudian tambahkan anotasi untuk Cert-Manager dan konfigurasi TLS berikut:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dkubes-dbalance-https namespace: default annotations: cert-manager.io/cluster-issuer: "[nama-cluster-issuer-anda]" spec: ingressClassName: haproxy tls: - hosts: - [url-domain-anda] secretName: dkubes-dbalance-https-tls rules: - host: [url-domain-anda] http: paths: - path: / pathType: Prefix backend: service: name: httpbin-svc port: number: 80 - Menerapkan Konfigurasi
Jalankan perintah berikut untuk mengaktifkan Ingress:
kubectl apply -f ingress.yaml - Verifikasi Status Ingress
Pastikan Ingress telah mendapatkan alamat IP publik dengan perintah:
kubectl get ingress
Hasilnya akan seperti gambar dibawah ini.
Gambar 2. Hasil kubectl - Lihat Sertifikat
Jalankan perintah berikut untuk mengecek status Sertifikat SSL:
kubectl get certificate
Hasilnya akan seperti gambar dibawah ini.
Gambar 3. Hasil kubectl - Akses Layanan
Tunggu beberapa saat, lalu akses domain Anda melalui browser. Jika berhasil, Anda akan melihat halaman seperti gambar dibawah ini:
Gambar 4. Hasil Deployment