Debug Spring Boot Apps on Red Hat OpenShift4 (Bahasa)
Kisah ini berawal dari sebuah pertanyaan dari salah satu pengguna OpenShift tentang bagaimana cara debug aplikasi Spring Boot yang berjalan sebagai container di OpenShift. Mengingat cukup banyak teman-teman coder yang menggunakan framework ini sebagai aplikasi microservice, maka saya coba buat tutorialnya untuk remote debug aplikasi java pada OpenShift4.
Flow nya seperti gambar berikut.
Prerequisite
- Preinstalled OpenShift Container Platform 4 (OCP4)
- OpenShift client command line tools (oc tools) atau k8s cli. Download disini.
- IDE favorit mu. Mimin menggunakan Red Hat CodeReady Studio (Eclipse based) dan VSCode pada tutorial ini.
- Deploy aplikasi Springboot mu ke OpenShift (sample apps on GitHub). Tutorial kali ini saya menggunakan s2i untuk deploy aplikasinya.
Step 1 : Set Debug Mode as Environment Variable
Tambahkan environment variable JAVA_DEBUG=true pada Deployment atau Deployment Config
Atau, menggunakan oc atau kubectl command line:
$ kubectl set env deployment/springboot-sample-apps-git JAVA_DEBUG=true
pada log startup akan ada info debug port aplikasi.
Listening for transport dt_socket at address: 5005
Step 2 : Port Forward Debug port to Your Local Machine
lihat pod aplikasi yang Running:
$ kubectl get pods | grep Running....springboot-sample-apps-git-XXXX 1/1 Running
Port forward port debug pada pod target
$ kubectl port-forward springboot-sample-apps-git-XXXX 5005:5005....Forwarding from 127.0.0.1:5005 -> 5005
Forwarding from [::1]:5005 -> 5005
Step 3 : Setup Remote Debug on Your IDE
Go to Debug Configuration > Remote Java Application
Connection Type: Standard (Socket Attach)
Host: localhost
Port: 5005
jika kamu menggunakan VSCode. tambahkan konfigurasi launch.json pada folder .vscode
{ "version": "0.2.0", "configurations": [ { "type": "java", "name": "Debug (Attach)", "projectName": "springboot-sample-apps", "request": "attach", "hostName": "localhost", "port": 5005 }
]}
Step 4 : Voila! Debug Aplikasi Mu
buka pada browser http://$YOUR_APPS_ROUTE/swagger-ui.html dan coba /api/v1/home
Debug pada VSCode:
Semoga bermanfaat.