Untuk mempercepat pengembangan lokal di Cloud Code untuk Cloud Shell, manfaatkan sinkronisasi file dan hot reload, deployment otomatis saat menyimpan, dan gunakan modul Skaffold untuk mengembangkan bagian aplikasi secara terpisah.
Mengaktifkan sinkronisasi file dan hot reload Skaffold
Untuk meningkatkan efisiensi alur kerja pengembangan lokal dan menghindari harus mem-build ulang, men-deploy ulang, dan memulai ulang pod, Skaffold mendukung penyalinan file yang diubah ke penampung yang di-deploy. Artinya, saat Anda membuat perubahan pada file kode statis dan sumber, Anda dapat melihat perubahan tersebut diterapkan dalam hitungan detik, sehingga menghasilkan loop masukan yang dipercepat.
Untuk file statis (seperti file HTML dan CSS), perilaku penyalinan file ini disebut sinkronisasi file.
Untuk file kode sumber, perilaku ini disebut sebagai hot reload dan mendukung jenis file berikut:
- Go: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj
- NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json
Dengan hot reload yang dikonfigurasi, Skaffold mendeteksi perubahan pada file yang didukung dan menyinkronkan perubahan ini ke penampung yang berjalan di cluster Anda. Perubahan pada jenis file yang tidak mendukung pemuatan ulang panas akan memicu pembuatan ulang image dan mulai ulang pod.
Sinkronisasi file otomatis dan hot reload diaktifkan secara default saat Anda
menggunakan Buildpack sebagai builder pilihan Anda. Untuk builder lain seperti
Docker, Anda dapat menentukan bagian sync
dalam file skaffold.yaml
untuk
artefak yang Anda sesuaikan.
Setelan sinkronisasi Anda dapat berupa salah satu dari (dalam urutan preferensi):
auto
: Skaffold otomatis mengonfigurasi sinkronisasi. (hanya untuk artefak Jib dan Buildpack.) Ini adalah default untuk Buildpack.infer
: Tujuan untuk setiap file yang diubah disimpulkan dari builder.manual
: Anda harus menentukan file di ruang kerja lokal dan tujuannya di penampung yang sedang berjalan.
Contoh bagian sync
berikut dalam file skaffold.yaml
menentukan
sinkronisasi manual
untuk menyinkronkan semua file HTML /static-html
ke folder
static
dalam penampung:
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
Untuk melihat detail tentang sinkronisasi file dan menentukan aturan sinkronisasi, lihat panduan Skaffold tentang sinkronisasi file.
Menambahkan fitur baru saat mengembangkan di Kubernetes
Setelah menyiapkan sinkronisasi file dan hot reload, mulai siklus iterasi dan tambahkan fitur lainnya ke project Anda. Perubahan Anda di-deploy ke cluster Kubernetes tanpa menghentikan dan menghapus deployment, mem-build dan memberi tag pada image secara manual, atau mengupdate cluster.
Siklus iterasi standar menyerupai hal berikut:
Buat perubahan pada project Anda. Misalnya, jika menggunakan aplikasi Buku Tamu Java Cloud Code, tambahkan endpoint baru ke class
FrontendController
sebagai berikut:Buka file
FrontendController.java
darisrc/main/java/cloudcode/guestbook/frontend
dan tambahkan hal berikut:@RequestMapping("/greeting") @ResponseBody public String greeting(@RequestParam(value="name", defaultValue="World") String name) { return String.format("Hello from Kubernetes with IntelliJ, %s!", name); }
Tambahkan impor yang diperlukan untuk anotasi baru,
RequestMapping
, danResponseBody
.
Simpan perubahan Anda (
Ctrl
/Cmd+S
) atau build project.Anda dapat melihat log progres dan deployment di jendela konsol. Setelah perubahan di-deploy, konfirmasi update.
Untuk mengakhiri sesi pengembangan berkelanjutan, klik ikon Berhenti.
Cloud Code menghapus semua resource Kubernetes yang digunakan untuk sesi pengembangan.
Mengembangkan aplikasi microservice menggunakan konfigurasi Skaffold
Saat mengembangkan aplikasi microservice, sebaiknya kerjakan bagian terpisah secara independen untuk menyederhanakan proses debug dan deployment.
Anda dapat mengembangkan dan men-debug bagian aplikasi secara terpisah dengan membagi
aplikasi menjadi modul Skaffold. Misalnya, contoh
Bank of Anthos
adalah aplikasi yang berisi sepuluh microservice. File
skaffold.yaml
contoh mengelompokkan layanan ini ke dalam lima modul skaffold bernama setup
, db
,
frontend
, backend
, dan loadgenerator
.
Menentukan modul Skaffold dan dependensi konfigurasi
Untuk menentukan modul Skaffold dan dependensi konfigurasi:
Buka project tempat Anda ingin menentukan modul.
Buka file
skaffold.yaml
.Jika file
skaffold.yaml
Anda memiliki beberapa konfigurasi, untuk menjadikan konfigurasi sebagai modul Skaffold, tentukan baris berikut:metadata: name: MODULE_NAME_1
Misalnya, di
skaffold.yaml
Bank of Anthos, moduldb
menentukan deployment database:Untuk konfigurasi yang mengandalkan konfigurasi lain yang di-deploy sebelum konfigurasi saat ini dapat di-deploy, Anda harus menambahkan konfigurasi ke dependensi. Untuk menentukan dependensi konfigurasi, tambahkan daftar
configs
ke bagianrequires
fileskaffold.yaml
Anda.Misalnya, file
skaffold.yaml
Bank of Anthos menyertakan dependensi konfigurasisetup
.Untuk menentukan dependensi, tambahkan kode berikut ke file
skaffold.yaml
dengan DEPENDENCY_NAME adalah nama dependensi Anda.requires: - configs: DEPENDENCY_NAME
Konfigurasi yang tercantum dengan cara ini dapat mereferensikan dependensi yang ditentukan dalam file yang sama atau file
skaffold.yaml
lainnya dalam project saat ini.Uji dependensi konfigurasi Anda dengan mem-build setiap modul Skaffold secara terpisah untuk memastikan bahwa modul tersebut di-deploy dengan dependensi dengan mengikuti langkah-langkah di Mem-build modul Skaffold tertentu dan dependensinya.
Mem-build modul Skaffold tertentu dan dependensinya
Setelah menentukan modul dan dependensinya, Anda dapat menentukan modul mana yang ingin dijalankan dengan kode cloud dalam file launch.json
.
Jika project Anda tidak memiliki file launch.json
yang ditentukan, saat menjalankan Cloud
Code: Run on Kubernetes atau Cloud Code: Debug on Kubernetes, Anda akan
diminta untuk memilih modul yang akan di-build:
- Buka Command Palette (
Ctrl
/Cmd
+Shift
+P
), lalu jalankan Cloud Code: Run on Kubernetes. - Klik Select modules.
- Pilih modul yang ingin Anda deploy, lalu klik OK. Setiap modul di-build dengan dependensinya.
- Saat diminta, pilih registry image, lalu tekan
Enter
.
Jika project Anda memiliki launch.json
, ikuti langkah-langkah berikut untuk memilih modul Skaffold
yang akan di-build:
Buka file
launch.json
project Anda.Edit konfigurasi peluncuran untuk menambahkan opsi
skaffoldFlags
dengan daftarmodules
yang dipisahkan koma untuk dibuat. JikaskaffoldFlags
dihilangkan, semua modul akan di-build.{ "name": "Run on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "skaffoldFlags": { "modules": ["MODULE_NAME_2,MODULE_NAME_2"], "watch": true, "cleanUp": true, } }
Jalankan konfigurasi peluncuran yang Anda edit.
Pengembangan berkelanjutan di Kubernetes
Setelah mengonfigurasi target run dengan opsi yang diinginkan, Anda dapat memilih untuk menjalankan aplikasi secara rutin atau memulai siklus iterasi pengembangan di IDE untuk menyebarkan perubahan apa pun yang dilakukan pada sumber dan dependensi ke aplikasi live.
Target run Run on Kubernetes memulai siklus pengembangan di cluster Kubernetes Anda. Setelah Anda memulai siklus pengembangan, Cloud Code, menggunakan Skaffold, akan mem-build image untuk project, lalu memberi tag, mengirimkannya ke repositori yang dikonfigurasi, dan menggunakan kubectl untuk men-deploy manifes Kubernetes project.
- Sesuaikan deployment Anda menggunakan opsi konfigurasi yang tersedia.
- Jika aplikasi Anda dikonfigurasi untuk menggunakan modul Skaffold, Anda dapat memilih modul tertentu untuk di-build atau di-deploy.
- Buka Command Palette (tekan
Ctrl
/Cmd
+Shift
+P
), lalu jalankan perintah Cloud Code: Run on Kubernetes. - Konfirmasi apakah akan menggunakan konteks Kubernetes saat ini untuk menjalankan aplikasi (atau beralih ke konteks yang diinginkan). Untuk informasi selengkapnya tentang menyiapkan konteks Kubernetes, lihat menyiapkan konfigurasi.
Jika Anda memilih cluster jarak jauh sebagai konteks, saat diminta, pilih registry gambar tempat gambar akan di-push. Jika menggunakan Container Registry, Anda dapat membuka registry yang ada atau menentukan nama registry yang akan dibuat. Jika project Anda telah mengaktifkan Artifact Registry API dan setidaknya satu repositori Artifact Registry, Anda dapat menjelajahi dan memilih repositori Artifact Registry yang ada.
Cloud Code mem-build container Anda, mengirimkannya ke registry, menerapkan konfigurasi Kubernetes ke cluster, dan menunggu peluncuran.
Langkah selanjutnya
- Gunakan cluster minikube bawaan Cloud Code untuk pengembangan lokal.
- Men-debug aplikasi di Cloud Code
- Baca detail tentang fitur sinkronisasi file Skaffold