Untuk mempercepat pengembangan lokal di Cloud Code for IntelliJ, manfaatkan sinkronisasi file dan penggantian modul secara cepat, deployment otomatis saat penyimpanan, 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 membangun ulang, men-deploy ulang, dan memulai ulang pod, Skaffold mendukung penyalinan file yang diubah ke container yang di-deploy. Artinya, saat membuat perubahan pada file kode statis dan sumber, Anda dapat melihat perubahan yang diterapkan dalam hitungan detik, sehingga mempercepat siklus proses masukan.
Untuk file statis (seperti file HTML dan CSS), perilaku penyalinan file ini disebut sinkronisasi file.
Untuk file kode sumber, perilaku ini disebut sebagai pemuatan ulang cepat 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 cepat akan memicu pembangunan ulang image dan memulai ulang pod.
Penyinkronan file otomatis dan hot reload diaktifkan secara default saat Anda menggunakan Buildpack sebagai builder pilihan. 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 (sesuai urutan preferensi):
auto
: Skaffold otomatis mengonfigurasi sinkronisasi. (hanya untuk artefak Jib dan Buildpacks). Ini adalah nilai 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.
Bagian sync
contoh 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 sinkronisasi file dan menentukan aturan sinkronisasi, lihat panduan Skaffold tentang sinkronisasi file.
Menambahkan fitur baru saat mengembangkan di Kubernetes
Setelah menyiapkan sinkronisasi file dan pemuatan ulang cepat, mulai siklus iterasi dan tambahkan lebih banyak fitur ke project Anda. Perubahan Anda di-deploy ke cluster Kubernetes tanpa menghentikan dan menghapus deployment, membuat dan memberi tag pada image secara manual, atau mengupdate cluster.
Siklus iterasi standar terlihat seperti berikut:
Buat perubahan dalam project Anda. Misalnya, jika menggunakan aplikasi Buku Tamu Cloud Code Java, tambahkan endpoint baru ke class
FrontendController
sebagai berikut:Buka file
FrontendController.java
darisrc/main/java/cloudcode/guestbook/frontend
, lalu tambahkan berikut ini:@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 buat project.Anda dapat melihat progres dan log deployment di jendela konsol. Setelah perubahan di-deploy, konfirmasi pembaruan.
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-bagian terpisah secara independen untuk menyederhanakan proses pen-debug-an 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
sampel 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 mencakup dependensi konfigurasisetup
.Untuk menentukan dependensi, tambahkan kode berikut ke file
skaffold.yaml
Anda 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 membuat setiap modul Skaffold secara terpisah untuk memastikan bahwa modul tersebut di-deploy dengan dependensinya dengan mengikuti langkah-langkah di Membangun modul Skaffold tertentu dan dependensinya.
Membangun modul Skaffold tertentu dan dependensinya
Setelah menentukan modul dan dependensinya, Anda dapat menentukan modul yang ingin dijalankan di tab Build / Deploy saat memilih Run > Edit configurations.Instal build Insider terbaru.
Buka Run > Edit configurations dan buka tab Build / Deploy.
Untuk Konfigurasi Skaffold, pilih skaffold.yaml.
Pilih salah satu opsi berikut:
- Membangun dan men-deploy dengan semua modul dan dependensi
- Build and deploy with (jika modul tersedia) dan pilih modul yang ingin Anda buat dan deploy.
Pilihan Anda akan tetap berlaku untuk deployment berikutnya. Jika Anda memilih subset modul, Cloud Code akan menampilkan peringatan tentang men-deploy subset modul, bukan seluruh sistem.
Pengembangan berkelanjutan di Kubernetes
Setelah mengonfigurasi target eksekusi dengan opsi yang diinginkan, Anda dapat memilih eksekusi reguler aplikasi atau memulai siklus iterasi pengembangan di IDE untuk menyebarkan perubahan yang dilakukan pada sumber dan dependensi ke aplikasi aktif.
Target eksekusi Develop on Kubernetes memulai siklus pengembangan di cluster Kubernetes Anda. Setelah Anda memulai siklus pengembangan, Cloud Code, menggunakan Skaffold, membangun image untuk project, lalu menandainya, mengirimkannya ke repositori yang dikonfigurasi, dan menggunakan kubectl untuk men-deploy manifes Kubernetes project.
- Klik ikon Develop on Kubernetes, lalu klik Edit Configurations untuk membuka dialog Run/Debug Configurations.
- Sesuaikan deployment Anda menggunakan opsi konfigurasi yang tersedia.
- Jika Anda ingin Cloud Code men-deploy ulang aplikasi Anda secara otomatis setelah perubahan Anda disimpan, di bagian Watch mode - rebuild and redeploy, pilih On file save. Aplikasi Kubernetes baru memiliki opsi Sesuai permintaan yang dipilih secara default. Untuk mengetahui informasi selengkapnya tentang mode smartwatch, lihat Mode smartwatch.
- Jika aplikasi Anda dikonfigurasi untuk menggunakan modul Skaffold, Anda dapat memilih untuk hanya membangun atau men-deploy modul tertentu.
- Setelah puas dengan konfigurasi Anda, klik OK, lalu klik ikon Run.
Langkah berikutnya
- Gunakan cluster minikube bawaan Cloud Code untuk pengembangan lokal.
- Men-debug aplikasi Anda di Cloud Code
- Baca detail tentang fitur sinkronisasi file Skaffold