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
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนถูกใช้ไปแล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID
ในภายหลังใน Codelab นี้
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน 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 คืออะไร ในกรณีนี้ ให้คลิกต่อไป (และคุณจะไม่เห็นหน้าจอนี้อีก) หน้าจอแบบครั้งเดียวจะมีลักษณะดังนี้
การจัดสรรและเชื่อมต่อกับ 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`
gcloud config list project
เอาต์พุตของคำสั่ง
[core] project = <PROJECT_ID>
หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตของคำสั่ง
Updated property [core/project].
- สร้างแอป 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
- สร้างคลาส
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
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: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
) อย่างถูกต้อง
- ก่อนดำเนินการต่อ ให้ตรวจสอบว่าเผยแพร่รูปภาพสำเร็จแล้ว กลับไปที่ Cloud Console คลิกเมนูการนำทาง
แล้วเลือก Container Registry
คุณจะเห็นว่าระบบเผยแพร่รูปภาพเรียบร้อยแล้ว
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!
เท่านี้ก็เรียบร้อย ในอนาคต หากต้องการติดตั้งใช้งานแอปเวอร์ชันใหม่ คุณสามารถทำได้โดยคลิกติดตั้งใช้งานการแก้ไขใหม่ในหน้าดังกล่าว
- หากต้องการล้างข้อมูลในสภาพแวดล้อม คุณต้องลบแอปที่ทําให้ใช้งานได้ใน Cloud Run และอิมเมจที่เผยแพร่ใน Container Registry ไปที่ Cloud Run เลือกแอป แล้วคลิกลบ
- ในทำนองเดียวกัน ให้ไปที่หน้า Container Registry แล้วลบอิมเมจ
ยินดีด้วย คุณสร้างคอนเทนเนอร์แอป 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