Cloud Code memungkinkan Anda men-debug aplikasi yang di-deploy ke a
cluster Google Kubernetes Engine (GKE) dengan memanfaatkan
skaffold debug.
Anda dapat men-debug aplikasi di cluster lokal (seperti minikube atau Docker Desktop), GKE, atau penyedia cloud lainnya.
Dengan dukungan proses debug Cloud Code, Anda tidak perlu menyelesaikan penyiapan manual seperti menyiapkan penerusan port atau menyisipkan argumen debug khusus bahasa. Proses debug memerlukan aplikasi GKE yang siap untuk Cloud Code yang menyertakan file konfigurasi skaffold.yaml dan konfigurasi peluncuran cloudcode.kubernetes.
Men-debug aplikasi GKE
Untuk mulai men-debug aplikasi GKE, ikuti langkah-langkah berikut:
Di status bar Cloud Code, klik nama project aktif.

Di menu Pilih Cepat yang muncul, pilih Debug on Kubernetes.
Jika diminta, autentikasi kredensial Anda untuk menjalankan dan men-debug aplikasi secara lokal.
Jika aplikasi Anda tidak memiliki konfigurasi Skaffold yang diperlukan atau
cloudcode.kuberneteskonfigurasi peluncuran, Cloud Code akan membantu Anda menyiapkannya.Konfirmasi apakah akan menggunakan konteks Kubernetes saat ini untuk menjalankan aplikasi di (atau beralih ke konteks yang lebih disukai).
Jika Anda memilih cluster jarak jauh sebagai konteks, saat diminta, pilih registry image untuk mengirim image.
Jika project Anda mengaktifkan Artifact Registry API dan memiliki setidaknya satu repositori Artifact Registry, Anda dapat membuka dan memilih repositori Artifact Registry yang ada.
Contoh berikut menunjukkan cara menentukan tempat penyimpanan image container untuk beberapa registry umum:
Artifact Registry REGION-docker.pkg.dev/PROJECT_ID/REPO_NAMEDocker Hub docker.io/ ACCOUNT
Pastikan Anda diautentikasi dengan benar jika menggunakan repositori Docker Hub pribadi.AWS Container Repository (ECR) AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/APPAzure Container Registry (ACR) ACR_NAME.azurecr.io/APPUntuk membuat nama repositori image akhir, Cloud Code menggabungkan registry image ini dengan nama image yang ditentukan dalam manifes Kubernetes. Pilihan ini disimpan dalam konfigurasi peluncuran
cloudcode.kubernetes(ditemukan di.vscode/launch.json).Untuk mengetahui informasi selengkapnya, lihat panduan penanganan registry image.
Cloud Code membangun container Anda, mengirimkannya ke registry, menerapkan konfigurasi Kubernetes ke cluster, dan menunggu peluncuran.
Setelah peluncuran, Cloud Code secara otomatis meneruskan port semua port container yang dideklarasikan ke mesin Anda dan menampilkan URL di jendela output sehingga Anda dapat menjelajahi aplikasi live.
Untuk setiap container yang dapat di-debug di aplikasi Anda, konfirmasi atau masukkan direktori di container jarak jauh tempat program yang ingin Anda debug berada.
Atau, Anda dapat menekan ESC untuk melewati proses debug container.

Cloud Code melampirkan sesi proses debug untuk setiap container yang dapat di-debug di aplikasi.
Anda kini dapat melakukan tugas yang sama seperti yang biasanya Anda lakukan saat men-debug kode lokal, seperti menetapkan breakpoint dan menelusuri kode, terhadap cluster Kubernetes live.
Secara default, saat Anda menyimpan perubahan pada aplikasi, Cloud Code akan men-deploy ulang aplikasi dan menyiapkan sesi proses debug baru. Anda dapat mengaktifkan/menonaktifkan fitur ini dengan tanda
watchdi konfigurasi peluncuran project.Untuk memeriksa variabel dan info stack, gunakan Sidebar Debug. Untuk berinteraksi dengan sesi proses debug, gunakan Konsol Debug di debugger panel bawah.
Setelah sesi selesai, Anda dapat menggunakan perintah menu kontekstual berikut:
- Open Deployment Logs: Membuka log aplikasi dari deployment tertentu dengan Cloud Code logs explorer.
- Open Service URL: Membuka URL layanan aplikasi dari layanan tertentu di browser web
Jika Anda telah menonaktifkan mode smartwatch di konfigurasi peluncuran dan ingin membuat perubahan pada aplikasi serta membangun ulang dan men-deploy ulang aplikasi, di panel Sesi pengembangan, jeda pada tindakan jalankan, lalu klik
Bangun ulang dan deploy ulang aplikasi.Untuk mengakhiri sesi proses debug, klik
Berhenti di Toolbar Debug.Setelah Anda mengakhiri sesi proses debug, semua resource Kubernetes yang di-deploy akan dihapus dari cluster.
Detail konfigurasi
Cloud Code, yang didukung oleh Skaffold, secara otomatis menangani detail konfigurasi berikut untuk semua bahasa yang didukung:
- Meneruskan port debug sehingga debugger dapat dilampirkan.
- Melampirkan debugger ke satu atau beberapa container yang dapat di-debug di aplikasi Anda.
Jika aplikasi Anda memiliki beberapa container yang dapat di-debug (container yang bahasanya didukung oleh proses debug Cloud Code) yang dikonfigurasi di
skaffold.yaml, debugger akan dilampirkan ke setiap container yang dapat di-debug. - Mempertahankan definisi pemetaan sumber di seluruh sesi; Anda dapat menyesuaikan definisi ini dengan mengedit file
.vscode/launch.jsonsecara langsung.
Cloud Code juga menangani detail konfigurasi khusus bahasa berikut:
Node.js
Menulis ulang titik entri untuk memanggil:
node --inspect=localhost:9229
Python
Menginstal modul ptvsd
menggunakan Container Init dan menulis ulang titik entri untuk memanggil:
python -m ptvsd --host localhost --port 5678
Go
Menginstal debugger
dlv
menggunakan Container Init dan menulis ulang titik entri sehingga sesi proses debug yang diluncurkan
berjalan hanya dengan server debug (dalam mode tanpa tampilan), melanjutkan proses yang di-debug saat dimulai, menerima beberapa koneksi klien, dan memproses di
localhost:56268:
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
Java
Menambahkan JAVA_TOOLS_OPTIONS lingkungan dengan konfigurasi Java Debug Wire Protocol (JDWP) yang sesuai sehingga agen proses debug JDWP memproses koneksi soket di port 5005 dan memungkinkan VM mulai dieksekusi sebelum debugger dilampirkan:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
Untuk mengetahui detail selengkapnya tentang proses debug yang didukung Skaffold, lihat dokumentasi
skaffold debug.
Menyiapkan container
Untuk menyiapkan container untuk proses debug, ikuti petunjuk untuk bahasa yang Anda gunakan:
Node.js
- Mulai aplikasi Node.js dengan
--inspect=<debugPort>yangdebugPortberasal dari konfigurasi lampirkan. Contoh:CMD ["node", "--inspect=9229", "index.js"]
Python
- Pastikan Anda telah menginstal modul
ptvsddi mesin dan di container. - Mulai aplikasi Python melalui
ptvsd. Cocokkan port yang ditentukan dengan kolomdebugPortdalam konfigurasi lampirkan. Contoh:CMD ["python", "-m", "ptvsd", "--port", "
" , "app.py"]
Go
- Pastikan Anda telah menginstal paket
dlvdi mesin dan container Go. Mulai aplikasi Go melalui
dlv debug.Port yang ditentukan dalam perintah awal harus sama dengan nilai atribut
debugPortdalam konfigurasi lampirkan . Contoh:CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
Tips Pemecahan Masalah: Saat men-debug aplikasi Go, aplikasi akan berhenti dan menunggu debugger dilampirkan. Lampirkan debugger agar layanan dapat dimulai.
Java
- Pastikan JVM diinstal di mesin Anda.
Mulai aplikasi Java dengan opsi berikut, dengan
debugPortberasal dari konfigurasi lampirkan.-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=
,quiet=y Misalnya, untuk memulai aplikasi Java dalam mode debug dan memproses koneksi di port
debugPort:ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
Pastikan Anda telah menginstal
vsdbg, debugger command line .NET Core dari Microsoft, di container Kubernetes.Contoh:
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /dbg/netcore/vsdbg
Menyiapkan konfigurasi lampirkan
Untuk melampirkan ke container yang dapat di-debug, Anda harus memiliki an
konfigurasi lampirkan
berjenis cloudcode.kubernetes.
Menambahkan file .vscode/launch.json
Jika project Anda tidak memiliki file launch.json di folder .vscode, Anda dapat menambahkannya menggunakan panel Debug.
Untuk membuka panel Debug, klik
Run and Debug
di Activity bar.Pilih Add Configuration dari menu drop-down.
Pilih Cloud Code: Kubernetes sebagai lingkungan.

Pilih opsi Attach to Kubernetes Pod.

Pilih bahasa pemrograman yang Anda gunakan.
Tindakan ini akan membuat dan membuka file
launch.jsonuntuk project Anda dan membuat konfigurasi lampirkan untuk Anda.Perbarui atribut konfigurasi dalam file
launch.jsonagar sesuai dengan atribut project Anda. Untuk mengetahui informasi selengkapnya tentang atribut konfigurasi, lihat Atribut konfigurasi.
Menambahkan konfigurasi lampirkan ke file .vscode/launch.json
Untuk menambahkan konfigurasi lampirkan baru ke file .vscode/launch.json yang ada:
- Buka file
launch.json. - Untuk memanggil Intellisense cuplikan, klik Add Configuration.
- Untuk menambahkan konfigurasi lampirkan, pilih cuplikan Cloud Code: Attach to Kubernetes Pod untuk bahasa yang Anda gunakan.
- Perbarui atribut dalam konfigurasi agar sesuai dengan atribut project Anda. Untuk mengetahui informasi selengkapnya tentang atribut konfigurasi, lihat Atribut konfigurasi.
Atribut konfigurasi
| Atribut | Deskripsi |
|---|---|
| debugPort | Port debug yang digunakan di container. |
| podSelector | Kumpulan pasangan nilai kunci yang digunakan untuk memilih pod debug. Untuk mengetahui informasi selengkapnya, lihat panduan tentang pemilih).
Contoh berikut menunjukkan podSelector:
"podSelector": {
"app": <deployment-name>
}
|
| localRoot | Jalur ke direktori lokal yang berisi program yang sedang di-debug. Default-nya adalah ${workspaceFolder}. |
| remoteRoot | Jalur absolut ke direktori jarak jauh yang berisi program yang sedang di-debug (di container Kubernetes). |
Melampirkan debugger ke pod Kubernetes
Cloud Code untuk VS Code mendukung pelampiran debugger ke pod Kubernetes untuk
Node.js, Python, Go, Java, dan .NET. Yang Anda butuhkan hanyalah
container yang dapat di-debug dan
konfigurasi lampirkan berjenis
cloudcode.kubernetes.
Untuk mengetahui informasi tentang perbedaan antara melampirkan ke pod Kubernetes dan men-debug aplikasi Kubernetes, lihat Perbedaan antara melampirkan debugger ke pod dan men-debug aplikasi Kubernetes.
Untuk melampirkan debugger ke pod Kubernetes, lakukan tugas berikut:
- Untuk membuka panel Debug, klik
Run and Debug
di Activity bar. Pilih dan luncurkan konfigurasi dengan menekan
F5.localhost:${debugPort}diteruskan port kedebugPortdi container saat proses debug.
Sesi proses debug kini berhasil disiapkan. Anda dapat melakukan tugas yang biasanya Anda lakukan saat men-debug kode lokal, seperti menetapkan breakpoint dan menelusuri kode.
Untuk memeriksa variabel dan info stack, gunakan Sidebar Debug. Untuk berinteraksi dengan sesi proses debug, gunakan Konsol Debug di debugger panel bawah.
Untuk mengakhiri sesi proses debug, klik
Berhenti
di Toolbar Debug.
Perbedaan antara melampirkan debugger ke pod dan men-debug aplikasi Kubernetes
| Melampirkan ke pod Kubernetes | Men-debug aplikasi Kubernetes |
|---|---|
| Men-debug satu pod Kubernetes. | Men-debug semua container yang dapat di-debug di aplikasi. |
| Aplikasi harus berjalan di pod Kubernetes sebelum proses debug. | Menjalankan aplikasi di cluster Kubernetes dan melampirkan debugger. |
Menggunakan konfigurasi (.vscode/launch.json) berjenis cloudcode.kubernetes dan permintaan attach.
|
Menggunakan konfigurasi (.vscode/launch.json) berjenis cloudcode.kubernetes dan permintaan launch.Untuk mengetahui informasi selengkapnya, lihat Konfigurasi peluncuran versus lampirkan. |
Contoh Konfigurasi:
{
"name": "Attach to Kubernetes Pod (NodeJS)",
"type": "cloudcode.kubernetes",
"request": "attach",
"language": "Node",
"debugPort": 9229,
"podSelector": {
"app": "hello-world"
},
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
|
Contoh Konfigurasi:
{
"name": "Run/Debug on Kubernetes",
"type": "cloudcode.kubernetes",
"request": "launch",
"skaffoldConfig": "${workspaceFolder}/skaffold.yaml",
"watch": true,
"cleanUp": true,
"portForward": true
}
|
| Konfigurasi ini tidak dapat digunakan untuk menjalankan aplikasi. | Konfigurasi ini dapat digunakan untuk menjalankan atau men-debug aplikasi. |
| Konfigurasi ini khusus untuk bahasa tertentu. | Konfigurasi ini tidak khusus untuk bahasa tertentu. |
| Tidak ada perintah khusus. | Perintah Debug on Kubernetes. |
| Mode smartwatch tidak tersedia, jadi setelah melakukan perubahan, Anda memulai ulang debugger secara manual. | Mode smartwatch memungkinkan Cloud Code memulai ulang debugger setelah Anda menyimpan perubahan. |
Langkah berikutnya
- Gunakan sinkronisasi file dan hot reload untuk mempercepat pengembangan.
- Menyiapkan a pengembangan berkelanjutan lingkungan di Cloud Code.
- Melihat log Kubernetes di Cloud Code.