Men-debug aplikasi Kubernetes dengan Cloud Code untuk IntelliJ

Cloud Code for IntelliJ memungkinkan Anda men-debug aplikasi yang di-deploy ke cluster Kubernetes dengan mudah. Anda dapat men-debug aplikasi di cluster lokal (seperti minikube atau Docker Desktop), Google Kubernetes Engine, atau penyedia Cloud lainnya.

Dengan dukungan proses debug Cloud Code, Anda dapat melewati penyiapan manual seperti menyiapkan penerusan port, menginstal backend proses debug, atau menyisipkan argumen proses debug khusus bahasa dengan cara yang benar. Yang Anda perlukan hanyalah aplikasi Kubernetes yang siap digunakan dengan Cloud Code yang menyertakan file konfigurasi skaffold.yaml.

Cloud Code juga memungkinkan Anda untuk men-debug aplikasi saat membuat perubahan dan melakukan iterasi pada kode sumber.

IDE yang didukung

Tabel berikut mencantumkan bahasa dan IDE yang didukung Cloud Code untuk proses debug. Tabel ini juga mencantumkan plugin yang diperlukan, jika berlaku:

Bahasa IDE dan edisi yang didukung Plugin yang diperlukan
Java IntelliJ IDEA Ultimate T/A
IntelliJ IDEA Community T/A
Go IntelliJ IDEA Ultimate Plugin Go
GoLand T/A
Node.js IntelliJ IDEA Ultimate Plugin Node.js
WebStorm T/A
Python IntelliJ IDEA Ultimate Plugin Python
PyCharm Professional T/A

Untuk mengetahui informasi selengkapnya tentang dukungan IDE, lihat IDE JetBrains yang Didukung.

Dengan Cloud Code, Anda dapat menetapkan titik henti sementara dan men-debug aplikasi jarak jauh yang berjalan dalam container untuk bahasa berikut:

Java

Cloud Code otomatis menambahkan variabel lingkungan, JAVA_TOOL_OPTIONS, dengan konfigurasi JDWP yang sesuai untuk mengaktifkan proses debug. Jika JAVA_TOOL_OPTIONS sudah ada, Cloud Code akan menggunakan setelan yang ada yang ditentukan dalam JAVA_TOOL_OPTIONS.

Node.js

Bergantung pada struktur aplikasi dan konfigurasi build image-nya, Anda mungkin harus membantu debugger memetakan sumber lokal ke sumber jarak jauh dalam container. Hal ini memungkinkan debugger Node memproses titik henti sementara Anda dengan benar.

Anda dapat mengonfigurasi hal ini dengan salah satu cara berikut:

  • Konfigurasi manual

    Pilih Konfigurasi Run Develop on Kubernetes dari dropdown, lalu klik Edit Configurations. Di tab Debug, konfigurasi pemetaan sumber dari sumber aplikasi lokal ke lokasi sumber dalam container jarak jauh.

    Memilih lokasi sumber di bagian pemetaan sumber pada tab Debug

    Opsi konfigurasi:

    • File/directory - file atau direktori lokal aplikasi Anda yang berjalan di Kubernetes.
    • Remote path - jalur ke file atau direktori yang berjalan dalam container di Kubernetes.
  • Konfigurasi otomatis

    Anda dapat memilih untuk menunda pemetaan ini ke Cloud Code. Saat Anda memulai sesi proses debug, Cloud Code akan mencoba menyimpulkan pemetaan ini secara otomatis. Pemetaan yang disimpulkan akan ditampilkan kepada Anda dalam dialog; satu dialog untuk setiap artefak yang Anda debug.

    Dialog pemetaan jalur jarak jauh untuk setiap artefak yang menentukan jalur jarak jauh yang digunakan

    Opsi konfigurasi:

    • Local path - jalur lokal ke root artefak yang Anda debug.
    • Remote path - jalur ke file atau direktori yang berjalan dalam container di Kubernetes. Anda dapat memilih untuk mengganti nilai ini dengan nilai Anda sendiri. Jika Anda mengklik Cancel, tidak ada pemetaan yang diterapkan.

Go

Untuk mengonfigurasi aplikasi Anda untuk proses debug, aplikasi Anda harus merupakan aplikasi berbasis Modul Go dan diidentifikasi sebagai berbasis Go dengan menetapkan salah satu variabel lingkungan runtime Go standar dalam container, seperti GODEBUG, GOGC, GOMAXPROCS, atau GOTRACEBACK. GOTRACEBACK=single adalah setelan default untuk Go dan GOTRACEBACK=all adalah konfigurasi yang umumnya berguna.

Secara opsional (tetapi direkomendasikan), aplikasi Anda harus di-build dengan opsi -gcflags='all=-N -l' untuk menonaktifkan pengoptimalan. Profil Skaffold adalah opsi yang berguna untuk tujuan ini dan dapat ditetapkan dengan kolom Deployment Profile di konfigurasi Run pada tab Build/Deploy.

Python

Untuk mengonfigurasi aplikasi Anda untuk proses debug, pastikan Anda memenuhi prasyarat berikut:

  • IDE, edisi, dan plugin kompatibel

    Untuk IDE, edisi, dan plugin yang kompatibel, lihat IDE yang didukung.

  • Versi Skaffold adalah 1.25.0 atau yang lebih baru

    Anda dapat mengizinkan Cloud Code untuk mengelola dependensi, atau mengarah ke penginstalan Skaffold lokal. Lihat Preferences > Tools > Cloud Code > Dependencies.

  • Penafsir Python dikonfigurasi

    Tanpa penafsir Python yang dikonfigurasi di project Anda, proses debug tidak akan berfungsi, karena tidak ada cara untuk menjalankan pydevd, debugger Python yang mendasarinya.

    IDE Cara mengonfigurasi
    IntelliJ IDEA Proses debug Python dengan Cloud Code memerlukan a Python SDK untuk dikonfigurasi untuk project Anda.

    Buka File > Project Structure dan tambahkan Python SDK di tab Project. Jika tidak ada, tambahkan di tab SDK.
    PyCharm Buka File > Settings > Project > Python Interpreter atau untuk Mac OS X, PyCharm > Preferences > Project > Python Interpreter, lalu tambahkan penafsir Python.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi proses debug Skaffold.

Men-debug aplikasi

  1. Untuk memulai siklus pengembangan dalam mode proses debug di cluster Kubernetes, klik tindakan proses debug untuk ikon tindakan jalankan Develop on Kubernetes.

    Memulai siklus pengembangan cluster Kubernetes dalam mode debug

    Siklus pengembangan berkelanjutan dimulai dalam mode proses debug.

    Cloud Code melampirkan sesi proses debug:

    Debugger Kubernetes terlampir

  2. Sekarang Anda dapat melakukan tugas yang biasanya Anda lakukan saat men-debug kode lokal, seperti menetapkan titik henti sementara dan menelusuri kode, terhadap cluster Kubernetes aktif.

    Sesi debugger Kubernetes

  3. Untuk mengakhiri sesi proses debug, klik ikon berhenti di Konfigurasi Run Develop on Kubernetes.

Langkah berikutnya

Mendapatkan dukungan

Untuk mengirimkan masukan atau melaporkan masalah di IntelliJ IDE, buka Tools > Cloud Code > Help / About > Submit feedback or report an issue untuk melaporkan masalah di GitHub.