เกี่ยวกับ Codelab นี้
1 ข้อควรทราบก่อนที่จะเริ่มต้น
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 ที่เพิ่มประสิทธิภาพ
- เผยแพร่อิมเมจไปยังรีจิสทรีคอนเทนเนอร์
- เรียกใช้คอนเทนเนอร์ในคอนเทนเนอร์บน Cloud Run
สิ่งที่ต้องมี
- โปรเจ็กต์ Google Cloud
- เบราว์เซอร์ เช่น Google Chrome
2 การเริ่มตั้งค่า
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ํา (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดทราบว่ารหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ํากันสําหรับโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อข้างต้นมีผู้อื่นนําไปใช้แล้ว ขออภัยในความไม่สะดวก) และจะเรียกใน Codelab นี้ว่า PROJECT_ID
ในภายหลัง
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากรของ Google Cloud
การเรียกใช้ Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่อาจมากกว่านั้นหากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทํางาน
ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์รับช่วงทดลองใช้ฟรี$300
Cloud Shell
แม้ว่า Google Cloud จะทํางานจากแล็ปท็อปได้จากระยะไกล แต่ใน Codelab นี้ คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคําสั่งที่ทํางานใน Google Cloud
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell
หากคุณไม่เคยเริ่มใช้งาน Cloud Shell มาก่อน ระบบจะแสดงหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ที่อธิบายปัญหาหากเกิดกรณีดังกล่าวขึ้น ให้คลิกต่อไป (แล้วคุณจะไม่เห็นอีกเลย) หน้าจอแบบครั้งเดียวนี้มีลักษณะดังนี้
การดําเนินการนี้จะใช้เวลาสักครู่เพื่อจัดสรรและเชื่อมต่อกับ Cloud Shell
เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหน้าแรกขนาด 5 GB ถาวรและทํางานอยู่ใน Google Cloud ซึ่งช่วยปรับปรุงประสิทธิภาพและการตรวจสอบสิทธิ์ของเครือข่ายได้อย่างมาก งานที่ทําใน Codelab นี้เพียงบางรายการสามารถทําได้โดยใช้เบราว์เซอร์หรือ 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`
gcloud config list project
เอาต์พุตจากคําสั่ง
[core] project = <PROJECT_ID>
หากไม่ใช่ คุณจะตั้งค่าได้โดยใช้คําสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตจากคําสั่ง
Updated property [core/project].
3 เริ่มต้นแอปฤดูใบไม้ผลิ
- สร้างแอป 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 -
โปรดทราบว่าคู่มือเริ่มต้นจะเพิ่ม spring-boot-starter-web
ไปยังทรัพยากร Dependency ใน 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 ก่อนดําเนินการต่อ โดยต้องดําเนินการเพียงครั้งเดียวต่อโปรเจ็กต์เพื่อให้เข้าถึง API ได้
$ gcloud services enable containerregistry.googleapis.com
- เรียกใช้ 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
ในท้ายที่สุด คุณจะเห็นข้อความต่อไปนี้ว่าแอปมีการใช้งานคอนเทนเนอร์และพุชไปยังคอนเทนเนอร์คอนเทนเนอร์
[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 คลิกเมนูการนําทาง
แล้วเลือกที่เก็บคอนเทนเนอร์
คุณจะเห็นว่ารูปภาพได้รับการเผยแพร่เรียบร้อยแล้ว
6 เรียกใช้คอนเทนเนอร์ในคอนเทนเนอร์บน Cloud Run
Cloud Run นําคอนเทนเนอร์แบบไร้เซิร์ฟเวอร์มาใช้โดยอัตโนมัติ ซึ่งเป็นการปรับขนาดคอนเทนเนอร์แบบไม่เก็บสถานะโดยอัตโนมัติ
- คลิกเมนูการนําทาง
อีกครั้งแล้วเลือก 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 แล้วเลือกแอปแล้วคลิกลบ
- ในทํานองเดียวกัน ให้ไปที่หน้ารีจิสทรีคอนเทนเนอร์และลบรูปภาพดังกล่าว
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 - สร้างรูปภาพ Java Docker ที่ดียิ่งขึ้น
- สร้างคอนเทนเนอร์ได้เร็วขึ้นด้วย Jib ซึ่งเป็นเครื่องมือสร้างรูปภาพสําหรับ Google สําหรับแอป Java
- Jib สร้างคอนเทนเนอร์แอป Java
- ช่อง Jib Gitter
- รายชื่ออีเมลของผู้ใช้ Jib