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

1. ก่อนเริ่มต้น

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

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

ในโค้ดแล็บนี้ คุณจะเริ่มด้วยอิมเมจ 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 ที่มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบเพื่อสร้างโปรเจ็กต์หรือโปรเจ็กต์ที่มีบทบาทเจ้าของโปรเจ็กต์

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

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

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

53dad2cefdae71da.png

faab21976aabeb4c.png

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

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

เปิดใช้ Cloud Run API

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

5dbb2e6e27a55fcf.png

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

f1fd486174a744cf.png

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

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

Cloud Shell

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

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

  1. หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (ระบบจะใช้เวลาเพียงไม่กี่นาทีในการเตรียมการและเชื่อมต่อกับสภาพแวดล้อม)

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

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>

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

gcloud config set project <PROJECT_ID>

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

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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

echo $GOOGLE_CLOUD_PROJECT

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

<PROJECT_ID>
  1. สุดท้าย ให้กำหนดโซนและการกำหนดค่าโปรเจ็กต์เริ่มต้น
gcloud config set compute/zone us-central1-f

คุณเลือกโซนต่างๆ ได้ ดูข้อมูลเพิ่มเติมได้ที่ภูมิภาคและโซน

3. โคลนที่เก็บซอร์ส

เนื่องจากคุณจะทําให้เว็บไซต์ที่มีอยู่ใช้งานได้ คุณจึงต้องโคลนซอร์สโค้ดจากที่เก็บเท่านั้น เพื่อให้คุณมุ่งเน้นที่การสร้างอิมเมจ 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!

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

5869738f0e9ec386.png

ซึ่งจะเปิดหน้าต่างใหม่ให้คุณเห็นการทำงานของ Fancy Store

9ed25c3f0cbe62fa.png

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

4. สร้างคอนเทนเนอร์ Docker ด้วย Cloud Build

เมื่อไฟล์ต้นฉบับพร้อมใช้งานแล้ว ก็ถึงเวลาทำให้แอปเป็น Docker แล้ว

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

Cloud Build จะบีบอัดไฟล์จากไดเรกทอรีและย้ายไปยังที่เก็บข้อมูล Cloud Storage จากนั้นกระบวนการสร้างจะนําไฟล์ทั้งหมดจากที่เก็บข้อมูล และใช้ Dockerfile ซึ่งอยู่ในไดเรกทอรีเดียวกันเพื่อเรียกใช้กระบวนการสร้าง Docker เนื่องจากคุณได้ระบุ Flag --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 .

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

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 Build > ประวัติ คุณจะเห็นรายการบิลด์ก่อนหน้าทั้งหมด แต่ควรมีเพียงรายการที่คุณสร้างขึ้นเท่านั้น

4c753ede203255f6.png

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

6e88ed1643dfe629.png

5. ทำให้คอนเทนเนอร์ใช้งานได้กับ Cloud Run

เมื่อคุณจัดคอนเทนเนอร์เว็บไซต์และพุชไปยัง 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 

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

d52d9419c5166674.png

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

3a57b32f133dad61.png

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

หากต้องการยืนยันว่าสร้างการใช้งานเรียบร้อยแล้ว ให้เรียกใช้คําสั่งต่อไปนี้ ระบบอาจใช้เวลาสักครู่ในการRunning Pod status

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 ที่ระบุไว้ในรายการบริการในเว็บเบราว์เซอร์ แล้วคุณควรเห็นเว็บไซต์เดียวกับที่แสดงตัวอย่างในเครื่อง

6. สร้างการแก้ไขใหม่ที่มีการทำงานพร้อมกันน้อยลง

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

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

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

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

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

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

7d1eed2e4728a4f2.png

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

217185c0eccc87dd.png]

4ad481b8bcd0343d.png

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

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

เรียกใช้คําสั่งต่อไปนี้ใน Cloud Shell เพื่ออัปเดตการแก้ไขปัจจุบัน

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

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

7. ทำการเปลี่ยนแปลงเว็บไซต์

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

ดูเหมือนว่านักพัฒนาแอปคนใดคนหนึ่งของคุณได้สร้างการเปลี่ยนแปลงที่มีชื่อไฟล์ 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 และคัดลอกลงในไดเรกทอรีสาธารณะแบบโมโนลิธิก

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 .

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

8. อัปเดตเว็บไซต์โดยไม่มีการหยุดทำงาน

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

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

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

451ca252acae6928.png

9. ล้างข้อมูล

ลบอิมเมจ 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

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

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

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