วิธีตั้งค่า Argo Rollouts เพื่อทำ Canary Deployments บน Kubernetes อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีตั้งค่า Argo Rollouts เพื่อทำ Canary Deployments บน Kubernetes อย่างปลอดภัย

⚡ สรุป 30 วิ

Argo Rollouts เป็นส่วนเสริมของ Kubernetes ที่ช่วยให้ทำ Canary Deployments ได้อย่างอัตโนมัติและมีการควบคุมที่ละเอียด การตั้งค่าที่ถูกต้องจะลดความเสี่ยงจากข้อผิดพลาดในขั้นตอนปล่อยเวอร์ชันใหม่ บทความนี้จ…

Overview

Argo Rollouts เป็นส่วนเสริมของ Kubernetes ที่ช่วยให้ทำ Canary Deployments ได้อย่างอัตโนมัติและมีการควบคุมที่ละเอียด การตั้งค่าที่ถูกต้องจะลดความเสี่ยงจากข้อผิดพลาดในขั้นตอนปล่อยเวอร์ชันใหม่ บทความนี้จะแนะนำวิธีติดตั้งและกำหนดค่า Argo Rollouts เพื่อทำ Canary Deployment อย่างปลอดภัยบนคลัสเตอร์ Kubernetes ของคุณ

Prerequisites

ก่อนเริ่มต้องตรวจสอบว่าเครื่องมือพื้นฐานพร้อมใช้งานแล้ว

  • มี kubectl เชื่อมต่อกับคลัสเตอร์ที่ต้องการ
  • คลัสเตอร์ติดตั้ง Helm 3 หรือใช้ `kubectl apply` ได้
  • แอปพลิเคชันตัวอย่างที่ทำงานบน Docker image พร้อม tag เวอร์ชัน

Install Argo Rollouts

การติดตั้งสามารถทำได้สองวิธีหลัก คือ Helm และ Manifest โดยเลือกวิธีใดก็ได้ตามความสะดวก

  • **วิธีที่ 1: ใช้ Helm
  • เพิ่ม repository `helm repo add argo https://argoproj.github.io/argo-helm`
  • อัพเดท cache `helm repo update`
  • ติดตั้งด้วยค่าเริ่มต้น `helm install argo-rollouts argo/argo-rollouts --namespace argo-rollouts --create-namespace`
  • **วิธีที่ 2: ใช้ Manifest
  • ดึงไฟล์ YAML ล่าสุดจาก GitHub `curl -sSL https://raw.githubusercontent.com/argoproj/argo-rollouts/master/manifests/install.yaml | kubectl apply -f -`
  • ตรวจสอบว่า CRD ถูกสร้าง `kubectl get crd rollouts.argoproj.io`
**Tip: ควรติดตั้งใน namespace แยกเพื่อให้การจัดการและอัพเกรดง่ายขึ้น

Configure Canary Strategy

Argo Rollouts ใช้ Custom Resource Definition (CRD) ชื่อ *Rollout* เพื่อกำหนดกลยุทธ์ การตั้งค่า Canary ต้องระบุขั้นตอนการปล่อยและเงื่อนไขตรวจสอบ

  • สร้างไฟล์ `canary-rollout.yaml` ด้วยโครงสร้างพื้นฐาน
  • ระบุตัว apiVersion: `argoproj.io/v1alpha1` และ kind: `Rollout`
  • กำหนด metadata ชื่อ rollout ที่ต้องการ
  • ในส่วน spec ใส่ strategy เป็น `canary`
  • ตั้งค่า steps เพื่อควบคุมเปอร์เซ็นต์ traffic
  • ตัวอย่าง: `- setWeight: 10`, `- pause: {duration: 2m}` จะเพิ่มน้ำหนักเป็น 10% แล้วหยุด 2 นาทีเพื่อรอการตรวจสอบ
  • เพิ่ม analysisTemplate หากต้องการทำ automated metric check เช่น error rate หรือ latency

Deploy Example Application

ใช้แอปพลิเคชัน Nginx ตัวอย่างที่มี tag เวอร์ชันต่าง ๆ เพื่อทดสอบ Canary

  • **ขั้นตอนที่ 1: สร้าง Deployment ปกติสำหรับเวอร์ชัน stable

```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-stable spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx version: stable spec: containers:

  • name: nginx

image: nginx:1.21 ```

  • **ขั้นตอนที่ 2: ใช้ Rollout ที่กำหนด Canary เพื่อลงเวอร์ชันใหม่ `nginx:1.22`

```yaml apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: nginx-canary spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers:

  • name: nginx

image: nginx:1.22 strategy: canary: steps:

  • setWeight: 10
  • pause: {duration: 2m}
  • setWeight: 30
  • pause: {duration: 3m}

```

  • **ขั้นตอนที่ 3: ใช้คำสั่ง `kubectl apply -f canary-rollout.yaml` แล้วตรวจสอบสถานะด้วย `kubectl argo rollouts get rollout nginx-canary`

Verify and Monitor

การมอนิเตอร์เป็นส่วนสำคัญเพื่อให้ Canary ปลอดภัย

  • ตรวจสอบ weight ของ traffic ด้วย `kubectl argo rollouts get rollout nginx-canary --watch`
  • เชื่อมต่อ Prometheus หรือ Datadog กับ metric ที่กำหนดใน analysisTemplate เพื่อรับสัญญาณว่าแอปทำงานตามคาดหรือไม่
  • หากพบข้อผิดพลาดให้ใช้คำสั่ง `kubectl argo rollouts abort nginx-canary` เพิ่อยกเลิก rollout ทันที
กลยุทธ์การควบคุม trafficความซับซ้อนการตั้งค่าตัวอย่างการใช้งาน
Canaryปรับน้ำหนักเป็นขั้นตอนปานกลาง (ต้องกำหนด steps)ปล่อยฟีเจอร์ใหม่ให้ผู้ใช้บางส่วน
Blue/Greenสลับ Service ไปยังเวอร์ชันใหม่ทั้งหมดต่ำ (สร้าง Service แยก)อัปเดตระบบที่ต้องการ downtime น้อย

Best Practices for Safety

เพื่อเพิ่มความปลอดภัยของ Canary Deployment ควรปฏิบัติตามแนวทางต่อไปนี้

  • ใช้ PodDisruptionBudget ป้องกัน pod ที่สำคัญจากการถูกลบโดยอัตโนมัติในช่วง rollout
  • ตั้งค่า readinessProbe ให้แม่นยำเพื่อให้ traffic ไม่ไหลเข้าสู่ pod ที่ยังไม่พร้อมใช้งาน
  • จำกัด maxSurge และ maxUnavailable ใน RollingUpdate เพื่อควบคุมจำนวน pod ที่เปลี่ยนแปลงพร้อมกัน
**Tip: ควรเก็บประวัติโดเมนของการปล่อยเวอร์ชันใน GitOps เช่น Argo CD หรือ Flux เพื่อให้สามารถย้อนกลับได้อย่างรวดเร็ว

Troubleshooting Tips

เมื่อ Canary ไม่ทำงานตามคาดต้องตรวจสอบจุดต่อไปนี้

  • ตรวจสอบว่า CRD `rollouts.argoproj.io` ถูกติดตั้งและอัพเดทเป็นเวอร์ชันล่าสุด
  • ดู log ของ controller ด้วย `kubectl logs -n argo-rollouts deployment/argo-rollouts-controller-manager`
  • เช็คว่าการ pause ไม่ได้ถูกข้ามโดยการตั้งค่า `autoPromotionEnabled: true` โดยไม่ต้องการ

Summary

Argo Rollouts ทำให้ Canary Deployments บน Kubernetes มีความอัตโนมัติและปลอดภัยเมื่อกำหนดค่าถูกต้อง

  • ติดตั้ง Argo Rollouts ผ่าน Helm หรือ Manifest แล้วตรวจสอบ CRD
  • กำหนด `strategy: canary` พร้อม steps ที่ควบคุม weight และ pause
  • เชื่อมต่อการตรวจวัดด้วย Prometheus/Datadog เพื่ออัตโนมัติ abort หากพบปัญหา
  • ปฏิบัติตาม best practices เช่น PodDisruptionBudget, readinessProbe, และ GitOps เพื่อให้ rollback ง่ายและเร็ว

ทำตามขั้นตอนเหล่านี้ คุณจะสามารถปล่อยฟีเจอร์ใหม่สู่ผู้ใช้บางส่วนได้อย่างมั่นใจ ลดความเสี่ยงจากการพังระบบใน production อย่างมีประสิทธิภาพ.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีตั้งค่า Argo Rollouts เพื่อทำ Canary Deployments บน Kubernetes อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
18 สิงหาคม 2569 เวลา 17:51

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่า DMARC SPF DKIM เพื่อสร้างระบบยืนยันอีเมลแบบ Zero Trust บน G SuiteGrowth
18 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่า DMARC SPF DKIM เพื่อสร้างระบบยืนยันอีเมลแบบ Zero Trust บน G Suite

การปกป้องอีเมลจากฟิชชิ่งและสแปมต้องเริ่มจาก “Zero Trust” ที่ไม่เชื่อถือใครโดยอัตโนมัติ บน G Suite เราตั้งค่า SPF, DKIM และ DMARC เพื่อให้ทุกข้อความผ่านการตรวจสอบอย่างเข้มงวด ระบบนี้ทำให้ผู้รับสามารถยื…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธียัง Apache Atlas บน Kubernetes เพื่อจัดการ Data Catalog อย่างปลอดภัยGrowth
17 สิงหาคม 2569 เวลา 20:30

วิธียัง Apache Atlas บน Kubernetes เพื่อจัดการ Data Catalog อย่างปลอดภัย

Apache Atlas เป็นเครื่องมือโอเพ่นซอร์สสำหรับจัดการ Data Catalog และเมตาดาต้า การนำไปใช้บน Kubernetes ทำให้สามารถขยายตัวได้ง่ายและรองรับระบบคลาวด์แบบไฮบริด > **Tip: เลือกเวอร์ชัน Atlas ที่สนับสนุน Kube…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธียังระบบ Data Masking อัตโนมัติใน PostgreSQL ด้วย pg‑masker บน Pipeline CI/CDGrowth
17 สิงหาคม 2569 เวลา 18:30

วิธียังระบบ Data Masking อัตโนมัติใน PostgreSQL ด้วย pg‑masker บน Pipeline CI/CD

การทำ *Data Masking* ในฐานข้อมูล PostgreSQL เป็นวิธีสำคัญที่ช่วยปกป้องข้อมูลส่วนบุคคลขณะพัฒนาและทดสอบระบบ โดยไม่ต้องเปิดเผยค่าเดิมเต็มรูปแบบ pg‑masker คือเครื่องมือโอเพ่นซอร์สที่ทำงานได้เร็วและรองรับก…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า GitHub Codespaces เพื่อพัฒนาแอปพลิเคชันบนคลาวด์อย่างปลอดภัยและมีประสิทธิภาพบน macOSGrowth
17 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่า GitHub Codespaces เพื่อพัฒนาแอปพลิเคชันบนคลาวด์อย่างปลอดภัยและมีประสิทธิภาพบน macOS

GitHub Codespaces เป็นสภาพแวดล้อมพัฒนาแบบคลาวด์ ที่สร้างจาก Docker container และเชื่อมต่อกับรีโพซิทอรีของคุณโดยตรง บน macOS คุณสามารถเริ่มโค้ดได้ทันทีโดยไม่ต้องตั้งค่าเครื่องมือหลายชั้น ทำให้ลดความเสี…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
คัดลอกลิงก์แล้ว!