1. บทนำ

Cloud Run เป็นแพลตฟอร์มคำนวณที่มีการจัดการซึ่งทำให้คุณเรียกใช้คอนเทนเนอร์แบบไม่เก็บสถานะที่เรียกใช้ผ่านคำขอ HTTP ได้ โดยสร้างขึ้นบนโปรเจ็กต์โอเพนซอร์ส Knative ซึ่งช่วยให้คุณย้ายปริมาณงานในแพลตฟอร์มต่างๆ ได้ Cloud Run เป็นแบบ Serverless ด้วยการตัดการจัดการโครงสร้างพื้นฐานทั้งหมดออก คุณจึงมุ่งเน้นไปที่การสร้างแอปพลิเคชันที่ยอดเยี่ยม ซึ่งเป็นสิ่งที่สำคัญที่สุดได้
เป้าหมายของบทแนะนำนี้คือการสร้างเว็บแอปพลิเคชันอย่างง่ายและทำให้ใช้งานได้ใน Cloud Run
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลในแล็ปท็อปได้ แต่ในบทแนะนำนี้ คุณจะได้ใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell


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

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่จำเป็นไว้แล้ว โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานส่วนใหญ่หรือทั้งหมดในโค้ดแล็บนี้ได้ด้วยเบราว์เซอร์
เมื่อเชื่อมต่อกับ 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. เปิดใช้ API
จาก Cloud Shell ให้เปิดใช้ Artifact Registry, Cloud Build และ Cloud Run API โดยทำดังนี้
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
ซึ่งจะแสดงข้อความแสดงความสำเร็จที่คล้ายกับข้อความนี้
Operation "operations/..." finished successfully.
ตอนนี้คุณก็พร้อมที่จะเริ่มทำงานและเขียนแอปพลิเคชันแล้ว...
4. เขียนแอปพลิเคชัน
ในขั้นตอนนี้ คุณจะสร้างแอปพลิเคชัน Python แบบง่ายที่ใช้ Flask ซึ่งตอบสนองต่อคำขอ HTTP
ไดเรกทอรีที่ใช้งานอยู่
ใช้ Cloud Shell เพื่อสร้างไดเรกทอรีการทำงานชื่อ helloworld-python แล้วเปลี่ยนไปใช้ไดเรกทอรีดังกล่าวโดยทำดังนี้
mkdir ~/helloworld-python cd ~/helloworld-python
main.py
สร้างไฟล์ชื่อ main.py:
touch main.py
แก้ไขไฟล์ด้วยโปรแกรมแก้ไขบรรทัดคำสั่งที่คุณต้องการ (nano, vim หรือ emacs) หรือโดยคลิกปุ่ม Cloud Shell Editor

หากต้องการแก้ไขไฟล์โดยตรงด้วย Cloud Shell Editor ให้ใช้คำสั่งนี้
cloudshell edit main.py
main.py
from flask import Flask, request
app = Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
who = request.args.get("who", default="World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Development only: run "python main.py" and open http://localhost:8080
# When deploying to Cloud Run, a production-grade WSGI HTTP server,
# such as Gunicorn, will serve the app.
app.run(host="localhost", port=8080, debug=True)
โค้ดนี้สร้างบริการเว็บพื้นฐานที่ตอบสนองต่อคำขอ HTTP GET ด้วยข้อความที่เป็นมิตร
requirements.txt
เพิ่มไฟล์ชื่อ requirements.txt เพื่อกำหนดการอ้างอิง
touch requirements.txt
หากต้องการแก้ไขไฟล์โดยตรงด้วย Cloud Shell Editor ให้ใช้คำสั่งนี้
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/flask
Flask==3.0.2
# https://pypi.org/project/gunicorn
gunicorn==21.2.0
Procfile
สุดท้าย ให้เพิ่มไฟล์ชื่อ Procfile เพื่อระบุวิธีแสดงแอปพลิเคชัน
touch Procfile
หากต้องการแก้ไขไฟล์โดยตรงด้วย Cloud Shell Editor ให้ใช้คำสั่งนี้
cloudshell edit Procfile
Procfile
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
ตรวจสอบว่ามีไฟล์ทั้งหมดอยู่ในไดเรกทอรีการทำงาน
ls
ซึ่งควรแสดงไฟล์ต่อไปนี้
main.py Procfile requirements.txt
แอปพลิเคชันของคุณพร้อมที่จะนำไปใช้งานแล้ว แต่เรามาทดสอบกันก่อนดีกว่า...
5. ทดสอบแอปพลิเคชัน
หากต้องการทดสอบแอปพลิเคชัน ให้สร้างสภาพแวดล้อมเสมือนจริงโดยทำดังนี้
virtualenv venv
เปิดใช้งานสภาพแวดล้อมเสมือน
source venv/bin/activate
ติดตั้งการอ้างอิง:
pip install -r requirements.txt
คุณควรได้รับข้อความยืนยันดังต่อไปนี้
... Successfully installed Flask ... gunicorn ...
เปิดแอปพลิเคชันโดยทำดังนี้
python main.py
บันทึกจะแสดงว่าคุณอยู่ในโหมดการพัฒนา
* Serving Flask app 'main' * Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://localhost:8080 Press CTRL+C to quit ...
ในหน้าต่าง Cloud Shell ให้คลิกไอคอน Web Preview แล้วเลือก Preview on port 8080 ดังนี้

ซึ่งควรจะเปิดหน้าต่างเบราว์เซอร์ที่แสดงข้อความ Hello World!
คุณยังเปิดเซสชัน Cloud Shell อีกเซสชันหนึ่ง (แท็บเทอร์มินัลใหม่) ได้โดยคลิกไอคอน + แล้วส่งคำขอเว็บไปยังแอปพลิเคชันที่ทำงานในเครื่อง
curl localhost:8080
คุณควรได้รับคำตอบต่อไปนี้
Hello World!
เมื่อเสร็จแล้ว ให้กลับไปที่เซสชัน Cloud Shell หลักและหยุดคำสั่ง python main.py ด้วย CTRL+C
ออกจากสภาพแวดล้อมเสมือน
deactivate
สุดท้าย ให้นำไดเรกทอรีสภาพแวดล้อมเสมือนออกโดยทำดังนี้
rm -r venv/
แอปพลิเคชันทำงานได้ตามที่คาดไว้ มาทำให้ใช้งานได้กันเลย
6. ทำให้ใช้งานได้กับ Cloud Run
Cloud Run เป็นบริการระดับภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้บริการ Cloud Run จะอยู่ในภูมิภาคที่เฉพาะเจาะจงและได้รับการจัดการโดย Google เพื่อให้พร้อมใช้งานซ้ำซ้อนในทุกโซนภายในภูมิภาคนั้น กำหนดภูมิภาคที่จะใช้สำหรับการติดตั้งใช้งาน เช่น
REGION="europe-west9"
ตรวจสอบว่าคุณยังอยู่ในไดเรกทอรีการทำงาน
ls
ซึ่งควรแสดงไฟล์ต่อไปนี้
main.py Procfile requirements.txt
ทำให้แอปพลิเคชันใช้งานได้กับ Cloud Run โดยทำดังนี้
gcloud run deploy helloworld-python \ --source . \ --platform managed \ --region $REGION \ --allow-unauthenticated
- คุณกำหนดภูมิภาคเริ่มต้นได้ด้วยคำสั่ง
gcloud config set run/region $REGION - นอกจากนี้ คุณยังทำให้ Cloud Run เป็นบริการที่มีการจัดการโดยค่าเริ่มต้นได้ด้วยคำสั่งนี้
gcloud config set run/platform managed - ตัวเลือก
--allow-unauthenticatedจะทำให้บริการพร้อมให้บริการแก่บุคคลทั่วไป โปรดใช้--no-allow-unauthenticatedแทนเพื่อหลีกเลี่ยงคำขอที่ไม่ได้รับการตรวจสอบสิทธิ์
ในครั้งแรก คุณจะได้รับข้อความแจ้งให้สร้างที่เก็บ Artifact Registry แตะ Enter เพื่อตรวจสอบ
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
ซึ่งจะเริ่มการอัปโหลดซอร์สโค้ดไปยังที่เก็บ Artifact Registry และสร้างอิมเมจคอนเทนเนอร์
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
จากนั้นรอสักครู่จนกว่าการติดตั้งใช้งานจะเสร็จสมบูรณ์ เมื่อสำเร็จ บรรทัดคำสั่งจะแสดง URL ของบริการดังนี้
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
คุณรับ URL ของบริการได้ด้วยคำสั่งต่อไปนี้
SERVICE_URL=$( \ gcloud run services describe helloworld-python \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
ซึ่งควรแสดงข้อมูลดังต่อไปนี้
https://helloworld-python-PROJECTHASH-REGIONID.a.run.app
ตอนนี้คุณใช้แอปพลิเคชันได้แล้วโดยเปิด URL ของบริการในเว็บเบราว์เซอร์

นอกจากนี้ คุณยังเรียกใช้แอปพลิเคชันจาก Cloud Shell ได้ด้วย
curl $SERVICE_URL?who=me
ซึ่งควรจะทำให้คุณได้รับการทักทายตามที่คาดไว้
Hello me!
ยินดีด้วย คุณเพิ่งติดตั้งใช้งานแอปพลิเคชันใน Cloud Run Cloud Run จะปรับขนาดรูปภาพคอนเทนเนอร์ในแนวนอนโดยอัตโนมัติเพื่อจัดการคำขอที่ได้รับ จากนั้นจะปรับขนาดลงเมื่อความต้องการลดลง คุณจะจ่ายเฉพาะค่า CPU, หน่วยความจำ และเครือข่ายที่ใช้ไปในระหว่างการจัดการคำขอ
7. ล้างข้อมูล
แม้ว่า Cloud Run จะไม่เรียกเก็บเงินเมื่อไม่ได้ใช้บริการ แต่คุณอาจยังคงถูกเรียกเก็บเงินสำหรับการจัดเก็บอิมเมจคอนเทนเนอร์ใน Artifact Registry คุณสามารถลบที่เก็บหรือลบโปรเจ็กต์ Cloud เพื่อหลีกเลี่ยงการเรียกเก็บเงิน การลบโปรเจ็กต์ Cloud จะหยุดการเรียกเก็บเงินสำหรับทรัพยากรทั้งหมดที่ใช้ภายในโปรเจ็กต์นั้น
วิธีลบที่เก็บรูปภาพคอนเทนเนอร์
gcloud artifacts repositories delete cloud-run-source-deploy \ --location $REGION
วิธีลบบริการ Cloud Run
gcloud run services delete helloworld-python \ --platform managed \ --region $REGION
วิธีลบโปรเจ็กต์ Google Cloud
- ดึงข้อมูลรหัสโปรเจ็กต์ปัจจุบัน
PROJECT_ID=$(gcloud config get-value core/project)
- โปรดตรวจสอบว่าโปรเจ็กต์ที่คุณต้องการลบคือโปรเจ็กต์นี้
echo $PROJECT_ID
- ลบโปรเจ็กต์
gcloud projects delete $PROJECT_ID
8. ยินดีด้วย

คุณสร้างเว็บแอปพลิเคชันอย่างง่ายและทําให้ใช้งานได้กับ Cloud Run แล้ว
ดูข้อมูลเพิ่มเติม
- ดูเอกสารประกอบ Cloud Run
- ดูตัวเลือกเพิ่มเติมได้ที่ Dev to Prod ใน 3 ขั้นตอนง่ายๆ ด้วย Cloud Run
- ทำตามขั้นตอนใน Django บน Cloud Run เพื่อสร้างฐานข้อมูล Cloud SQL จัดการข้อมูลเข้าสู่ระบบด้วย Secret Manager และติดตั้งใช้งาน Django
- ดู Codelab ของ Cloud Run เพิ่มเติม...
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป