สร้างคอนเทนเนอร์แอป Spring Boot Kotlin แล้วทำให้ใช้งานได้ใน Cloud Run

Google มีเครื่องมือสร้างอิมเมจที่มีประสิทธิภาพซึ่งคุณสามารถใช้สร้างและเผยแพร่อิมเมจคอนเทนเนอร์ Docker ที่เพิ่มประสิทธิภาพสำหรับแอป Java ได้อย่างง่ายดายในเวลาอันรวดเร็วโดยไม่ต้องใช้ Docker หรือ Dockerfile นอกจากนี้ Google Cloud ยังนำเทคโนโลยีแบบไม่ใช้เซิร์ฟเวอร์มาใช้กับคอนเทนเนอร์ด้วย Cloud Run ซึ่งเป็นแพลตฟอร์มการประมวลผลที่มีการจัดการซึ่งจะปรับขนาดคอนเทนเนอร์แบบไม่เก็บสถานะโดยอัตโนมัติ ใน Codelab นี้ คุณจะได้เห็นว่าการทำแอป Spring Boot Kotlin ให้เป็นคอนเทนเนอร์ เผยแพร่ไปยัง Container Registry และเรียกใช้อิมเมจใน Google Cloud นั้นง่ายเพียงใด

Codelab นี้จะแนะนำขั้นตอนการตั้งค่าแอปอย่างง่ายใน Kotlin ซึ่งแสดงให้เห็นการใช้บริการและเครื่องมือของ Google Cloud รวมถึง Jib, Container Registry และ Cloud Run

ข้อกำหนดเบื้องต้น

  • ความคุ้นเคยกับภาษาโปรแกรมและเครื่องมือ Java
  • ความรู้เกี่ยวกับโปรแกรมแก้ไขข้อความมาตรฐานของ Linux เช่น Vim, Emacs และ nano

สิ่งที่คุณต้องดำเนินการ

  • ตั้งค่าแอป Spring Boot Kotlin
  • สร้างอิมเมจ Docker ที่ได้รับการเพิ่มประสิทธิภาพ
  • เผยแพร่รูปภาพไปยัง Container Registry
  • เรียกใช้แอปที่สร้างโดยใช้คอนเทนเนอร์ใน Cloud Run

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud
  • เบราว์เซอร์ เช่น Google Chrome

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนถูกใช้ไปแล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่น่าจะมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป

ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์ทดลองใช้ฟรี$300

Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากแล็ปท็อประยะไกลได้ แต่ใน Codelab นี้ คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell

หากไม่เคยเริ่มใช้ Cloud Shell มาก่อน คุณจะเห็นหน้าจอระดับกลาง (ด้านล่าง) ที่อธิบายว่า Cloud Shell คืออะไร ในกรณีนี้ ให้คลิกต่อไป (และคุณจะไม่เห็นหน้าจอนี้อีก) หน้าจอแบบครั้งเดียวจะมีลักษณะดังนี้

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่คงอยู่ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานในโค้ดแล็บนี้ได้โดยใช้เพียงเบราว์เซอร์หรือ Chromebook

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list

เอาต์พุตของคำสั่ง

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

เอาต์พุตของคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตของคำสั่ง

Updated property [core/project].
  1. สร้างแอป Spring Boot ใหม่ด้วย Spring Initializr
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

โปรดทราบว่า Initializr จะเพิ่ม spring-boot-starter-web ลงในการขึ้นต่อกันใน pom.xml ของแอปเทมเพลตโดยอัตโนมัติ

  1. เปลี่ยนไปยังไดเรกทอรีของแอปเทมเพลต
$ cd kotlin-jib-cloud-run
  1. สร้างและเรียกใช้แอปโดยใช้ Maven
$ ./mvnw -DskipTests spring-boot:run
  1. เมื่อเริ่มต้นแล้ว แอปจะเริ่มฟังบนพอร์ต 8080 คลิกตัวอย่างเว็บในแถบเครื่องมือ Cloud Shell แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080 เพื่อเข้าถึงแอป

  1. คุณควรได้รับคำตอบ 404 เนื่องจากแอปยังไม่มีประโยชน์ใดๆ หยุดแอปด้วย Control+C
  1. สร้างคลาส Controller ต่อไปนี้ในแพ็กเกจเดโม
$ 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. สร้างและเรียกใช้แอปอีกครั้ง
$ ./mvnw spring-boot:run
  1. ตรวจสอบแอปอีกครั้งโดยใช้ตัวอย่างเว็บ คราวนี้คุณควรเห็นข้อความ "Kotlin app on Cloud Run, containerized by Jib!" หยุดแอปด้วย Control+C

Jib ช่วยให้คุณจัดคอนเทนเนอร์แอปได้อย่างมีประสิทธิภาพโดยไม่ต้องใช้ Docker และเผยแพร่ไปยังรีจิสทรีคอนเทนเนอร์ใดก็ได้

  1. คุณต้องเปิดใช้งาน Container Registry API ก่อนดำเนินการต่อ โดยจำเป็นต้องดำเนินการอย่างน้อย 1 ครั้งต่อโปรเจ็กต์เพื่อให้เข้าถึง API ได้
$ gcloud services enable containerregistry.googleapis.com
  1. เรียกใช้ Jib เพื่อสร้างอิมเมจ Docker และเผยแพร่ไปยัง Container Registry
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

ในที่สุด คุณจะเห็นข้อความต่อไปนี้ที่ระบุว่าแอปอยู่ในคอนเทนเนอร์และได้รับการพุชไปยัง Container Registry แล้ว

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

หากเห็นข้อผิดพลาด ให้ตรวจสอบอีกครั้งว่าได้ตั้งค่า $GOOGLE_CLOUD_PROJECT เป็นรหัสโปรเจ็กต์ Google Cloud (PROJECT_ID) อย่างถูกต้อง

  1. ก่อนดำเนินการต่อ ให้ตรวจสอบว่าเผยแพร่รูปภาพสำเร็จแล้ว กลับไปที่ Cloud Console คลิกเมนูการนำทาง แล้วเลือก Container Registry

คุณจะเห็นว่าระบบเผยแพร่รูปภาพเรียบร้อยแล้ว

Cloud Run นำ Serverless มาสู่คอนเทนเนอร์ โดยจะปรับขนาดคอนเทนเนอร์แบบไม่เก็บสถานะโดยอัตโนมัติ

  1. คลิกเมนูการนำทาง อีกครั้ง แล้วเลือก Cloud Run

หากเข้าถึง Cloud Run เป็นครั้งแรก คุณจะเห็นกล่องโต้ตอบต่อไปนี้สำหรับการตั้งค่าแบบครั้งเดียว คลิกเริ่มใช้ Cloud Run หากปรากฏขึ้น

  1. ในหน้า Cloud Run ให้คลิกสร้างบริการ

  1. ในหน้าจอถัดไป ให้คลิกเลือกในส่วนแหล่งที่มา แหล่งที่มาคืออิมเมจที่ต้องการเรียกใช้ใน Cloud Run

  1. กล่องโต้ตอบจะแสดงอิมเมจที่คุณสร้างไว้ก่อนหน้านี้ เลือกรูปภาพ แล้วคลิกต่อไป

  1. คุณสามารถคลิกเพียงไม่กี่ครั้งเพื่อติดตั้งใช้งานแอปได้เลย ในส่วนแพลตฟอร์มการทำให้ใช้งานได้ ให้เลือก Cloud Run (มีการจัดการครบวงจร) เพื่อให้ Google Cloud จัดการบริการอย่างเต็มรูปแบบ เลือกภูมิภาคที่เหมาะสมกับสถานที่ตั้งของคุณ เลือกอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ แล้วคลิกสร้าง เท่านี้ก็เรียบร้อย

เมื่อติดตั้งใช้งานรูปภาพเรียบร้อยแล้ว หน้า Cloud Run จะแสดง URL สำหรับเข้าถึงแอป ลองเลย

ในท้ายที่สุด คุณจะเห็นข้อความที่คาดหวังจากแอป

Kotlin app on Cloud Run, containerized by Jib!

เท่านี้ก็เรียบร้อย ในอนาคต หากต้องการติดตั้งใช้งานแอปเวอร์ชันใหม่ คุณสามารถทำได้โดยคลิกติดตั้งใช้งานการแก้ไขใหม่ในหน้าดังกล่าว

  1. หากต้องการล้างข้อมูลในสภาพแวดล้อม คุณต้องลบแอปที่ทําให้ใช้งานได้ใน Cloud Run และอิมเมจที่เผยแพร่ใน Container Registry ไปที่ Cloud Run เลือกแอป แล้วคลิกลบ

  1. ในทำนองเดียวกัน ให้ไปที่หน้า Container Registry แล้วลบอิมเมจ

ยินดีด้วย คุณสร้างคอนเทนเนอร์แอป Spring Boot Kotlin และทำให้แอปใช้งานได้ใน Cloud Run เรียบร้อยแล้ว

คุณใช้ Jib สร้างอิมเมจคอนเทนเนอร์ที่เพิ่มประสิทธิภาพโดยไม่ต้องติดตั้ง Docker หรือเขียน Dockerfile และเผยแพร่ไปยัง Container Registry Jib เพิ่มประสิทธิภาพการสร้างอิมเมจ เพื่อให้ทุกคนที่ไม่มีความรู้เกี่ยวกับ Docker อย่างลึกซึ้งสามารถสร้างคอนเทนเนอร์แอป Java ได้อย่างรวดเร็วและมีประสิทธิภาพ จากนั้นเพียงไม่กี่คลิก คุณก็ทำให้แอปใช้งานได้ใน Cloud Run เพื่อเริ่มให้บริการได้ในเวลาอันรวดเร็ว

ดูข้อมูลเพิ่มเติม