Mempercepat pengembangan di Cloud Code untuk IntelliJ

Untuk mempercepat pengembangan lokal di Cloud Code for IntelliJ, 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:

  1. Buat perubahan pada project Anda. Misalnya, jika menggunakan aplikasi Buku Tamu Java Cloud Code, tambahkan endpoint baru ke class FrontendController sebagai berikut:

    1. Buka file FrontendController.java dari src/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);
      }
      
    2. Tambahkan impor yang diperlukan untuk anotasi baru, RequestMapping, dan ResponseBody.

  2. 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.

  3. 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:

  1. Buka project tempat Anda ingin menentukan modul.

  2. Buka file skaffold.yaml.

  3. 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, modul db menentukan deployment database:

    apiVersion: skaffold/v3
    kind: Config
    metadata:
      name: db # module defining database deployments
    requires:
    - configs:
      - setup
    build:
      artifacts:
      - image: accounts-db
        context: src/accounts-db
      - image: ledger-db
        context: src/ledger-db
    manifests:
      rawYaml:
      - dev-kubernetes-manifests/accounts-db.yaml
      - dev-kubernetes-manifests/ledger-db.yaml
    deploy:
      kubectl: {}
  4. 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 bagian requires file skaffold.yaml Anda.

    Misalnya, file skaffold.yaml Bank of Anthos menyertakan dependensi konfigurasi setup.

    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.

  5. 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 yang ingin dijalankan di tab Build / Deploy saat memilih Run > Edit configurations.

  1. Instal build Insiders terbaru.

  2. Buka Run > Edit configurations, lalu buka tab Build / Deploy.

  3. Untuk Konfigurasi Skaffold, pilih skaffold.yaml.

    Pilih salah satu opsi berikut:

    • Mem-build dan men-deploy dengan semua modul dan dependensi
    • Build and deploy with (jika modul tersedia) dan pilih modul yang ingin Anda build dan deploy.

Pilihan Anda akan tetap ada untuk deployment berikutnya. Jika Anda memilih subset modul, Cloud Code akan menampilkan peringatan tentang deployment subset modul, bukan seluruh sistem.

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 Develop 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.

  1. Klik ikon Develop on Kubernetes, lalu klik Edit Configurations untuk membuka dialog Run/Debug Configurations.
  2. Sesuaikan deployment Anda menggunakan opsi konfigurasi yang tersedia.
  3. Jika Anda ingin Cloud Code men-deploy ulang aplikasi secara otomatis setelah perubahan disimpan, di bagian Mode smartwatch - build ulang dan deploy ulang, pilih Saat file disimpan. Aplikasi Kubernetes baru memiliki On demand yang dipilih secara default. Untuk mengetahui informasi selengkapnya tentang mode smartwatch, lihat Mode smartwatch.
  4. Jika aplikasi Anda dikonfigurasi untuk menggunakan modul Skaffold, Anda dapat memilih untuk hanya mem-build atau men-deploy modul tertentu.
  5. Setelah puas dengan konfigurasi Anda, klik OK, lalu klik ikon Run.

Langkah selanjutnya

Mendapatkan dukungan

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