Memasukkan aplikasi Kotlin Spring Boot ke dalam container dan men-deploy-nya ke Cloud Run

1. Sebelum memulai

Google menyediakan alat build image yang canggih yang dapat Anda gunakan untuk membuat dan memublikasikan image container Docker yang dioptimalkan untuk aplikasi Java dengan mudah dalam waktu singkat tanpa Docker atau Dockerfile. Google Cloud juga menghadirkan serverless ke container dengan Cloud Run, platform komputasi terkelola yang otomatis menskalakan container stateless Anda. Dalam codelab ini, Anda akan melihat betapa mudahnya membuat container aplikasi Spring Boot Kotlin, memublikasikannya ke Container Registry, dan menjalankan image di Google Cloud dengan lancar.

Codelab ini memandu Anda menyiapkan aplikasi sederhana di Kotlin, yang menunjukkan penggunaan layanan dan alat Google Cloud, termasuk Jib, Container Registry, dan Cloud Run.

Prasyarat

  • Memahami bahasa dan alat pemrograman Java
  • Pengetahuan tentang editor teks Linux standar, seperti Vim, Emacs, dan nano

Yang akan Anda lakukan

  • Siapkan aplikasi Spring Boot Kotlin.
  • Bangun image Docker yang dioptimalkan.
  • Publikasikan image ke Container Registry.
  • Jalankan aplikasi dalam container di Cloud Run.

Yang Anda butuhkan

  • Project Google Cloud
  • Browser, seperti Google Chrome

2. Mempersiapkan

Penyiapan lingkungan mandiri

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.

Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 4292cbf4971c9786.png.

bce75f34b2c53987.png

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Continue (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

70f315d7b402b476.png

Perlu waktu beberapa saat untuk menyediakan dan terhubung ke Cloud Shell.

fbe3a0674c982259.png

Virtual machine ini dimuat dengan semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Menginisialisasi aplikasi Spring Boot

  1. Buat aplikasi Spring Boot baru dengan Spring Initializr.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

Perhatikan bahwa Initializr akan otomatis menambahkan spring-boot-starter-web ke dependensi Anda di pom.xml aplikasi template.

  1. Ubah ke direktori aplikasi template.
$ cd kotlin-jib-cloud-run
  1. Bangun dan jalankan aplikasi menggunakan Maven.
$ ./mvnw -DskipTests spring-boot:run
  1. Setelah dimulai, aplikasi akan mulai memproses di port 8080. Klik Web Preview 396bfd51f55afb5d.pngdi toolbar Cloud Shell dan pilih Preview on port 8080 untuk mengakses aplikasi.

4172e1e141daf0c1.png

  1. Anda akan mendapatkan respons 404 karena aplikasi belum melakukan apa pun yang berguna. Hentikan aplikasi dengan Control+C.

4. Menambahkan pengontrol web

  1. Buat class Controller berikut dalam paket demo:
$ vi src/main/kotlin/com/example/demo/Controller.kt
    or
$ nano src/main/kotlin/com/example/demo/Controller.kt

src/main/kotlin/com/example/demo/Controller.kt

package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class Controller {
  
  @GetMapping("/")
  fun saySomething(): String {
    return "Kotlin app on Cloud Run, containerized by Jib!"
  }
}
  1. Bangun ulang dan jalankan aplikasi.
$ ./mvnw spring-boot:run
  1. Periksa aplikasi lagi menggunakan Pratinjau Web a6cfcaa1d2119c52.png. Kali ini, Anda akan melihat pesan "Kotlin app on Cloud Run, containerized by Jib!". Hentikan aplikasi dengan Control+C.

5. Memasukkan aplikasi ke dalam container dan memublikasikannya ke Container Registry

Dengan Jib, Anda dapat memasukkan aplikasi ke dalam container secara optimal tanpa Docker dan memublikasikannya ke registry container mana pun.

  1. Sebelum melanjutkan, Anda harus mengaktifkan Container Registry API. Tindakan ini hanya perlu dilakukan sekali per project agar API dapat diakses.
$ gcloud services enable containerregistry.googleapis.com
  1. Jalankan Jib untuk membangun image Docker dan memublikasikannya ke Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

Pada akhirnya, Anda akan melihat pesan berikut yang menyatakan bahwa aplikasi telah dimasukkan ke dalam container dan dikirim ke Container Registry Anda.

[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run
...
[INFO] BUILD SUCCESS

Jika Anda melihat error, periksa kembali apakah $GOOGLE_CLOUD_PROJECT telah ditetapkan dengan benar ke project ID Google Cloud Anda (PROJECT_ID).

  1. Sebelum melanjutkan, periksa apakah gambar berhasil dipublikasikan. Kembali ke Konsol Cloud, klik Navigation menu c8b4ea3c68f4c1e3.png, lalu pilih Container Registry.

6421550ba806beab.png

38ae0ca573c3dcd.png

Anda akan melihat bahwa gambar Anda berhasil dipublikasikan.

c9086605411691c3.png

6. Menjalankan aplikasi dalam container di Cloud Run

Cloud Run menghadirkan serverless ke container, dengan menskalakan container stateless Anda secara otomatis.

  1. Klik Navigation menu c8b4ea3c68f4c1e3.png lagi, lalu pilih Cloud Run.

812c7c87527ebe4a.png

Jika ini adalah pertama kalinya Anda mengakses Cloud Run, Anda akan melihat dialog berikut untuk penyiapan satu kali. Klik Start Using Cloud Run jika muncul.

1b2bf05712f6150a.png

  1. Di halaman Cloud Run, klik Create Service.

c0b4b980662f7807.png

  1. Di layar berikutnya, klik Pilih di bagian Sumber. Sumbernya adalah image yang ingin Anda jalankan di Cloud Run.

2049621ae97d62ee.png

  1. Dialog akan menampilkan image yang Anda buat sebelumnya. Pilih gambar, lalu klik Lanjutkan.

564367bc65caefbf.png

  1. Anda hanya perlu beberapa klik untuk men-deploy aplikasi sekarang. Di bagian Platform deployment, pilih Cloud Run (terkelola sepenuhnya) agar layanan dikelola sepenuhnya di Google Cloud. Pilih region yang sesuai dengan lokasi Anda, pilih Izinkan pemanggilan yang tidak diautentikasi, lalu klik Buat. Selesai!

3eb0f51d15326cac.png

Setelah image di-deploy sepenuhnya, halaman Cloud Run akan menampilkan URL untuk mengakses aplikasi. Coba lihat!

8bf800dd6e2f44f2.png

Pada akhirnya, Anda akan melihat pesan yang Anda harapkan dari aplikasi.

Kotlin app on Cloud Run, containerized by Jib!

Selesai! Pada masa mendatang, jika perlu men-deploy versi aplikasi baru, Anda dapat melakukannya dengan mengklik Deploy Revisi Baru di halaman.

7. Pembersihan

  1. Untuk membersihkan lingkungan, Anda harus menghapus aplikasi yang di-deploy di Cloud Run dan image yang dipublikasikan di Container Registry. Buka Cloud Run, pilih aplikasi, lalu klik Delete.

1dfc2f51c1b5f6e.png

  1. Demikian pula, buka halaman Container Registry dan hapus image.

1b724136c1655935.png

8. Selamat

Selamat! Anda berhasil membuat aplikasi Spring Boot Kotlin dalam container dan men-deploy-nya ke Cloud Run.

Dengan Jib, Anda telah membangun image container yang dioptimalkan tanpa menginstal Docker atau menulis Dockerfile dan memublikasikannya ke Container Registry. Jib mengoptimalkan pembuatan image, sehingga siapa pun tanpa pengetahuan mendalam tentang Docker dapat membuat container aplikasi Java dengan cepat dan efisien. Kemudian, dengan beberapa klik, Anda men-deploy aplikasi ke Cloud Run untuk mulai melayani dalam waktu singkat.

Pelajari lebih lanjut