Pengembangan InnerLoop menggunakan Cloud Workstation dengan NodeJS

1. Ringkasan

Lab ini menunjukkan fitur dan kemampuan yang dirancang untuk menyederhanakan alur kerja pengembangan bagi software engineer yang bertugas mengembangkan aplikasi NodeJS di lingkungan dalam container. Pengembangan container standar mengharuskan pengguna memahami detail container dan proses build container. Selain itu, developer biasanya harus menghentikan alurnya, keluar dari IDE mereka untuk menguji dan men-debug aplikasi di lingkungan jarak jauh. Dengan alat dan teknologi yang disebutkan dalam tutorial ini, developer dapat bekerja secara efektif dengan aplikasi dalam container tanpa perlu meninggalkan IDE mereka.

Yang akan Anda pelajari

Di lab ini, Anda akan mempelajari metode pengembangan dengan container di Google Cloud, termasuk:

  • Membuat aplikasi Nodejs awal
  • Mengonfigurasi aplikasi Nodejs untuk pengembangan container
  • Mengkodekan Layanan Istirahat CRUD sederhana
  • Men-deploy ke GKE
  • Men-debug status error
  • Menggunakan titik henti sementara / log
  • Melakukan deployment perubahan ke GKE
  • Opsional: Mengintegrasikan CloudSQL untuk persistensi backend

58a4cdd3ed7a123a.pngS

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (biasanya diidentifikasi sebagai PROJECT_ID). Jika Anda tidak menyukai ID yang dihasilkan, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloudshell Editor

Lab ini dirancang dan diuji agar dapat digunakan dengan Google Cloud Shell Editor. Untuk mengakses editor,

  1. akses project Google Anda di https://console.cloud.google.com.
  2. Di sudut kanan atas, klik ikon Cloud Shell Editor

8560cc8d45e8c112.pngS

  1. Panel baru akan terbuka di bagian bawah jendela
  2. Klik tombol Open Editor

9e504cb98a6a8005.pngS

  1. Editor akan terbuka dengan penjelajah di sebelah kanan dan editor di area tengah
  2. Panel terminal juga harus tersedia di bagian bawah layar
  3. Jika terminal TIDAK terbuka, gunakan kombinasi tombol `ctrl+` untuk membuka jendela terminal baru

Menyiapkan gcloud

Di Cloud Shell, tetapkan project ID dan region tempat Anda ingin men-deploy aplikasi. Simpan sebagai variabel PROJECT_ID dan REGION.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

Menyediakan infrastruktur yang digunakan dalam lab ini

Di lab ini, Anda akan men-deploy kode ke GKE dan mengakses data yang tersimpan di database CloudSQL. Skrip penyiapan di bawah menyiapkan infrastruktur ini untuk Anda.

  1. Download skrip penyiapan dan setel agar dapat dijalankan.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/setup_with_cw.sh
chmod +x setup_with_cw.sh
  1. Buka file setup_with_cw.sh dan edit nilai sandi yang saat ini disetel ke CHANGEME
  2. Jalankan skrip penyiapan untuk menyiapkan cluster GKE dan database CloudSQL yang akan Anda gunakan di lab ini
./setup_with_cw.sh &

Cluster Cloud Workstations

  1. Buka Cloud Workstations di Konsol Cloud. Tunggu hingga cluster berada dalam status READY.

305e1a3d63ac7ff6.pngS

Membuat Konfigurasi Workstations

  1. Jika sesi Cloud Shell Anda terputus, klik "Hubungkan kembali" lalu jalankan perintah "gcloud cli" untuk menetapkan project ID. Ganti contoh project id di bawah dengan project ID qwiklabs Anda sebelum menjalankan perintah.
gcloud config set project qwiklabs-gcp-project-id
  1. Download dan jalankan skrip di bawah di terminal untuk membuat konfigurasi Cloud Workstations.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
  1. Verifikasi hasilnya di bagian Konfigurasi. Perlu waktu 2 menit untuk bertransisi ke status SIAP.

c8f0b8662fdb827e.png

  1. Buka Cloud Workstations di Konsol dan buat instance baru.

a53adeeac81a78c8.png

  1. Ubah nama menjadi my-workstation dan pilih konfigurasi yang ada: codeoss-js.

675d83f30c1319df.pngS

  1. Verifikasi hasilnya di bagian Workstations.

bf67586e6695852.png

Luncurkan Workstation

  1. Memulai dan meluncurkan workstation. Butuh beberapa menit untuk memulai Workstation.

a9ad54f4b4b668e9.png

  1. Izinkan cookie pihak ketiga dengan mengklik ikon di kolom URL. 1b8923e2943f9bc4.pngS

fcf9405b6957b7d7.png

  1. Klik "Situs tidak berfungsi?".

36a84c0e2e3b85b.pngS

  1. Klik "Izinkan cookie".

2259694328628fba.png

  1. Setelah workstation diluncurkan, Anda akan melihat Code OSS IDE muncul. Klik "Tandai Selesai" di halaman Memulai di salah satu workstation IDE

94874fba9b74cc22.pngS

3. Membuat aplikasi awal Nodejs baru

Di bagian ini, Anda akan membuat aplikasi Nodejs baru.

  1. Buka Terminal baru.

c31d48f2e4938c38.png

  1. Di Cloud Shell, buat direktori baru dengan nama mynodejsapp
mkdir mynodejsapp

Klik tombol Izinkan jika Anda melihat pesan ini, sehingga Anda dapat menyalin dan menempel ke komputer.

58149777e5cc350a.png

  1. Ubah ke direktori ini dan buka sebagai ruang kerja. Tindakan ini akan memuat ulang editor dengan membuat konfigurasi Workspace dalam folder yang baru dibuat.
cd mynodejsapp && code-oss-cloud-workstations -r --folder-uri="$PWD"
  1. Buka terminal baru lagi. Instal Node dan NPM menggunakan NVM.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
        
        # This loads nvm bash_completion
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  

nvm install stable

nvm alias default stable

4. Membuat aplikasi awal baru

  1. Melakukan inisialisasi aplikasi

Buat file package.json dengan menjalankan perintah berikut

npm init
    Choose the `entry point: (index.js) src/index.js` and leave default values for the rest of the parameters. This will create the `package.json` file with following contents
{
  "name": "mynodejsapp",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  1. Menambahkan Titik Entri

Buka dan edit file package.json di IDE untuk menyertakan perintah mulai dalam skrip "start": "node src/index.js",. Setelah perubahan, skrip akan terlihat seperti cuplikan kode di bawah:

"scripts": {
    "start": "node src/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  1. Menambahkan Dependensi Express

Kode yang akan kita tambahkan juga menggunakan express. Jadi, mari kita tambahkan dependensi tersebut ke file package.json ini. Jadi, setelah semua perubahan, file package.json akan terlihat seperti yang ditunjukkan di bawah ini.

{
 "name": "mynodejsapp",
 "version": "1.0.0",
 "description": "",
 "main": "src/index.js",
 "scripts": {
   "start": "node src/index.js",
   "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "",
 "license": "ISC",
 "dependencies": {
   "express": "^4.17.3"
 }
}
  1. Membuat file index.js

Buat direktori sumber bernama src dengan memilih New Folder pada tampilan explorer.

eb507d48f283ce46.png

Membuat file src/index.js

3e3e6e6062e501fc.pngS

dengan kode berikut

const express = require('express');
const app = express();
const PORT = 8080;

app.get('/', (req, res) => {
    var message="Greetings from Node";
    res.send({ message: message });
  });

app.listen(PORT, () => {
  console.log(`Server running at: http://localhost:${PORT}/`);

});

Perhatikan bahwa PORT ditetapkan ke nilai 8080

Membuat Manifes

Skaffold menyediakan alat terintegrasi untuk menyederhanakan pengembangan container. Pada langkah ini, Anda akan melakukan inisialisasi Skaffold yang secara otomatis akan membuat file YAML kubernetes dasar. Jalankan perintah di bawah ini untuk memulai prosesnya.

Jalankan perintah berikut di terminal

skaffold init --generate-manifests

Saat diminta:

  • Masukkan 8080 untuk port
  • Masukkan y untuk menyimpan konfigurasi

Dua file ditambahkan ke {i>workspace viz<i}, skaffold.yaml dan deployment.yaml

Perbarui nama aplikasi

Nilai default yang disertakan dalam konfigurasi saat ini tidak cocok dengan nama aplikasi Anda. Update file untuk mereferensikan nama aplikasi Anda, bukan nilai default.

  1. Mengubah entri dalam konfigurasi Skaffold
  • Buka skaffold.yaml
  • Pilih nama gambar yang saat ini ditetapkan sebagai package-json-image
  • Klik kanan dan pilih Change All Occurrences
  • Ketik nama baru sebagai mynodejsapp
  1. Mengubah entri dalam konfigurasi Kubernetes
  • Buka file deployment.yaml
  • Pilih nama gambar yang saat ini ditetapkan sebagai package-json-image
  • Klik kanan dan pilih Change All Occurrences
  • Ketik nama baru sebagai mynodejsapp

Perhatikan bahwa di file skaffold.yaml, bagian build menggunakan buildpacks untuk menyimpan aplikasi dalam container. Kode ini tidak memiliki Dockerfile dan developer tidak memerlukan pengetahuan Docker untuk memasukkan aplikasi ini ke dalam container.

Selain itu, hot sync otomatis diaktifkan antara editor dan container yang sedang berjalan oleh konfigurasi skaffold ini. Tidak diperlukan konfigurasi tambahan untuk mengaktifkan hot sync.

5. Menjalani proses pengembangan

Di bagian ini, Anda akan memandu beberapa langkah menggunakan plugin Cloud Code untuk mempelajari proses dasar serta memvalidasi konfigurasi dan penyiapan aplikasi awal.

Cloud Code terintegrasi dengan skaffold untuk menyederhanakan proses pengembangan Anda. Saat Anda men-deploy ke GKE dalam langkah-langkah berikut, Cloud Code dan Skaffold akan otomatis membangun image container Anda, mengirimkannya ke Container Registry, lalu men-deploy aplikasi Anda ke GKE. Hal ini terjadi di balik layar yang mengabstraksi detail dari alur developer. Cloud Code juga meningkatkan proses pengembangan Anda dengan menyediakan kemampuan hotsync dan debug tradisional untuk pengembangan berbasis container.

Login ke Google Cloud

  1. Klik ikon Cloud Code dan pilih "Sign in to Google Cloud":

1769afd39be372ff.pngS

  1. Klik "Lanjutkan login".

923bb1c8f63160f9.pngS

  1. Periksa output di Terminal dan buka link:

517fdd579c34aa21.pngS

  1. Login dengan kredensial siswa Qwiklabs Anda.

db99b345f7a8e72c.png

  1. Pilih "Izinkan":

a5376553c430ac84.png

  1. Salin kode verifikasi dan kembali ke tab Workstation.

6719421277b92eac.pngS

  1. Tempelkan kode verifikasi dan tekan Enter.

e9847cfe3fa8a2ce.png

Tambahkan Cluster Kubernetes

  1. Menambahkan Cluster

62a3b97bdbb427e5.pngS

  1. Pilih Google Kubernetes Engine:

9577de423568bbaa.pngS

  1. Pilih project.

c5202fcbeebcd41c.png

  1. Pilih "mycluster" yang dibuat di penyiapan awal.

33863e94d1c5045f.pngS

  1. Cluster ini sekarang muncul di daftar cluster Kubernetes di bagian Cloud Code. Jelajahi dan jelajahi cluster dari sini.

7e5f50662d4eea3c.pngS

Tetapkan ID project saat ini menggunakan gcloud cli

  1. Salin project ID untuk lab ini dari halaman qwiklabs.

fcff2d10007ec5bc.png

  1. Dari terminal, jalankan perintah gcloud cli untuk menetapkan project ID. Ganti contoh project id sebelum menjalankan perintah. GANTI ID project sebelum menjalankan perintah di bawah.
gcloud config set project qwiklabs-gcp-project-id

Men-deploy ke Kubernetes

  1. Pada panel di bagian bawah Cloud Shell Editor, pilih Cloud Code ✔

c5dd5a749136407b.png

  1. Di panel yang muncul di bagian atas pada SESI PENGEMBANGAN, pilih Jalankan di Kubernetes. Jika diminta, pilih Ya untuk menggunakan konteks Kubernetes saat ini.

7da53b9480e8eb0d.pngS

  1. Saat pertama kali Anda menjalankan perintah, sebuah {i>prompt<i} akan muncul di bagian atas layar yang menanyakan apakah Anda menginginkan konteks kubernetes saat ini, pilih "Yes" untuk menerima dan menggunakan konteks saat ini.

a6e58a7f0d117391.png

  1. Selanjutnya, akan muncul perintah yang menanyakan container registry yang akan digunakan. Tekan enter untuk menerima nilai default yang diberikan

13236a26c8dbe84f.pngS

  1. Pilih tab Output di panel bawah dan Kubernetes: Run/Debug di menu dropdown untuk melihat progres dan notifikasi

606ff9cdebc03dff.pngS

  1. Pilih "Kubernetes: Run/Debug - Terperinci" di menu drop-down saluran di sebelah kanan untuk melihat detail tambahan dan log yang melakukan streaming langsung dari penampung

ab45d2574f4f2478.png

  1. Kembali ke tampilan yang disederhanakan dengan memilih "Kubernetes: Run/Debug" dari menu dropdown
  2. Saat build dan pengujian selesai, tab Output akan menampilkan: Resource deployment/mynodejsapp status completed successfully, dan URL akan tercantum: "Forwarded URL from service demo-app: http://localhost:8080"
  3. Di terminal Cloud Code, arahkan kursor ke URL di output (http://localhost:8080), lalu di ujung alat yang muncul, pilih Ikuti Link.

Responsnya adalah:

{"message":"Greetings from Node"}

Hot Reload

  1. Buka src/index.js Edit kode pesan salam untuk 'Hello from Node'

Perhatikan segera bahwa di jendela Output, tampilan Kubernetes: Run/Debug, watcher menyinkronkan file yang diupdate dengan container di Kubernetes

Update initiated
File sync started for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
File sync succeeded for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Update succeeded
  1. Jika beralih ke tampilan Kubernetes: Run/Debug - Detailed, Anda akan melihat kode ini mengenali perubahan file dan memulai ulang node
files modified: [src/index.js]
Copying files:map[src/index.js:[/workspace/src/index.js]]togcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Syncing 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Watching for changes...
[mynodejsapp]
[mynodejsapp]> mynodejsapp@1.0.0 start /workspace
[mynodejsapp]> node src/index.js
[mynodejsapp]
[mynodejsapp]Server running at: http://localhost:8080/
  1. Refresh browser Anda untuk melihat hasil yang diperbarui.

Proses Debug

  1. Buka tampilan Debug dan hentikan thread saat ini 647213126d7a4c7b.png.
  2. Klik Cloud Code di menu bawah dan pilih Debug on Kubernetes untuk menjalankan aplikasi dalam mode debug.

dbd0c6cfd9e9d0e9.png

  • Dalam tampilan Kubernetes Run/Debug - Detailed di jendela Output, perhatikan bahwa skaffold akan men-deploy aplikasi ini dalam mode debug.
  • Aplikasi akan membutuhkan waktu beberapa menit untuk dibangun dan di-deploy. Anda akan melihat debugger terpasang kali ini.
Port forwarding pod/mynodejsapp-6bbcf847cd-vqr6v in namespace default, remote port 9229 -> http://127.0.0.1:9229
[mynodejsapp]Debugger attached.
  1. Status bar bawah berubah warnanya dari biru menjadi oranye yang menunjukkan bahwa status bar berada dalam mode Debug.

d1224f12cd659995.png

  1. Dalam tampilan Kubernetes Run/Debug, perhatikan bahwa penampung yang dapat di-debug dimulai
**************URLs*****************
Forwarded URL from service mynodejsapp-service: http://localhost:8080
Debuggable container started pod/mynodejsapp-deployment-6bc7598798-xl9kj:mynodejsapp (default)
Update succeeded
***********************************

Memanfaatkan Breakpoint

  1. Buka src/index.js
  2. Cari pernyataan yang bertuliskan var message="Hello from Node";
  3. Tambahkan titik henti sementara ke baris tersebut dengan mengklik ruang kosong di sebelah kiri nomor baris. Indikator merah akan muncul untuk mencatat titik henti sementara yang telah disetel
  4. Muat ulang browser Anda dan perhatikan bahwa debugger menghentikan proses pada titik henti sementara sehingga Anda dapat menyelidiki variabel dan status aplikasi yang berjalan dari jarak jauh di GKE
  5. Klik bagian variabel hingga Anda menemukan variabel "message".
  6. Jalankan baris dengan menekan Step over 7cfdee4fd6ef5c3a.pngS
  7. Amati nilai saat ini dari perubahan variabel "message" menjadi "Hello from Node"
  8. Klik dua kali nama variabel "target" Di jendela pop-up, ubah nilai ke nilai lain seperti "Hi from Node"
  9. Klik tombol Lanjutkan pada panel kontrol debug
  10. Tinjau respons di browser Anda yang kini menampilkan nilai terbaru yang baru saja Anda masukkan.
  11. Menghentikan "Debug" mode dengan menekan tombol berhenti 647213126d7a4c7b.png dan menghapus titik henti sementara dengan mengklik titik henti sementara lagi.

6. Mengembangkan Layanan Istirahat CRUD yang sederhana

Pada tahap ini, aplikasi Anda telah dikonfigurasi sepenuhnya untuk pengembangan dalam container dan Anda telah mempelajari alur kerja pengembangan dasar dengan Cloud Code. Di bagian berikut, Anda akan mempraktikkan hal-hal yang telah Anda pelajari dengan menambahkan endpoint layanan REST yang terhubung ke database terkelola di Google Cloud.

Mengonfigurasi Dependensi

Kode aplikasi menggunakan database untuk mempertahankan data layanan lainnya. Pastikan dependensi tersedia dengan menambahkan berikut ini dalam file package.json

  1. Tambahkan dua dependensi lagi pg dan sequelize ke file package.json untuk membangun Postgres aplikasi CRUD. Bagian dependensi postingan akan terlihat seperti ini.
    "dependencies": {
    "express": "^4.17.3",
    "pg": "^8.8.0",
    "sequelize": "^6.25.7"
  }

Membuat kode layanan REST

  1. Tambahkan kode aplikasi CRUD ke aplikasi ini
wget -O app.zip https://github.com/GoogleCloudPlatform/container-developer-workshop/raw/main/labs/nodejs/app.zip

unzip app.zip

Kode ini memiliki

  • Folder models dengan model entity untuk item
  • Folder controllers dengan kode yang melakukan operasi CRUD
  • Folder routes yang merutekan pola URL tertentu ke panggilan yang berbeda
  • Folder config dengan detail konektivitas database
  1. Perhatikan bahwa konfigurasi database dalam file db.config.js mengacu pada variabel lingkungan yang harus disediakan agar dapat terhubung ke database. Anda juga perlu mengurai permintaan yang masuk untuk encoding URL.
  2. Tambahkan cuplikan kode berikut di src/index.js agar dapat terhubung ke kode CRUD dari file JavaScript utama Anda tepat sebelum bagian terakhir yang dimulai dengan app.listen(PORT, () => {
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(
 bodyParser.urlencoded({
   extended: true,
 })
)
const db = require("../app/models");
db.sequelize.sync();
require("../app/routes/item.routes")(app);
  1. Edit deployment dalam file deployment.yaml untuk menambahkan variabel lingkungan guna memberikan informasi konektivitas Database.

Update entri spesifikasi di akhir file agar sesuai dengan definisi berikut

    spec:
      containers:
      - name: mynodejsapp
        image: mynodejsapp
        env:
        - name: DB_HOST
          value: ${DB_INSTANCE_IP}        
        - name: DB_PORT
          value: "5432"  
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: username
        - name: DB_PASS
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: password
        - name: DB_NAME
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: database
  1. Ganti nilai DB_HOST dengan alamat Database Anda
export DB_INSTANCE_IP=$(gcloud sql instances describe mytest-instance \
    --format=json | jq \
    --raw-output ".ipAddresses[].ipAddress")

envsubst < deployment.yaml > deployment.new && mv deployment.new deployment.yaml

Men-deploy dan Validasi Aplikasi

  1. Di panel bagian bawah Cloud Shell Editor, pilih Cloud Code lalu pilih Debug on Kubernetes di bagian atas layar.
  2. Saat build dan pengujian selesai, tab Output menampilkan: Resource deployment/mynodejsapp status completed successfully, dan URL akan tercantum: "Forwarded URL from service mynodejsapp: http://localhost:8080"
  3. Tambahkan beberapa item.

Dari Terminal cloudshell, jalankan perintah di bawah ini

URL=localhost:8080
curl -X POST $URL/items -d '{"itemName":"Body Spray", "itemPrice":3.2}' -H "Content-Type: application/json"
curl -X POST $URL/items -d '{"itemName":"Nail Cutter", "itemPrice":2.5}' -H "Content-Type: application/json"
  1. Uji GET dengan menjalankan $URL/items di browser. Anda juga dapat menjalankan curl dari command line
curl -X GET $URL/items
  1. Test Delete: Sekarang coba hapus item dengan menjalankan perintah di bawah. Ubah nilai item-id jika diperlukan.
curl -X DELETE $URL/items/1
    This throws an error message
{"message":"Could not delete Item with id=[object Object]"}

Mengidentifikasi dan memperbaiki masalah

  1. Aplikasi berjalan dalam mode Debug. Jadi, gunakan titik henti sementara untuk menemukan masalah. Berikut ini beberapa tips:
  • Kami tahu ada yang salah dengan DELETE karena tidak menampilkan hasil yang diinginkan. Jadi, Anda akan menetapkan titik henti sementara dalam metode itemcontroller.js->exports.delete.
  • Jalankan eksekusi langkah demi langkah dan amati variabel di setiap langkah untuk mengamati nilai variabel lokal di jendela kiri.
  • Untuk mengamati nilai tertentu seperti request.params, tambahkan variabel ini ke jendela Tonton.
  1. Perhatikan bahwa nilai yang ditetapkan ke id adalah undefined. Ubah kode untuk memperbaiki masalah.

Cuplikan kode tetap akan terlihat seperti ini.

// Delete a Item with the specified id in the request
exports.delete = (req, res) => {
    const id = req.params.id;
  1. Setelah aplikasi dimulai ulang, uji lagi dengan mencoba menghapusnya.
  2. Hentikan sesi proses debug dengan mengklik kotak merah di toolbar debug 647213126d7a4c7b.png

7. Pembersihan

Selamat! Di lab ini, Anda telah membuat aplikasi Nodejs baru dari awal dan mengonfigurasinya agar berfungsi dalam mode deployment hot dengan container. Kemudian, Anda telah men-deploy dan men-debug aplikasi ke cluster GKE jarak jauh dengan mengikuti alur developer yang sama dengan yang ada di stack aplikasi tradisional.

Untuk melakukan pembersihan setelah menyelesaikan lab:

  1. Menghapus file yang digunakan dalam lab
cd ~ && rm -rf mynodejsapp && rm -f setup.sh
  1. Menghapus project untuk menghapus semua infrastruktur dan resource terkait