ติดตั้งใช้งานเว็บไซต์ด้วย Cloud Run

การเรียกใช้เว็บไซต์อาจเป็นเรื่องยากเนื่องจากมีค่าใช้จ่ายในการสร้างและจัดการอินสแตนซ์เครื่องเสมือน (VM), คลัสเตอร์, พ็อด, บริการ และอื่นๆ ซึ่งเหมาะสำหรับแอปขนาดใหญ่ที่มีหลายระดับ แต่หากคุณเพียงต้องการทำให้เว็บไซต์ใช้งานได้และแสดงต่อผู้ใช้ได้ ก็ถือว่ามีค่าใช้จ่ายสูง

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

Cloud Run ไม่เพียงนำการพัฒนาแบบ Serverless มาสู่คอนเทนเนอร์เท่านั้น แต่ยังสามารถเรียกใช้ในคลัสเตอร์ Google Kubernetes Engine (GKE) ของคุณเอง หรือในโซลูชันแพลตฟอร์มเป็นบริการ (PaaS) ที่มีการจัดการครบวงจรซึ่งให้บริการโดย Cloud Run ได้อีกด้วย คุณจะได้ทดสอบสถานการณ์หลังในโค้ดแล็บนี้

แผนภาพต่อไปนี้แสดงขั้นตอนการติดตั้งใช้งานและการโฮสต์ Cloud Run คุณเริ่มต้นด้วยอิมเมจ Docker ที่สร้างผ่าน Cloud Build ซึ่งคุณทริกเกอร์ใน Cloud Shell จากนั้นคุณจะทําให้อิมเมจนั้นใช้งานได้กับ Cloud Run ด้วยคําสั่งใน Cloud Shell

ข้อกำหนดเบื้องต้น

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

  • วิธีสร้างอิมเมจ Docker ด้วย Cloud Build และอัปโหลดไปยัง gcr.io
  • วิธีทําให้อิมเมจ Docker ใช้งานได้กับ Cloud Run
  • วิธีจัดการการทำให้ใช้งานได้ของ Cloud Run
  • วิธีตั้งค่าปลายทางสำหรับแอปใน Cloud Run

สิ่งที่คุณจะสร้าง

  • เว็บไซต์แบบคงที่ที่ทำงานภายในคอนเทนเนอร์ Docker
  • เวอร์ชันของคอนเทนเนอร์นี้ที่อยู่ใน Container Registry
  • การทําให้ใช้งานได้ใน Cloud Run สําหรับเว็บไซต์แบบคงที่

สิ่งที่คุณต้องมี

  • บัญชี Google ที่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบเพื่อสร้างโปรเจ็กต์ หรือโปรเจ็กต์ที่มีบทบาทเจ้าของโปรเจ็กต์

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

หากยังไม่มีบัญชี Google คุณต้องสร้างบัญชี จากนั้นลงชื่อเข้าใช้ Google Cloud Console แล้วคลิกโปรเจ็กต์ > สร้างโปรเจ็กต์

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

จากนั้นคุณต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud และเปิดใช้ Cloud Run API

เปิดใช้ Cloud Run API

คลิกเมนูการนำทาง ☰ > API และบริการ > แดชบอร์ด > เปิดใช้ API และบริการ .

ค้นหา "Cloud Run API" แล้วคลิก Cloud Run API > เปิดใช้

การทำ Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป (ดูล้างข้อมูลที่ส่วนท้าย) ดูข้อมูลเพิ่มเติมได้ที่ราคา

ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์ทดลองใช้ฟรี$300

Cloud Shell

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

เครื่องเสมือนที่ใช้ Debian นี้มาพร้อมเครื่องมือพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่คงอยู่ถาวร และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าคุณจะต้องมีเพียงเบราว์เซอร์เท่านั้นสำหรับโค้ดแล็บนี้ (ใช่แล้ว โค้ดแล็บนี้ใช้ได้ใน Chromebook)

หากต้องการเปิดใช้งาน Google Cloud Shell จากคอนโซลนักพัฒนาแอป ให้คลิกปุ่มที่ด้านขวาบน (ระบบจะจัดสรรและเชื่อมต่อกับสภาพแวดล้อมในเวลาเพียงไม่กี่นาที)

activateCloudShell.png

คลิกปุ่ม "เริ่ม Cloud Shell"

Screen Shot 2017-06-14 at 10.13.43 PM.png

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรจะเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและระบบได้ตั้งค่าโปรเจ็กต์เป็น PROJECT_ID แล้ว

gcloud auth list

เอาต์พุตของคำสั่ง

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

เอาต์พุตของคำสั่ง

[core]
project = <PROJECT_ID>

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

echo $GOOGLE_CLOUD_PROJECT

เอาต์พุตของคำสั่ง

<PROJECT_ID>

หากไม่ได้ตั้งค่าโปรเจ็กต์ด้วยเหตุผลบางประการ ให้เรียกใช้คำสั่งต่อไปนี้

gcloud config set project <PROJECT_ID>

หากกำลังมองหา PROJECT_ID ตรวจสอบว่าคุณใช้รหัสใดในขั้นตอนการตั้งค่า หรือค้นหารหัสในแดชบอร์ดคอนโซล

Project_ID.png

สำคัญ: สุดท้าย ให้ตั้งค่าการกำหนดค่าโซนและโปรเจ็กต์เริ่มต้น

gcloud config set compute/zone us-central1-f

คุณเลือกโซนต่างๆ ได้หลากหลาย ดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับภูมิภาคและโซน

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

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

cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh

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

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

cd ~/monolith-to-microservices/monolith
npm start

เอาต์พุต:

Monolith listening on port 8080!

คุณแสดงตัวอย่างแอปได้โดยคลิกตัวอย่างเว็บ แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080

ซึ่งจะเปิดหน้าต่างใหม่ให้คุณดูร้านค้าแฟนซีของคุณได้

คุณปิดหน้าต่างนี้ได้หลังจากดูเว็บไซต์ หากต้องการหยุดกระบวนการเว็บเซิร์ฟเวอร์ ให้กด CONTROL+C (Command+C ใน Macintosh) ในหน้าต่างเทอร์มินัล

เมื่อไฟล์ต้นฉบับพร้อมแล้ว ก็ถึงเวลา Dockerize แอปของคุณ

โดยปกติแล้ว คุณจะต้องใช้แนวทาง 2 ขั้นตอนซึ่งเกี่ยวข้องกับการสร้างคอนเทนเนอร์ Docker และพุชไปยังรีจิสทรีเพื่อจัดเก็บอิมเมจสำหรับ GKE เพื่อดึงข้อมูลจากรีจิสทรี อย่างไรก็ตาม คุณสามารถทำให้ชีวิตง่ายขึ้นได้โดยใช้ Cloud Build เพื่อสร้างคอนเทนเนอร์ Docker และใส่อิมเมจใน Container Registry ด้วยคำสั่งเดียว หากต้องการดูขั้นตอนการสร้าง Dockerfile และการพุชด้วยตนเอง โปรดดูคู่มือเริ่มใช้งานฉบับย่อสำหรับ Container Registry

Cloud Build จะบีบอัดไฟล์จากไดเรกทอรีและย้ายไปยังที่เก็บข้อมูล Cloud Storage จากนั้นกระบวนการบิลด์จะนำไฟล์ทั้งหมดจากที่เก็บข้อมูลมาใช้ Dockerfile ซึ่งอยู่ในไดเรกทอรีเดียวกันเพื่อเรียกใช้กระบวนการบิลด์ Docker เนื่องจากคุณระบุแฟล็ก --tag โดยมีโฮสต์เป็น gcr.io สำหรับอิมเมจ Docker ระบบจะพุชอิมเมจ Docker ที่ได้ไปยัง Container Registry

ก่อนอื่น คุณต้องตรวจสอบว่าได้เปิดใช้ Cloud Build API แล้ว เรียกใช้คำสั่งต่อไปนี้เพื่อเปิดใช้

gcloud services enable cloudbuild.googleapis.com

หลังจากเปิดใช้ API แล้ว ให้เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อเริ่มกระบวนการบิลด์

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .

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

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                              STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53  2019-08-29T01:56:35+00:00  33S       gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz  gcr.io/<PROJECT_ID>/monolith:1.0.0  SUCCESS

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

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

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

การติดตั้งใช้งานใน Cloud Run มี 2 วิธีดังนี้

  • Cloud Run (จัดการครบวงจร) คือโมเดล PaaS ที่มีการจัดการวงจรคอนเทนเนอร์ทั้งหมด คุณจะใช้วิธีดังกล่าวสำหรับ Codelab นี้
  • Cloud Run for Anthos คือ Cloud Run ที่มีเลเยอร์การควบคุมเพิ่มเติม ซึ่งช่วยให้คุณนำคลัสเตอร์และพ็อดจาก GKE มาใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่า Cloud Run สำหรับ Anthos บน Google Cloud

ตัวอย่างบรรทัดคำสั่งจะอยู่ใน Cloud Shell โดยใช้ตัวแปรสภาพแวดล้อมที่คุณตั้งค่าไว้ก่อนหน้านี้

บรรทัดคำสั่ง

เรียกใช้คำสั่งต่อไปนี้เพื่อทำให้แอปใช้งานได้

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed 

ระบบจะขอให้คุณระบุภูมิภาคที่ต้องการแสดงโฆษณา เลือกภูมิภาคที่ใกล้กับคุณมากที่สุด จากนั้นยอมรับชื่อบริการที่แนะนำเริ่มต้น (monolith)

อนุญาตคำขอที่ไม่ผ่านการตรวจสอบสิทธิ์ไปยังแอปเพื่อวัตถุประสงค์ในการทดสอบ ป้อน y ที่พรอมต์

ยืนยันการติดตั้งใช้งาน

หากต้องการยืนยันว่าสร้างการติดตั้งใช้งานสำเร็จแล้ว ให้เรียกใช้คำสั่งต่อไปนี้ อาจใช้เวลาสักครู่ในการPod statusRunning

gcloud run services list

เลือก [1] Cloud Run (จัดการครบวงจร)

เอาต์พุต:

SERVICE   REGION    URL  LAST DEPLOYED BY          LAST DEPLOYED AT
✔  monolith  us-east1 <your url>  <your email>  2019-09-16T21:07:38.267Z

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

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

ตอนนี้ ให้ติดตั้งใช้งานแอปอีกครั้ง แต่คราวนี้ให้ปรับพารามิเตอร์ตัวใดตัวหนึ่ง

โดยค่าเริ่มต้น แอป Cloud Run จะมีค่าการทำงานพร้อมกันเป็น 80 ซึ่งหมายความว่าอินสแตนซ์คอนเทนเนอร์แต่ละรายการจะรองรับคำขอได้สูงสุด 80 รายการในครั้งเดียว ซึ่งแตกต่างจากโมเดลฟังก์ชันเป็นบริการ (FaaS) อย่างมาก ซึ่งอินสแตนซ์หนึ่งจะจัดการคำขอครั้งละ 1 รายการ

ปรับใช้ Container Image เดียวกันอีกครั้งโดยมีค่าความพร้อมกันเป็น 1 (เพื่อวัตถุประสงค์ในการทดสอบเท่านั้น) แล้วดูว่าเกิดอะไรขึ้น

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 1

ตอบคำถามถัดไปเหมือนกับครั้งแรก เมื่อคำสั่งทำงานสำเร็จแล้ว ให้ตรวจสอบ Cloud Console เพื่อดูผลลัพธ์

จากแดชบอร์ด Cloud Run ให้คลิกบริการ monolith เพื่อดูรายละเอียด

คลิกแท็บการแก้ไข คุณควรเห็นการแก้ไข 2 รายการที่สร้างขึ้น คลิก monolith-00002 แล้วตรวจสอบรายละเอียด คุณควรเห็นค่าการทำงานพร้อมกันลดลงเหลือ 1

]

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

ตอนนี้คุณสามารถกู้คืนการทำงานพร้อมกันเดิมได้โดยไม่ต้องติดตั้งใช้งานใหม่ คุณสามารถตั้งค่าการทำงานพร้อมกันเป็นค่าเริ่มต้นที่ 80 หรือ 0 ซึ่งจะนำข้อจำกัดการทำงานพร้อมกันออกและตั้งค่าเป็นค่าสูงสุดเริ่มต้น (ซึ่งเป็น 80 ในขณะที่เขียนนี้)

เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่ออัปเดตรีวิชันปัจจุบัน

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --platform managed --concurrency 80

โปรดสังเกตว่ามีการสร้างรีวิชันอื่น มีการเปลี่ยนเส้นทางการเข้าชม และการทำงานพร้อมกันกลับมาเป็น 80

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

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

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

cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

โค้ดที่ได้ควรมีลักษณะดังนี้

/*
Copyright 2019 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
  root: {
    flexGrow: 1
  },
  paper: {
    width: "800px",
    margin: "0 auto",
    padding: theme.spacing(3, 2)
  }
}));
export default function Home() {
  const classes = useStyles();
  return (
    <div className={classes.root}>
      <Paper className={classes.paper}>
        <Typography variant="h5">
          Fancy Fashion &amp; Style Online
        </Typography>
        <br />
        <Typography variant="body1">
          Tired of mainstream fashion ideas, popular trends and societal norms?
          This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
          Start shopping Fancy items now!
        </Typography>
      </Paper>
    </div>
  );
}

คุณอัปเดตคอมโพเนนต์ React แล้ว แต่ต้องสร้างแอป React เพื่อสร้างไฟล์แบบคงที่ เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างแอป React และคัดลอกลงในไดเรกทอรีสาธารณะของ Monolith

cd ~/monolith-to-microservices/react-app
npm run build:monolith

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

เรียกใช้คำสั่งต่อไปนี้เพื่อทริกเกอร์ Cloud Build ใหม่ด้วยอิมเมจเวอร์ชัน 2.0.0 ที่อัปเดตแล้ว

cd ~/monolith-to-microservices/monolith

#Feel free to test your application
npm start

gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

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

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

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

ทำตามวิธีการชุดถัดไปเพื่ออัปเดตเว็บไซต์

บรรทัดคำสั่ง

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

gcloud run deploy --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --platform managed

ยืนยันการติดตั้งใช้งาน

ตรวจสอบการอัปเดตการติดตั้งใช้งานโดยเรียกใช้คำสั่งต่อไปนี้

gcloud run services describe monolith --platform managed 

เอาต์พุตจะมีลักษณะดังนี้

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  annotations:
    client.knative.dev/user-image: gcr.io/my-cloudrun-codelab/monolith:2.0.0
...

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

หากต้องการยืนยันการเปลี่ยนแปลง ให้ไปที่ URL ภายนอกของบริการ Cloud Run อีกครั้ง แล้วสังเกตว่าชื่อแอปได้รับการอัปเดตแล้ว

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

gcloud run services list

ตอนนี้เว็บไซต์ควรแสดงข้อความที่คุณเพิ่มลงในคอมโพเนนต์หน้าแรกแล้ว

ลบอิมเมจ Container Registry

# Delete the container image for version 1.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet

# Delete the container image for version 2.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet

ลบอาร์ติแฟกต์ Cloud Build จาก Cloud Storage

# The following command will take all source archives from all builds and delete them from cloud storage

# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}' 

gcloud builds list | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done

ลบบริการ Cloud Run

gcloud run services delete monolith --platform managed

คุณได้ทําการติดตั้งใช้งาน ปรับขนาด และอัปเดตเว็บไซต์ด้วย Cloud Run

ดูข้อมูลเพิ่มเติม