1. ก่อนเริ่มต้น
Google มีเครื่องมือสร้างอิมเมจที่มีประสิทธิภาพซึ่งคุณสามารถใช้สร้างและเผยแพร่อิมเมจคอนเทนเนอร์ Docker ที่เพิ่มประสิทธิภาพสำหรับแอป Java ได้อย่างง่ายดายในเวลาอันรวดเร็วโดยไม่ต้องใช้ Docker หรือ Dockerfile นอกจากนี้ Google Cloud ยังนำ Serverless มาใช้กับคอนเทนเนอร์ด้วย 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
2. การเริ่มต้นใช้งาน
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย โปรดทำตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนำวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell


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

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

เครื่องเสมือนนี้มีเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่คงอยู่ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานในโค้ดแล็บนี้ได้โดยใช้เพียงเบราว์เซอร์หรือ Chromebook
เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรจะเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว
- เรียกใช้คำสั่งต่อไปนี้ใน 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`
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
เอาต์พุตจากคำสั่ง
[core] project = <PROJECT_ID>
หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตจากคำสั่ง
Updated property [core/project].
3. เริ่มต้นแอป Spring Boot
- สร้างแอป 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 ของแอปเทมเพลตโดยอัตโนมัติ
- เปลี่ยนไปยังไดเรกทอรีของแอปเทมเพลต
$ cd kotlin-jib-cloud-run
- สร้างและเรียกใช้แอปโดยใช้ Maven
$ ./mvnw -DskipTests spring-boot:run
- เมื่อเริ่มต้นแล้ว แอปจะเริ่มฟังบนพอร์ต 8080 คลิกตัวอย่างเว็บ
ในแถบเครื่องมือ Cloud Shell แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080 เพื่อเข้าถึงแอป

- คุณควรได้รับคำตอบ 404 เนื่องจากแอปยังไม่มีประโยชน์ใดๆ หยุดแอปด้วย
Control+C
4. เพิ่มตัวควบคุมเว็บ
- สร้าง
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!"
}
}
- สร้างและเรียกใช้แอปอีกครั้ง
$ ./mvnw spring-boot:run
- ตรวจสอบแอปอีกครั้งโดยใช้ตัวอย่างเว็บ
คราวนี้คุณควรเห็นข้อความ "Kotlin app on Cloud Run, containerized by Jib!" หยุดแอปด้วยControl+C
5. สร้างคอนเทนเนอร์ของแอปและเผยแพร่ไปยัง Container Registry
Jib ช่วยให้คุณสร้างคอนเทนเนอร์แอปในลักษณะที่ได้รับการเพิ่มประสิทธิภาพโดยไม่ต้องใช้ Docker และเผยแพร่ไปยังรีจิสทรีคอนเทนเนอร์ใดก็ได้
- คุณต้องเปิดใช้งาน Container Registry API ก่อนดำเนินการต่อ โดยจำเป็นต้องดำเนินการอย่างน้อย 1 ครั้งต่อโปรเจ็กต์เพื่อให้เข้าถึง API ได้
$ gcloud services enable containerregistry.googleapis.com
- เรียกใช้ Jib เพื่อสร้างอิมเมจ Docker และเผยแพร่ไปยัง Container Registry
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1: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) หรือไม่
- ก่อนดำเนินการต่อ ให้ตรวจสอบว่าเผยแพร่รูปภาพสำเร็จแล้ว กลับไปที่ Cloud Console คลิกเมนูการนำทาง
แล้วเลือก Container Registry


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

6. เรียกใช้แอปที่สร้างโดยใช้คอนเทนเนอร์ใน Cloud Run
Cloud Run นำ Serverless มาสู่คอนเทนเนอร์ โดยจะปรับขนาดคอนเทนเนอร์แบบไม่เก็บสถานะโดยอัตโนมัติ
- คลิกเมนูการนำทาง
อีกครั้ง แล้วเลือก Cloud Run

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

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

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

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

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

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

ในท้ายที่สุด คุณจะเห็นข้อความที่คาดหวังจากแอป
Kotlin app on Cloud Run, containerized by Jib!
เท่านี้ก็เรียบร้อย ในอนาคต หากต้องการติดตั้งใช้งานแอปเวอร์ชันใหม่ คุณสามารถทำได้โดยคลิกติดตั้งใช้งานการแก้ไขใหม่ในหน้าดังกล่าว
7. ล้างข้อมูล
- หากต้องการล้างข้อมูลในสภาพแวดล้อม คุณต้องลบแอปที่ทำให้ใช้งานได้ใน Cloud Run และอิมเมจที่เผยแพร่ใน Container Registry ไปที่ Cloud Run เลือกแอป แล้วคลิกลบ

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

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