Mempercepat pengembangan di Cloud Code untuk VS Code

Untuk mempercepat pengembangan lokal di Cloud Code untuk VS Code, manfaatkan sinkronisasi file dan penggantian modul secara cepat, deployment otomatis saat penyimpanan, dan gunakan modul untuk mengembangkan bagian aplikasi secara terpisah.

Mengaktifkan sinkronisasi file dan hot reload

Untuk meningkatkan efisiensi alur kerja pengembangan lokal dan menghindari harus membangun ulang, men-deploy ulang, dan memulai ulang pod, Cloud Code 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 konfigurasi penggantian modul saat runtime, Cloud Code mendeteksi perubahan pada file yang didukung dan menyelaraskan perubahan ini ke container yang berjalan di cluster Anda. Perubahan pada jenis file yang tidak mendukung hot reload akan memicu pembangunan ulang image dan mulai 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 (berdasarkan urutan preferensi):

  • auto: Cloud Code 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 penentuan aturan sinkronisasi, lihat panduan Skaffold tentang sinkronisasi file.

Menambahkan fitur baru saat mengembangkan di Kubernetes

Setelah menyiapkan sinkronisasi file dan penggantian modul saat runtime, 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:

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

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

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

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

Saat mengembangkan aplikasi microservice, akan berguna untuk mengerjakan bagian-bagian terpisah secara independen untuk menyederhanakan proses penelusuran bug dan deployment.

Anda dapat mengembangkan dan men-debug bagian aplikasi secara independen dengan membagi aplikasi menjadi modul. Misalnya, contoh Bank of Anthos adalah aplikasi yang berisi sepuluh microservice. File skaffold.yaml sampel mengelompokkan layanan ini ke dalam lima modul bernama setup, db, frontend, backend, dan loadgenerator.

Menentukan dependensi modul dan konfigurasi

Untuk menentukan dependensi modul dan 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, 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 Anda. Untuk menentukan dependensi config, tambahkan daftar configs ke bagian requires file skaffold.yaml Anda.

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

    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.

  5. Uji dependensi konfigurasi Anda dengan membangun setiap modul secara terpisah untuk memastikan bahwa modul tersebut di-deploy dengan dependensinya dengan mengikuti langkah-langkah di Membangun modul tertentu dan dependensinya.

Membangun modul tertentu dan dependensinya

Setelah menentukan modul dan dependensinya, Anda dapat menentukan modul yang ingin dijalankan dengan kode cloud dalam file launch.json.

Jika project Anda tidak memiliki file launch.json yang ditentukan, saat Anda menjalankan Cloud Code: Run on Kubernetes atau Cloud Code: Debug on Kubernetes, Anda akan diminta untuk memilih modul yang akan dibuat:

  1. Buka Palet Perintah (Ctrl/Cmd+Shift+P), lalu jalankan Cloud Code: Run on Kubernetes.
  2. Klik Pilih modul.
  3. Pilih modul yang ingin Anda deploy, lalu klik OK. Setiap modul dibangun dengan dependensinya.
  4. Jika diminta, pilih image registry, lalu tekan Enter.

Jika project Anda memiliki launch.json, ikuti langkah-langkah berikut untuk memilih modul yang akan dibuat:

  1. Buka file launch.json project Anda.

  2. Edit konfigurasi peluncuran untuk menambahkan opsi skaffoldFlags dengan daftar modules yang dipisahkan koma untuk dibangun. Jika skaffoldFlags tidak disertakan, semua modul akan dibangun.

      {
        "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,
        }
      }
    
  3. Jalankan konfigurasi peluncuran yang Anda edit.

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 Run on Kubernetes memulai siklus pengembangan di cluster Kubernetes Anda. Setelah Anda memulai siklus pengembangan, Cloud Code akan membuat image untuk project, lalu memberi tag, mengirimkannya ke repositori yang dikonfigurasi, dan menggunakan kubectl untuk men-deploy manifes Kubernetes project.

  1. Sesuaikan deployment Anda menggunakan opsi konfigurasi yang tersedia.
  2. Jika aplikasi Anda dikonfigurasi untuk menggunakan modul, Anda dapat memilih modul tertentu untuk dibangun atau di-deploy.
  3. Buka Palet Perintah (tekan Ctrl/Cmd+Shift+P), lalu jalankan perintah Cloud Code: Run on Kubernetes.
  4. Konfirmasi apakah akan menggunakan konteks Kubernetes saat ini untuk menjalankan aplikasi (atau beralih ke konteks yang diinginkan). Untuk mengetahui informasi selengkapnya tentang cara menyiapkan konteks Kubernetes, lihat menyiapkan konfigurasi.
  5. Jika Anda memilih cluster jarak jauh sebagai konteks, saat diminta, pilih registry gambar untuk mengirimkan gambar. Jika project Anda telah mengaktifkan Artifact Registry API dan memiliki setidaknya satu repositori Artifact Registry, Anda dapat menjelajahi dan memilih repositori Artifact Registry yang ada.

    Cloud Code akan mem-build container Anda, mengirimkannya ke registry, menerapkan konfigurasi Kubernetes ke cluster, dan menunggu peluncuran.

Langkah berikutnya

Dapatkan Dukungan

Untuk mengirim masukan, laporkan masalah di GitHub, atau ajukan pertanyaan di Stack Overflow.