1. บทนำ
Cloud Run เป็นแพลตฟอร์มที่มีการจัดการซึ่งทำให้คุณเรียกใช้คอนเทนเนอร์แบบไม่เก็บสถานะที่เรียกใช้ผ่านคำขอ HTTP ได้ Cloud Run เป็นแบบ Serverless ด้วยการตัดการจัดการโครงสร้างพื้นฐานทั้งหมดออก คุณจึงมุ่งเน้นไปที่การสร้างแอปพลิเคชันที่ยอดเยี่ยม ซึ่งเป็นสิ่งที่สำคัญที่สุดได้
โดยสร้างขึ้นจาก Knative ซึ่งให้คุณเลือกที่จะเรียกใช้คอนเทนเนอร์ที่มีการจัดการครบวงจรด้วย Cloud Run หรือในคลัสเตอร์ Google Kubernetes Engine ด้วย Cloud Run บน GKE ได้
เป้าหมายของ Codelab นี้คือการสร้างอิมเมจคอนเทนเนอร์และทำให้ใช้งานได้กับ Cloud Run
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตวิธีการชำระเงินได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID
) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้ใช้งานหรือไม่ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าเหล่านี้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD
Google Cloud Shell
แม้ Google Cloud จะทำงานจากระยะไกลได้จากแล็ปท็อป แต่ใน Codelab นี้ เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
Cloud Shell คือสภาพแวดล้อมในการพัฒนาซอฟต์แวร์และการดำเนินการออนไลน์ที่เข้าถึงได้ทุกที่ด้วยเบราว์เซอร์ของคุณ คุณจัดการทรัพยากรได้ด้วยเทอร์มินัลออนไลน์ที่โหลดไว้ล่วงหน้าพร้อมกับยูทิลิตี เช่น เครื่องมือบรรทัดคำสั่ง gcloud, kubectl และอื่นๆ นอกจากนี้ คุณยังพัฒนา สร้าง แก้ไขข้อบกพร่อง และทำให้แอปในระบบคลาวด์ใช้งานได้โดยใช้ Cloud Shell Editor ออนไลน์
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานถาวรใน Google Cloud โดยตรง ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าสิ่งที่คุณต้องมีสำหรับ Codelab นี้คือเบราว์เซอร์ (ใช่แล้ว ทั้งหมดนี้ทำงานได้บน Chromebook)
- หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell ดังนี้
หากเริ่มต้นใช้งาน Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอตรงกลางที่อธิบายว่านี่คืออะไร หากระบบแสดงหน้าจอตรงกลาง ให้คลิกต่อไป
การจัดสรรสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่วินาที :
เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าคุณผ่านการตรวจสอบสิทธิ์แล้ว :
gcloud auth list
เอาต์พุตจากคำสั่ง
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
ควรตั้งค่าโปรเจ็กต์เป็น PROJECT_ID
อยู่แล้ว (สมมติว่าคุณได้เลือกโปรเจ็กต์ในเว็บคอนโซล) :
gcloud config list project
เอาต์พุตจากคำสั่ง
[core] project = <PROJECT_ID>
หากโปรเจ็กต์ไม่ได้ตั้งค่าไว้ด้วยเหตุผลบางประการ ให้ใช้คำสั่งต่อไปนี้
gcloud config set project <PROJECT_ID>
กำลังมองหา PROJECT_ID
ของคุณอยู่ใช่ไหม ดูเมนูแบบเลื่อนลงที่ด้านบนของ Cloud Console
นอกจากนี้ คุณยังตรวจสอบรายละเอียดโปรเจ็กต์ได้โดยใช้ "การตั้งค่าและยูทิลิตี" ส่วน:
Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมโดยค่าเริ่มต้นด้วย ซึ่งอาจเป็นประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต
echo $GOOGLE_CLOUD_PROJECT
เอาต์พุตจากคำสั่ง
<PROJECT_ID>
- สุดท้าย คุณสามารถตั้งค่าโซนเริ่มต้นได้โดยทำดังนี้
gcloud config set compute/zone us-central1-f
คุณเลือกโซนต่างๆ ได้ ดูข้อมูลเพิ่มเติมได้ที่ภูมิภาคและ โซน
เปิดใช้ Cloud Run API
จาก Cloud Shell ให้เปิดใช้ Cloud Run API ดังนี้
gcloud services enable run.googleapis.com
ซึ่งจะให้ผลลัพธ์ข้อความที่ดีคล้ายกับข้อความต่อไปนี้ :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. เขียนแอปพลิเคชันตัวอย่าง
เราจะสร้างแอปพลิเคชัน ASP.NET C# แบบง่ายที่ตอบสนองต่อคำขอ HTTP
หากต้องการสร้างแอปพลิเคชัน ให้ใช้เครื่องมือบรรทัดคำสั่ง dotnet
ใน Cloud Shell:
dotnet new web -o helloworld-csharp
เปลี่ยนเป็นไดเรกทอรี helloworld-csharp
:
cd helloworld-csharp
จากนั้นอัปเดต Program.cs
ให้ตรงกับรายการต่อไปนี้
var builder = WebApplication.CreateBuilder(args); var port = Environment.GetEnvironmentVariable("PORT") ?? "8080"; var url = $"http://0.0.0.0:{port}"; builder.WebHost.UseUrls(url); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
โค้ดนี้จะสร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รอฟังพอร์ตซึ่งกำหนดโดยตัวแปรสภาพแวดล้อม PORT
และตอบกลับด้วย Hello World
คุณทดสอบแอปได้โดยเรียกใช้ภายในเครื่องใน Cloud Shell คุณควรเห็นมันฟังอยู่บนพอร์ต 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. ทำให้ใช้งานได้กับ Cloud Run
ทำให้แอปพลิเคชันของคุณใช้งานได้ใน Cloud Run ด้วยคำสั่งต่อไปนี้
gcloud run deploy hello-world \ --allow-unauthenticated \ --region us-central1 \ --source .
hello-world
คือชื่อบริการ- แฟล็ก
allow-unauthenticated
จะทำให้บริการดังกล่าวใช้งานได้แบบสาธารณะโดยไม่มีข้อกำหนดการตรวจสอบสิทธิ์ us-central1
คือภูมิภาคที่จะติดตั้งใช้งานแอป- แฟล็ก
source
ระบุตำแหน่งของแหล่งที่มาที่จะสร้าง Cloud Run ใช้ชุดบิลด์เพื่อสร้างคอนเทนเนอร์จากซอร์สโค้ดโดยอัตโนมัติ
รอสักครู่จนกว่าการทำให้ใช้งานได้จะเสร็จสมบูรณ์ เมื่อทำสำเร็จ บรรทัดคำสั่งจะแสดง URL ของบริการดังนี้
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
ตอนนี้คุณสามารถไปที่คอนเทนเนอร์ที่ทำให้ใช้งานได้แล้วโดยเปิด URL บริการในเว็บเบราว์เซอร์ ดังนี้
ยินดีด้วย คุณเพิ่งทำให้แอปพลิเคชันที่แพ็กเกจในอิมเมจคอนเทนเนอร์ใช้งานได้กับ Cloud Run Cloud Run จะปรับขนาดอิมเมจคอนเทนเนอร์โดยอัตโนมัติและในแนวนอนเพื่อจัดการคำขอที่ได้รับ จากนั้นจึงลดขนาดลงเมื่อความต้องการลดลง คุณจะจ่ายเฉพาะ CPU, หน่วยความจำ และเครือข่ายที่ใช้ในระหว่างการจัดการคำขอเท่านั้น
5. ได้เวลาล้างข้อมูลแล้ว
คุณอาจตัดสินใจลบโปรเจ็กต์ GCP เพื่อหลีกเลี่ยงการเรียกเก็บเงิน ซึ่งจะเป็นการหยุดการเรียกเก็บเงินสำหรับทรัพยากรทั้งหมดที่ใช้ในโปรเจ็กต์นั้น หรือเพียงลบบริการ Cloud Run ตามขั้นตอนต่อไปนี้
gcloud run services delete helloworld
6. ขั้นตอนถัดไปคือ
ขั้นตอนต่อไปที่ดีคือทำให้ใช้งานได้กับ Cloud Run บน GKE
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคอนเทนเนอร์ HTTP แบบไม่เก็บสถานะที่เหมาะสำหรับ Cloud Run จากแหล่งที่มาของโค้ดและการพุชไปยัง Container Registry ได้ที่