งาน Cloud Run

1. บทนำ

อัปเดตล่าสุด 16-05-2022

งาน Cloud Run

งาน Cloud Run ช่วยให้คุณเรียกใช้งานที่ใช้เวลานานใน Cloud Run ได้

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

สิ่งที่คุณจะได้เรียนรู้

  • งานใน Cloud Run คืออะไร
  • กรณีที่ควรใช้งาน Cloud Run
  • เวิร์กโฟลว์ของงาน Cloud Run
  • วิธีสร้างงาน Cloud Run
  • วิธีเรียกใช้งาน Cloud Run
  • วิธีเรียกใช้งานตามตารางเวลา
  • วิธีดูสถานะการดำเนินการ
  • วิธีจัดการงานและการดําเนินงาน
  • วิธีตรวจหาการเสร็จงาน
  • วิธีอัปเดตงาน

ในช่วงแรก งาน Cloud Run พร้อมให้บริการในภูมิภาค europe-west9 เท่านั้น

2. ภาพรวมงาน Cloud Run

การเรียกใช้โค้ดบน Cloud Run มี 2 วิธี คุณสามารถใช้แคมเปญ แบบต่อเนื่องเป็นบริการ

c9a6f816087108b9.png

หรือหากโค้ดทำงานแล้วหยุดลง คุณสามารถใช้งาน Cloud Run ได้

b24cdd6dd7e60e84.png

แม้ว่าบริการ Cloud Run จะเหมาะกับคอนเทนเนอร์ที่ทำงานเพื่อรอดูคำขอ HTTP ไปเรื่อยๆ แต่งาน Cloud Run จะเหมาะสำหรับคอนเทนเนอร์ที่ทำงานจนจบและไม่แสดงคำขอ เช่น งานการประมวลผลข้อมูลและงานการดูแลระบบ

กรณีการใช้งานอื่นๆ สำหรับงาน Cloud Run มีดังนี้

  • เรียกใช้สคริปต์เพื่อย้ายข้อมูลฐานข้อมูลหรืองานด้านการดำเนินการอื่นๆ
  • การประมวลผลไฟล์ทั้งหมดพร้อมกันในที่เก็บข้อมูล Cloud Storage
  • สร้างและส่งใบแจ้งหนี้ทุกเดือน
  • ทุก 4 ชั่วโมง ระบบจะบันทึกผลลัพธ์ของการค้นหาฐานข้อมูลเป็น XML และอัปโหลดไฟล์

เมื่อเปรียบเทียบกับแพลตฟอร์มอื่นๆ ที่รองรับงานที่ใช้เวลานาน งาน Cloud Run จะเริ่มต้นอย่างรวดเร็วหลังจากการสร้าง คอนเทนเนอร์แบบง่ายอาจเริ่มต้นในเวลาเพียง 10 วินาที ทั้งนี้ขึ้นอยู่กับความซับซ้อนของคอนเทนเนอร์ ซึ่งทำให้งาน Cloud Run เหมาะกับกรณีที่การรอ 2-3 นาทีเพื่อให้ VM เริ่มต้นกลายเป็นปัญหา

3. เวิร์กโฟลว์ของงาน Cloud Run

เวิร์กโฟลว์ของงาน Cloud Run ประกอบด้วย 2 ขั้นตอนง่ายๆ ดังนี้

  1. สร้างงาน งานสรุปการกำหนดค่าทั้งหมดที่จำเป็นต่อการดำเนินงาน เช่น อิมเมจคอนเทนเนอร์
  2. ดำเนินงาน ใช้ Cloud Console หรือ gcloud CLI และเรียกใช้งานจากบรรทัดคำสั่ง

งานสามารถเริ่มต้นอินสแตนซ์คอนเทนเนอร์ 1 อินสแตนซ์เพื่อเรียกใช้โค้ด หรืออาจเริ่มต้นอินสแตนซ์คอนเทนเนอร์อิสระที่เหมือนกันหลายรายการพร้อมกันด้วยการระบุจำนวนงานที่เรียกใช้ เช่น หากกำลังอ่านรูปภาพ 1,000 รูปจาก Cloud Storage เพื่อปรับขนาดและครอบตัด การประมวลผลต่อกันจะช้ากว่าการประมวลผลทั้งหมดพร้อมกันกับอินสแตนซ์คอนเทนเนอร์หลายรายการ

4. สร้างงาน

หากต้องการสร้างงาน คุณจะใช้ Cloud Console หรือ gcloud CLI โดยใช้คำสั่งต่อไปนี้ก็ได้

gcloud beta run jobs create JOB_NAME --image IMAGE_URL --region europe-west9 OPTIONS

แทนที่

  • JOB_NAME ที่มีชื่องานที่คุณต้องการสร้าง
  • IMAGE_URL ที่มีการอ้างอิงอิมเมจคอนเทนเนอร์
  • (ไม่บังคับ) แทนที่ OPTIONS ด้วย Flag ที่มีอยู่ ดูรายการแฟล็กทั้งหมดได้ที่ gcloud beta run jobs create --help

ตัวอย่างแฟล็กมีดังนี้

  • --tasks สำหรับจำนวนงานที่เรียกใช้
  • -–max retries สำหรับจำนวนครั้งที่มีการดำเนินการที่ไม่สำเร็จซ้ำ
  • --parallelism สำหรับจำนวนงานสูงสุดที่เรียกใช้ได้พร้อมกัน
  • --execute-now เพื่อดำเนินการกับงานทันทีหลังจากที่สร้างไว้
  • --async เพื่อออกจากงานทันทีหลังจากสร้างการดำเนินการใหม่

คุณยังสามารถใช้ฟีเจอร์ Cloud Run ตามปกติเพื่อรักษาความปลอดภัยให้กับงาน Cloud Run และเชื่อมต่อกับสภาพแวดล้อม Google Cloud Platform (GCP) อื่นๆ ของคุณ

5. ดำเนินงาน

หากต้องการเรียกใช้งาน คุณจะใช้ Cloud Console หรือ gcloud CLI โดยใช้คำสั่งต่อไปนี้ก็ได้

  • ใน Cloud Console ให้คลิกชื่องาน แล้วคลิก Execute บริเวณด้านบนของหน้า
  • ใน gcloud CLI ให้ใช้คำสั่งต่อไปนี้
gcloud beta run jobs execute JOB_NAME --region europe-west9 EXECUTION_OPTIONS

ให้แทนที่ JOB_NAME ด้วยชื่อของงาน (ไม่บังคับ) แทนที่ EXECUTION_OPTIONS เพื่อระบุสิ่งต่อไปนี้

  • การดําเนินงานทันทีหลังจากที่คุณสร้างงาน
gcloud beta run jobs create JOB_NAME --region europe-west9 --execute-now
  • หากต้องการรอจนกว่าการดำเนินการจะเสร็จสมบูรณ์ก่อนที่จะออก
gcloud beta run jobs create JOB_NAME --region europe-west9 --wait
  • หากต้องการออกทันทีหลังจากสร้างการดำเนินการใหม่
gcloud beta run jobs create JOB_NAME --region europe-west9 --async

6. ทำงานตามกำหนดเวลา

หากต้องการปฏิบัติการตามกำหนดเวลา ให้ใช้ Cloud Scheduler

ตัวอย่างเช่น คุณอาจต้องการสร้างและส่งใบแจ้งหนี้ในรอบระยะเวลาที่สม่ำเสมอ หรือบันทึกผลของการค้นหาฐานข้อมูลเป็น XML แล้วอัปโหลดไฟล์ทุกๆ 2-3 ชั่วโมง

ด้วย Cloud Scheduler คุณจะกำหนดเวลางานและจัดการงานอัตโนมัติทั้งหมดได้จากที่เดียว

  • เรียกใช้งานกลุ่มและข้อมูลขนาดใหญ่พร้อมกันทุกสัปดาห์ วัน หรือชั่วโมง พร้อมรับประกันการดำเนินการและทดลองซ้ำในกรณีที่เกิดข้อผิดพลาด
  • ทำให้งานน่าเบื่อมากมายที่เกี่ยวข้องกับการเรียกใช้โครงสร้างพื้นฐานของระบบคลาวด์เป็นแบบอัตโนมัติด้วยวิธีการที่เชื่อถือได้และมีการจัดการอย่างสมบูรณ์
  • ทำทุกอย่างได้อัตโนมัติ
  • ดูและจัดการงานทั้งหมดจาก UI หรืออินเทอร์เฟซบรรทัดคำสั่งเดียว

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

7. ดูสถานะการดำเนินการของงาน

เมื่องานเสร็จสิ้น คุณจะดูบันทึกได้ในบันทึก Cloud Logging และข้อมูลการตรวจสอบใน Cloud Monitoring

หากต้องการดูบันทึก ให้ทําดังนี้

  • ใช้หน้า Cloud Run ใน Cloud Console
  • ใช้เครื่องมือสำรวจบันทึกของ Cloud Logging ใน Cloud Console

วิธีการดูทั้ง 2 วิธีนี้จะตรวจสอบบันทึกเดียวกันที่จัดเก็บไว้ใน Cloud Logging แต่เครื่องมือสำรวจบันทึกของ Cloud Logging จะให้รายละเอียดเพิ่มเติมและความสามารถในการกรองที่มากขึ้น

Cloud Monitoring มีเมตริกและการตรวจสอบประสิทธิภาพของ Cloud Run รวมถึงการแจ้งเตือนสำหรับส่งการแจ้งเตือนเมื่อเมตริกบางอย่างเกินเกณฑ์ Cloud Run จะผสานรวมกับ Cloud Monitoring โดยอัตโนมัติโดยไม่ต้องตั้งค่าหรือกำหนดค่า ซึ่งหมายความว่าเมตริกของงาน Cloud Run จะได้รับการบันทึกโดยอัตโนมัติเมื่องานทำงานอยู่

คุณดูเมตริกได้ใน Cloud Monitoring หรือในหน้า Cloud Run ในคอนโซล Cloud Monitoring มีตัวเลือกแผนภูมิและการกรองที่มากขึ้น

8. จัดการงานและการดำเนินการงาน

หากต้องการจัดการงาน ให้ใช้ Cloud Console หรือ gcloud CLI เพื่อดูรายการต่อไปนี้

นอกจากนี้คุณยังทำสิ่งต่อไปนี้ได้อีกด้วย

  • หยุดการดําเนินงานที่ทำงานอยู่โดยการลบงานดังกล่าวออก
  • ลบการดำเนินการของงานที่ไม่ได้ทำงานอยู่
  • ลบงาน

การลบงานจะยกเลิกการดำเนินงานทั้งหมดที่รอดำเนินการของงานนั้น แต่บันทึกงานและข้อมูลการตรวจสอบจะยังใช้งานได้ตามระยะเวลาเก็บรักษาบันทึกที่เหลือ ซึ่งโดยปกติคือ 30 วัน การตรวจสอบข้อมูลยังคงพร้อมใช้งานใน Cloud Monitoring

9. ตรวจหาการดำเนินการงานเสร็จสมบูรณ์

มีหลายวิธีในการตรวจสอบว่าการดำเนินการของคุณเสร็จสิ้นแล้ว ดังนี้

  • เรียกใช้งานของคุณด้วยแฟล็ก --wait และ gcloud CLI จะออกเมื่องานเสร็จสิ้น
gcloud beta run jobs execute JOB_NAME --region europe-west9 --wait
  • ดึงข้อมูลปลายทาง executions.get ของ REST API โดยมองหาเงื่อนไขสถานะ Completed เป็น True
  • ค้นหารายการบันทึกที่เป็นลายลักษณ์อักษรเมื่อการดำเนินการเสร็จสมบูรณ์ ซึ่งจะมีลักษณะดังนี้

Completed condition status changed to True for Execution sleepy-l8zjp.

หากต้องการค้นหาข้อความบันทึกนี้ ให้เรียกใช้การค้นหาต่อไปนี้ใน Cloud Logging

resource.type="cloud_run_revision"
resource.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload.response.status.conditions.type="Completed"
protoPayload.response.status.conditions.status="True"

นอกจากนี้คุณยังสามารถสำรวจตำแหน่งที่กำลังเขียนเอาต์พุตเพื่อตรวจหาเมื่อเอาต์พุตปรากฏขึ้น แต่วิธีนี้จะทํางานได้อย่างถูกต้องก็ต่อเมื่อเขียนเอาต์พุตเป็นสิ่งสุดท้ายที่งานของคุณทำ ตัวอย่างเช่น หากงานมีการล้างข้อมูลหลังจากเขียนเอาต์พุตแล้ว งานอาจยังล้มเหลวหลังจากเขียนเอาต์พุต

10. อัปเดตงาน

เมื่อสร้างงาน คุณจะระบุอิมเมจคอนเทนเนอร์ที่มี tag หรือ digest ที่แน่นอนได้ดังนี้

  • ตัวอย่างแท็ก
gcr.io/my-project/my-image:tag
  • ตัวอย่างไดเจสต์:
gcr.io/my-project/my-image@sha256:41f34ab970ee...

หากไม่ได้ระบุค่าใด ระบบจะใช้แท็ก :latest

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

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

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

gcloud beta run jobs update JOB_NAME --image NEW-IMAGE --region europe-west9

ไม่ว่าคุณจะระบุอิมเมจคอนเทนเนอร์อย่างไร งานทั้งหมดของการดำเนินการจะใช้ไดเจสต์เดียวกันเสมอ

ขณะที่ใช้การอัปเดตอยู่ คุณจะเริ่มการดำเนินการใหม่ไม่ได้ คุณต้องรอให้การอัปเดตเสร็จสมบูรณ์ ซึ่งโดยปกติจะใช้เวลา 2-3 วินาที หากการอัปเดตไม่สำเร็จ ระบบจะสร้างการดำเนินการใหม่ไม่ได้ คุณจะต้องทำให้งานกลับไปอยู่ในสถานะที่ดีก่อน โดยการทำการอัปเดตอีกครั้ง

11. ขอแสดงความยินดี

ยินดีด้วย คุณได้เรียนรู้ว่าควรใช้งาน Cloud Run เมื่อใดและอย่างไร

คุณได้เรียนรู้สิ่งต่อไปนี้

  • งานใน Cloud Run คืออะไร
  • กรณีที่ควรใช้งาน Cloud Run
  • เวิร์กโฟลว์ของงาน Cloud Run
  • วิธีสร้างงาน Cloud Run
  • วิธีเรียกใช้งาน Cloud Run
  • วิธีเรียกใช้งานตามตารางเวลา
  • วิธีดูสถานะการดำเนินการ
  • วิธีจัดการงานและการดําเนินงาน
  • วิธีตรวจหาการเสร็จงาน
  • วิธีอัปเดตงาน

สิ่งที่ต้องทำต่อไป

การเริ่มต้นใช้งานงาน Cloud Run

ความช่วยเหลือ

สำหรับการอ้างอิง gcloud แบบเต็ม ให้ใช้คำสั่งความช่วยเหลือ:

gcloud beta run jobs --help

gcloud beta run jobs executions --help

เอกสารอ้างอิง

ทำให้งานใช้งานได้

ดำเนินงาน

ดำเนินงานตามกำหนดการ

การตั้งค่าสภาพแวดล้อม

การบันทึกและการดูบันทึก

การติดตามสุขภาพและประสิทธิภาพ

เอกสารประกอบ Cloud Logging

เอกสารประกอบเกี่ยวกับ Cloud Monitoring

เมตริกของ Google Cloud

ข้อมูลเบื้องต้นเกี่ยวกับการแจ้งเตือน

จัดการการดำเนินงาน

จัดการงาน

เมธอด: เนมสเปซs.executions.get

แนวทางปฏิบัติแนะนำเกี่ยวกับการลองทำงานใหม่และจุดตรวจสอบ