0Pricing
Cloud & IT Cert Prep · บทเรียน

Azure Container Apps

นำแอปพลิเคชันไมโครเซอร์วิสไปใช้งานบน Azure Container Apps พร้อมการผสานรวมไซด์คาร์ Dapr กำหนดค่าการรับส่งข้อมูลขาเข้า และใช้การปรับขนาดอัตโนมัติที่ทำงานด้วย KEDA ตามความลึกของคิว Service Bus

Azure Container Apps เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

Azure Container Apps คืออะไร

Azure Container Apps (ACA) คือบริการโฮสต์คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์ที่มีการจัดการเต็มรูปแบบ สร้างอยู่บน Kubernetes และ KEDA (Kubernetes Event-Driven Autoscaling) ซึ่งแตกต่างจาก AKS ตรงที่คุณไม่ต้องจัดการระนาบควบคุม กลุ่มโหนด หรือไฟล์กำหนดค่า Kubernetes โดยตรง แต่จะปรับใช้คอนเทนเนอร์โดยใช้ CLI หรือคำจำกัดความ YAML แบบง่าย ๆ และ Azure จะจัดการการประสานงานทั้งหมดให้ ACA เหมาะอย่างยิ่งสำหรับไมโครเซอร์วิส แบ็กเอนด์ API ตัวประมวลผลที่ขับเคลื่อนด้วยเหตุการณ์ และงานประมวลผลเบื้องหลังที่ต้องปรับขนาดแบบไดนามิก รวมถึงการลดขนาดลงเป็นศูนย์

สภาพแวดล้อมของ Container Apps

สภาพแวดล้อมของ Container Apps คือขอบเขตที่แยกออกจากกัน ซึ่งภายในนั้นจะมี Container Apps หนึ่งรายการขึ้นไปทำงานอยู่ แอปทั้งหมดในสภาพแวดล้อมเดียวกันใช้เครือข่ายเสมือนและพื้นที่ทำงาน Log Analytics เดียวกัน สภาพแวดล้อมจะกำหนดขอบเขตตามภูมิภาคและกลุ่มทรัพยากร คุณสามารถปรับใช้หลายสภาพแวดล้อมเพื่อแยกทีม หรือแยกระยะต่าง ๆ (การใช้งานจริงเทียบกับการจัดเตรียม) ได้ นอกจากนี้ยังสามารถเลือกให้สภาพแวดล้อมถูกแทรกเข้าใน VNetของคุณเอง เพื่อให้ Container Apps สื่อสารแบบส่วนตัวกับบริการ Azure อื่น ๆ ได้โดยไม่ต้องผ่านอินเทอร์เน็ตสาธารณะ

# Create a Container Apps environment
az containerapp env create \
  --name myACAEnvironment \
  --resource-group myRG \
  --location eastus

การปรับใช้ Container App

หากต้องการปรับใช้ Container App ให้ระบุอิมเมจคอนเทนเนอร์ (จาก Azure Container Registry หรือรีจิสทรีสาธารณะใดก็ได้) จำนวนแบบจำลอง และตัวแปรสภาพแวดล้อม หากเปิดใช้การรับส่งข้อมูลขาเข้าภายนอก แอปจะเข้าถึงได้แบบสาธารณะผ่าน URL HTTPS ที่สร้างขึ้นโดยอัตโนมัติ การกำหนดค่าการรับส่งข้อมูลขาเข้าประกอบด้วยพอร์ตเป้าหมาย การแบ่งการรับส่งข้อมูลสำหรับการปรับใช้แบบ blue-green และการอนุญาตให้ใช้ HTTP หรือเฉพาะ HTTPS ACA จะดึงอิมเมจในขณะปรับใช้ ดังนั้นสภาพแวดล้อมต้องมีสิทธิ์ดึงข้อมูลจากรีจิสทรี

# Deploy a container app from Azure Container Registry
az containerapp create \
  --name myapi \
  --resource-group myRG \
  --environment myACAEnvironment \
  --image myacr.azurecr.io/myapi:latest \
  --target-port 8080 \
  --ingress external \
  --registry-server myacr.azurecr.io \
  --min-replicas 1 \
  --max-replicas 10

การปรับขนาดอัตโนมัติด้วย KEDA

Container Apps ปรับขนาดโดยใช้ตัวปรับขนาดของ KEDA ซึ่งทำงานตามเมตริกภายนอก ตัวปรับขนาด KEDA ในตัวประกอบด้วย: ปริมาณการรับส่งข้อมูล HTTP (คำขอพร้อมกันต่อแบบจำลอง), ความลึกของคิว Azure Service Bus (จำนวนข้อความที่รอ), Azure Storage Queue, Cron (ตามเวลา) และCPU/Memory เมื่อเมตริกของตัวปรับขนาดลดลงเป็นศูนย์และกำหนด minReplicas เป็น 0, Container Apps จะลดขนาดลงเป็นศูนย์ — จึงไม่มีค่าใช้จ่ายด้านการประมวลผลจนกว่าจะมีคำขอใหม่ การลดขนาดลงเป็นศูนย์เหมาะอย่างยิ่งสำหรับตัวประมวลผลที่ขับเคลื่อนด้วยเหตุการณ์และมีภาระงานเป็นช่วง ๆ

# Scale based on Service Bus queue depth
az containerapp update \
  --name myworker \
  --resource-group myRG \
  --scale-rule-name sbqueue-scaler \
  --scale-rule-type azure-servicebus \
  --scale-rule-metadata 'queueName=orders' 'namespace=myservicebusns' 'messageCount=5' \
  --scale-rule-auth 'connection=servicebus-connection-secret:connection' \
  --min-replicas 0 \
  --max-replicas 20

การผสานรวม Dapr

Dapr (Distributed Application Runtime) คือรันไทม์แบบพกพาที่ขับเคลื่อนด้วยเหตุการณ์ ซึ่งช่วยให้การสร้างไมโครเซอร์วิสง่ายขึ้น Container Apps มีการผสานรวม Dapr ในตัว — คุณเปิดใช้แยกตามแต่ละแอปได้ด้วยแฟล็กเพียงรายการเดียว Dapr มีองค์ประกอบพื้นฐานสำหรับ: การเรียกใช้บริการ (พร้อมการลองใหม่และ mTLS), การส่งข้อความแบบเผยแพร่/สมัครรับข้อมูล (ซ่อนรายละเอียดของ Service Bus และ Event Hubs), การจัดการสถานะ (ซ่อนรายละเอียดของ Redis และ Cosmos DB) และการผูกเอาต์พุต ด้วย Dapr ไมโครเซอร์วิสจะสื่อสารผ่านไซด์คาร์ Dapr โดยไม่จำเป็นต้องทราบรายละเอียดโครงสร้างพื้นฐานเบื้องหลัง

# Enable Dapr on a Container App
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --enable-dapr \
  --dapr-app-id myapi \
  --dapr-app-port 8080 \
  --dapr-app-protocol http

การแก้ไขและการแบ่งการรับส่งข้อมูล

การปรับใช้ Container App แต่ละครั้งจะสร้างการแก้ไขใหม่ ในโหมดการแก้ไขหลายรายการ คุณสามารถแบ่งการรับส่งข้อมูลระหว่างการแก้ไขต่าง ๆ สำหรับการปรับใช้แบบ blue-green หรือ canary ได้ ตัวอย่างเช่น ส่งการรับส่งข้อมูล 10% ไปยังการแก้ไขใหม่ และ 90% ไปยังการแก้ไขที่เสถียรในปัจจุบัน ให้ตรวจสอบอัตราข้อผิดพลาดและเวลาแฝงของการแก้ไขใหม่ก่อนเพิ่มสัดส่วนการรับส่งข้อมูลเป็น 100% การแก้ไขเก่าสามารถปิดใช้งานได้ แต่จะยังคงอยู่ในประวัติ ทำให้ย้อนกลับได้ทันทีโดยเปลี่ยนสัดส่วนการรับส่งข้อมูลกลับ

# Set traffic split between two revisions
az containerapp ingress traffic set \
  --name myapi \
  --resource-group myRG \
  --revision-weight myapi--abc123=90 myapi--def456=10

ข้อมูลลับและตัวแปรสภาพแวดล้อม

Container Apps รองรับการแทรกการกำหนดค่าสองวิธี ได้แก่ ตัวแปรสภาพแวดล้อม (สำหรับการกำหนดค่าที่ไม่ละเอียดอ่อน เช่น แฟล็กคุณลักษณะหรือ URL ของ API) และข้อมูลลับ (สำหรับค่าที่ละเอียดอ่อน เช่น สตริงการเชื่อมต่อ) ข้อมูลลับจะจัดเก็บในระดับ Container App และอ้างอิงผ่านตัวแปรสภาพแวดล้อมหรือส่วนประกอบ Dapr สำหรับการตั้งค่าที่ปลอดภัยที่สุด ให้อ้างอิงข้อมูลลับจาก Azure Key Vault โดยใช้ข้อมูลระบุตัวตนที่มีการจัดการ เพื่อให้ดึงค่าข้อมูลลับขณะทำงานและไม่จัดเก็บไว้ในระนาบการกำหนดค่าของ Container App

# Add a secret to a Container App
az containerapp secret set \
  --name myapi \
  --resource-group myRG \
  --secrets 'db-password=supersecretpassword'

# Reference the secret as an environment variable
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --set-env-vars 'DB_PASSWORD=secretref:db-password'

งาน: เวิร์กโหลดที่ทำงานจนเสร็จสิ้น

Container Apps Jobs ขยายขีดความสามารถของแพลตฟอร์มเพื่อรองรับเวิร์กโหลดที่ทำงานจนเสร็จสิ้น — คอนเทนเนอร์ที่เริ่มทำงาน ประมวลผล แล้วจบการทำงาน Jobs รองรับทริกเกอร์สามประเภท ได้แก่ Manual (ทริกเกอร์ผ่าน API หรือ CLI), Scheduled (นิพจน์ cron) และ Event-driven (ทริกเกอร์จากตัวปรับขนาด KEDA ในการทำงานแต่ละครั้ง) Jobs จะคิดค่าบริการเฉพาะเวลาที่ทำงานจริง จึงเหมาะอย่างยิ่งสำหรับการประมวลผลแบบกลุ่ม การสร้างรายงาน การย้ายฐานข้อมูล และไปป์ไลน์การอนุมานด้วย ML ที่ทำงานเป็นระยะหรือตอบสนองต่อเหตุการณ์

# Create a scheduled Container Apps job (run every hour)
az containerapp job create \
  --name my-batch-job \
  --resource-group myRG \
  --environment myACAEnvironment \
  --trigger-type Schedule \
  --cron-expression '0 * * * *' \
  --image myacr.azurecr.io/batchjob:latest \
  --cpu 0.5 --memory 1Gi

การสังเกตการณ์ระบบ: บันทึกและเมตริก

Container Apps ส่งบันทึกระบบ (เหตุการณ์ของแพลตฟอร์ม เช่น การสร้างรุ่นและการปรับขนาด) และบันทึกคอนโซล (stdout/stderr ของแอปพลิเคชันของคุณ) ไปยังพื้นที่ทำงาน Log Analytics ที่แนบกับสภาพแวดล้อม คุณสามารถสอบถามบันทึกด้วย KQL: ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'myapi' | project TimeGenerated, Log_s เมตริก Azure Monitor ในตัวประกอบด้วยจำนวนเรพลิกา จำนวนคำขอ เวลาแฝงของคำขอ และการใช้ CPU/หน่วยความจำต่อเรพลิกา ทั้งหมดนี้พร้อมใช้งานในพอร์ทัล Azure โดยไม่ต้องกำหนดค่าเพิ่มเติม

# Stream live logs from a Container App
az containerapp logs show \
  --name myapi \
  --resource-group myRG \
  --follow

ACA เทียบกับ AKS เทียบกับ App Service

การเลือกแพลตฟอร์มคอนเทนเนอร์ Azure ที่เหมาะสม: Container Apps เหมาะที่สุดสำหรับไมโครเซอร์วิส ผู้ทำงานที่ขับเคลื่อนด้วยเหตุการณ์ และ API ที่คุณต้องการประโยชน์ของ Kubernetes โดยไม่ต้องจัดการคลัสเตอร์ โดยเฉพาะเมื่อการปรับขนาดจนเหลือศูนย์มีประโยชน์ AKS เหมาะที่สุดเมื่อคุณต้องการควบคุม Kubernetes อย่างเต็มรูปแบบ ตัวดำเนินการแบบกำหนดเอง หรือการกำหนดค่าโหนดเฉพาะ (GPU, หน่วยความจำสูง) ส่วน App Service เหมาะที่สุดสำหรับเว็บแอปพลิเคชันและ API แบบดั้งเดิมที่ทีมพัฒนาต้องการรูปแบบ PaaS ที่เรียบง่ายโดยไม่ต้องรับภาระการจัดการคอนเทนเนอร์ ทั้งสามบริการรองรับคอนเทนเนอร์ ความแตกต่างอยู่ที่ความซับซ้อนในการจัดการเมื่อเทียบกับระดับการควบคุม

เครือข่าย: ทางเข้าใช้งานภายในและภายนอก

Container Apps รองรับโหมดทางเข้าสองแบบ ได้แก่ External (เข้าถึงได้จากสาธารณะผ่านปลายทาง HTTPS ที่กระจายโหลดและมี TLS อัตโนมัติ) และ Internal (เข้าถึงได้เฉพาะจากภายในสภาพแวดล้อม Container Apps เดียวกันหรือจากทรัพยากรที่เชื่อมต่อกับ VNet แบบเพียร์) ทางเข้าแบบ Internal ใช้สำหรับบริการแบ็กเอนด์ที่ไม่ควรเปิดเผยต่ออินเทอร์เน็ตไม่ว่าในกรณีใด แอปสามารถเรียกใช้กันได้โดยใช้ชื่อ DNS ภายในที่สร้างขึ้นโดยอัตโนมัติ http://myapi ภายในสภาพแวดล้อมเดียวกัน ทำให้สื่อสารระหว่างบริการได้อย่างง่ายดายโดยไม่ต้องปรับใช้เกตเวย์ API

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Azure Container Apps ให้บริการโฮสต์คอนเทนเนอร์แบบไร้เซิร์ฟเวอร์ที่สร้างบน Kubernetes และ KEDA โดยไม่ต้องจัดการคลัสเตอร์, ตัวปรับขนาด KEDA ช่วยให้ปรับขนาดจนเหลือศูนย์ตามความลึกของคิว ปริมาณการรับส่งข้อมูล HTTP หรือกำหนดการ cron และการผสานรวม Dapr ช่วยให้การสื่อสารระหว่างไมโครเซอร์วิสและการจัดการสถานะง่ายขึ้น ขั้นถัดไป เราจะเชื่อมโยงทุกอย่างเข้ากับเวิร์กโฟลว์สำหรับนักพัฒนาแบบครบวงจร

คำถามที่พบบ่อย

บทเรียน “Azure Container Apps” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Azure Container Apps” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Azure Container Apps”

นำแอปพลิเคชันไมโครเซอร์วิสไปใช้งานบน Azure Container Apps พร้อมการผสานรวมไซด์คาร์ Dapr กำหนดค่าการรับส่งข้อมูลขาเข้า และใช้การปรับขนาดอัตโนมัติที่ทำงานด้วย KEDA ตามความลึกของคิว Service Bus คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Azure Container Apps” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ข้อมูลประจำตัวที่จัดการเพื่อการยืนยันตัวตนแบบไร้รหัสผ่าน
  2. Azure Service Bus สำหรับการส่งข้อความแบบแยกส่วน
  3. Azure Container Apps
  4. เวิร์กโฟลว์นักพัฒนาแบบต้นจนจบ
← กลับไปที่ Cloud & IT Cert Prep