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