Daily Dev Brief

← ฉบับล่าสุด

CNCF

16 ฉบับ · 54 รายการ

2026-10-04

Practical Insights for Running Kubernetes in Production: Avoiding Common Pitfalls and Mistakes

cncfkubernetes

Practical Insights for Running Kubernetes in Production: Avoiding Common Pitfalls and Mistakes
Introduction: Mastering Kubernetes in Production Deploying Kubernetes in production transcends container orchestration—it demands the management of a highly dynamic, distributed system that requires precision, foresight, and resilience. The chasm between theoretical understanding and practical implementation is where most organizations falter. The core truth is unequivocal: Kubernetes failures stem not from the platform itself, but from flawed assumptions about its behavior and requirements. Systemic Risks: Root Causes of Cluster Failures Analogize a Kubernetes cluster to a high-performance engine: minor oversights in configuration or operation can trigger systemic failures. Below are the…

บทความนี้ให้ข้อมูลเชิงลึกที่เป็นประโยชน์สำหรับการรัน Kubernetes ใน Production โดยเน้นว่าความล้มเหลวส่วนใหญ่มักเกิดจากข้อสันนิษฐานที่ผิดพลาดมากกว่าตัวแพลตฟอร์มเอง บทความนี้เน้นย้ำถึงความซับซ้อนของการจัดการระบบแบบไดนามิกและแบบกระจาย และสรุปความเสี่ยงเชิงระบบที่อาจนำไปสู่ความล้มเหลวของคลัสเตอร์ โดยเปรียบเทียบคลัสเตอร์ Kubernetes กับเครื่องยนต์ประสิทธิภาพสูงที่การละเลยเล็กน้อยอาจส่งผลกระทบอย่างมาก นักพัฒนาและทีมปฏิบัติการที่ deploy Kubernetes ในสภาพแวดล้อม Production ควรสานใจข้อมูลเชิงลึกเหล่านี้เพื่อหลีกเลี่ยงข้อผิดพลาดทั่วไปที่เกี่ยวข้องกับการกำหนดค่าและการปฏิบัติงาน การทำความเข้าใจสาเหตุหลักเหล่านี้เป็นสิ่งสำคัญสำหรับการสร้างการ deploy Kubernetes ที่ยืดหยุ่นและมีเสถียรภาพ.

Your evidence folder is complete. Meanwhile, someone just opened a shell in your container.

cncfkubernetes

Your evidence folder is complete. Meanwhile, someone just opened a shell in your container.
Since 11 September 2026, the EU Cyber Resilience Act asks you to report an actively exploited vulnerability within 24 hours. Twenty-four hours is enough to take away the comfort of "we'll collect the evidence before the audit." I have watched a lot of teams in the same spot. Evidence collection runs like a project: the audit gets close, and out come the screenshots, the exports, the folder. A security incident does not wait for any of that. While the folder is being filled, something happens in the cluster, and the two never hear about each other. This post is about why I see collecting evidence and catching a breach as two sides of the same job, and how that shaped the Falco integration in…

บทความนี้กล่าวถึงความสำคัญอย่างยิ่งของการรวมการรวบรวมหลักฐานเข้ากับการตอบสนองต่อเหตุการณ์ความปลอดภัยแบบเรียลไทม์ โดยเฉพาะอย่างยิ่งในบริบทของ EU Cyber Resilience Act ที่กำหนดให้ต้องรายงานช่องโหว่ที่ถูกโจมตีอย่างแข็งขันภายใน 24 ชั่วโมง ผู้เขียนให้เหตุผลว่าการพึ่งพาแนวทางการรวบรวมหลักฐานแบบแยกส่วนและอิงโครงการสำหรับการตรวจสอบเพียงอย่างเดียวนั้นไม่เพียงพอและอาจนำไปสู่การพลาดการละเมิด นักพัฒนาและทีมรักษาความปลอดภัยที่จัดการคลัสเตอร์ Kubernetes ควรสานใจว่ากระบวนการรวบรวมหลักฐานของพวกเขาสอดคล้องกับความสามารถในการตอบสนองต่อเหตุการณ์อย่างไร บทความแนะนำว่าเครื่องมืออย่าง Falco ซึ่งสามารถรวมการตรวจสอบความปลอดภัยเข้ากับการรวบรวมหลักฐาน เป็นสิ่งจำเป็นสำหรับท่าทีความปลอดภัยเชิงรุกและสอดคล้อง.

Verify PDF Signatures Yourself: Tradeoffs in Trusting the Sending Platform

cncfobservability

Verify PDF Signatures Yourself: Tradeoffs in Trusting the Sending Platform
Verify signed PDFs yourself and log the result beside every document before OCR or indexing begins. The deciding constraint is evidence ownership: independent verification gives you a record you can produce in a dispute, while trusting a sending platform leaves you with evidence from someone else's dashboard. TL;DR: treat a platform's signature status as useful context, not as your verification record. Keep the expected certificate, verify the PDF at intake, and attach that outcome to the document's internal identity. For a healthtech archive, failed or unknown verification should stop the document before its text becomes searchable. This is a small control with a wide blast radius. A…

บทความนี้สนับสนุนการตรวจสอบลายเซ็น PDF ด้วยตนเอง แทนที่จะเชื่อถือแพลตฟอร์มผู้ส่งเพียงอย่างเดียว โดยเฉพาะอย่างยิ่งสำหรับเอกสารสำคัญ ข้อโต้แย้งหลักคือการตรวจสอบด้วยตนเองให้หลักฐานที่ตรวจสอบได้สำหรับการโต้แย้ง ในขณะที่การพึ่งพาสถานะของแพลตฟอร์มจะทำให้คุณมีหลักฐานจากบุคคลที่สาม นักพัฒนาที่ทำงานกับระบบที่ประมวลผล PDF ที่ลงนาม โดยเฉพาะอย่างยิ่งในอุตสาหกรรมที่มีการควบคุม เช่น healthtech ควรสานใจการตรวจสอบภายในในขั้นตอนการนำเข้าและบันทึกผลลัพธ์พร้อมกับเอกสาร การปฏิบัตินี้ช่วยให้มั่นใจถึงความสมบูรณ์ของข้อมูลและให้บันทึกการตรวจสอบที่แข็งแกร่ง โดยหยุดเอกสารที่มีการตรวจสอบล้มเหลวหรือไม่ทราบก่อนการประมวลผลเพิ่มเติม เช่น OCR หรือการจัดทำดัชนี.

Node.js Pricing Rollout Logs — Choosing Sentry, Better Stack, Axiom, or Seq

cncfobservability

Node.js Pricing Rollout Logs — Choosing Sentry, Better Stack, Axiom, or Seq
A pricing-rule rollout changes the logging decision: the useful unit is no longer an exception but a billable decision that must be attributable to a flag revision, account, and request without leaking sensitive inputs. Short answer: for centralized Node.js application logs with straightforward search, use a log-first service such as Better Stack, Axiom, or Seq Cloud; choose Sentry when exceptions, source maps, and frontend debugging are part of the same job. Infrai is a practical lightweight choice when one API key and one bill across backend services matter more than alerting, export, tracing, or advanced browser diagnostics. Do not choose by the prettiest dashboard. Define the evidence…

บทความนี้กล่าวถึงข้อควรพิจารณาในการเลือกโซลูชันการบันทึก Log สำหรับแอปพลิเคชัน Node.js โดยเฉพาะอย่างยิ่งเมื่อมีการนำกฎการกำหนดราคามาใช้ ซึ่งหน่วยการบันทึก Log ที่มีประโยชน์จะเปลี่ยนจากการยกเว้นไปเป็นการตัดสินใจที่สามารถเรียกเก็บเงินได้ ผู้เขียนแนะนำบริการที่เน้น Log เป็นหลัก เช่น Better Stack, Axiom หรือ Seq Cloud สำหรับ Log ของแอปพลิเคชัน Node.js แบบรวมศูนย์ที่สามารถค้นหาได้ง่าย ในขณะที่แนะนำ Sentry สำหรับสถานการณ์ที่เกี่ยวข้องกับการยกเว้น, source maps และการดีบักฟรอนต์เอนด์ นักพัฒนาควรประเมินความต้องการการบันทึก Log เฉพาะของตน โดยเน้นที่ประเภทของหลักฐานที่จำเป็น (เช่น การแก้ไขแฟล็ก, การระบุบัญชี, รายละเอียดคำขอ) มากกว่าแค่ความสวยงามของแดชบอร์ด คำแนะนำนี้ช่วยในการเลือกเครื่องมือบันทึก Log ที่เหมาะสมที่สุดเพื่อให้มั่นใจถึงการรวบรวมข้อมูลที่ครอบคลุมและสามารถระบุแหล่งที่มาได้.

2026-10-03

SRE: un presupuesto de latencia para emails

cncfkubernetes

SRE: un presupuesto de latencia para emails
Una verificación de correo puede fallar aunque todos los servicios estén “arriba”. El usuario recibe el mensaje, pero llega después del timeout; el test reintenta, consume el segundo mensaje y termina pasando por casualidad. En los dashboards, la primera pista suelen ser varias alertas pequeñas que nunca forman una historia completa. Para SRE, este problema se entiende mejor como un presupuesto de latencia. No basta con decir que el email debe llegar “rápido”. Hay que repartir el tiempo entre la aplicación, la cola, el adaptador, el proveedor y el lector que confirma el mensaje. Así una prueba en Kubernetes puede explicar dónde se gastó cada segundo y cuándo conviene abrir un incidente. El…

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

Kubernetes SR-IOV Multi-Rail GPU Networking: Missing Route Configuration for Cross-Rail Communication

cncfkubernetes

Kubernetes SR-IOV Multi-Rail GPU Networking: Missing Route Configuration for Cross-Rail Communication
Introduction: Mastering Cross-Rail Communication in Kubernetes SR-IOV GPU Networking In high-performance computing environments, GPU-accelerated workloads drive advancements in AI, machine learning, and scientific simulations, demanding robust and efficient networking architectures. Kubernetes, coupled with Single-Root I/O Virtualization (SR-IOV), has become a cornerstone for managing GPU resources at scale, offering low-latency and high-throughput connectivity. However, as demonstrated in our case study , configuring cross-rail communication in multi-rail GPU setups presents significant challenges even for experienced engineers. The scenario involves a 16-node cluster, each node equipped…

บทความนี้กล่าวถึงความท้าทายทั่วไปใน Kubernetes SR-IOV Multi-Rail GPU Networking: การกำหนดค่าเส้นทางที่ขาดหายไปสำหรับการสื่อสารข้าม Rail มันเน้นว่าในขณะที่ SR-IOV ให้การเชื่อมต่อที่มีความหน่วงต่ำและมีปริมาณงานสูงสำหรับเวิร์กโหลด GPU การกำหนดค่าการสื่อสารระหว่าง Rail เครือข่ายที่แตกต่างกันอาจซับซ้อนและนำไปสู่ปัญหาประสิทธิภาพที่สำคัญ หากคุณกำลังปรับใช้แอปพลิเคชันที่เร่งด้วย GPU ในคลัสเตอร์ Kubernetes โดยใช้ SR-IOV พร้อมการตั้งค่าเครือข่ายแบบ Multi-Rail คุณต้องให้ความสนใจอย่างใกล้ชิดกับการกำหนดค่าเส้นทางของคุณ เส้นทางที่ไม่ถูกต้องหรือขาดหายไปสำหรับการสื่อสารข้าม Rail อาจส่งผลกระทบอย่างรุนแรงต่อประสิทธิภาพและประสิทธิผลของเวิร์กโหลดของคุณ ตรวจสอบให้แน่ใจว่าการกำหนดค่าเครือข่ายของคุณอนุญาตให้มีการไหลของข้อมูลที่ราบรื่นระหว่างอินเทอร์เฟซเครือข่ายและ GPU ทั้งหมดเพื่อเพิ่มประโยชน์สูงสุดของ SR-IOV

Cheap Status Page Plus Uptime Monitoring — Healthtech Incident Reconstruction

cncfobservability

Cheap Status Page Plus Uptime Monitoring — Healthtech Incident Reconstruction
Short answer: use a managed uptime service for US and EU probes, alert delivery, and the public incident page; use a dead-man monitor for cron and queue heartbeats; and send redacted rollout evidence to a separate telemetry store for reconstruction. An observability API alone cannot replace those first two layers when it has no synthetic probes, hosted status page, or notification routing. The page fires at 02:13. The EU checkout probe fails, the US probe passes, and the public incident page says pricing responses are degraded. On-call now needs to distinguish a regional path failure from a bad pricing rule behind a flag and from a dependency outage. A green process check cannot answer that…

บทความนี้สรุปกลยุทธ์ที่คุ้มค่าสำหรับการมอนิเตอร์สถานะการทำงานและการสร้างเหตุการณ์ขึ้นใหม่ โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับ healthtech มันสนับสนุนการรวมบริการมอนิเตอร์สถานะการทำงานแบบจัดการ, dead-man monitor และที่เก็บ telemetry แยกต่างหาก API การสังเกตการณ์อย่างง่ายไม่เพียงพอ จำเป็นต้องมีแนวทางที่ครอบคลุมเพื่อแยกความแตกต่างระหว่างความล้มเหลวระดับภูมิภาค ปัญหา feature flag และการหยุดทำงานของ dependency หากคุณกำลังจัดการบริการที่สำคัญ โดยเฉพาะในอุตสาหกรรมที่มีการควบคุม เช่น healthtech คุณควรใช้กลยุทธ์การมอนิเตอร์แบบหลายชั้นนี้ การรวมการมอนิเตอร์สถานะการทำงานภายนอกและ dead-man switch คุณจะได้รับการตรวจสอบที่เป็นอิสระและช่องทางการสื่อสารสาธารณะ สิ่งนี้ช่วยให้ทีม on-call ของคุณสามารถวินิจฉัยเหตุการณ์ได้อย่างรวดเร็ว เข้าใจขอบเขตของเหตุการณ์ และสื่อสารกับผู้มีส่วนได้ส่วนเสียได้อย่างมีประสิทธิภาพ ปรับปรุงการตอบสนองต่อเหตุการณ์และความน่าเชื่อถือ

Node.js Uptime Health Monitoring API for Checkout Status (With Cron Heartbeats)

cncfobservability

Node.js Uptime Health Monitoring API for Checkout Status (With Cron Heartbeats)
For a Node.js checkout service, use a shallow health endpoint for process availability, then record checkout outcomes as logs and metrics so an incident can be reconstructed. Add a separate heartbeat monitor for scheduled jobs. A log or metric platform cannot report a job that stopped before it emitted anything. TL;DR: the useful result is not a green /health response. It is a timeline that answers which checkout stage failed, for how many requests, and under which trace identifier. A unified REST platform can keep those logs and metrics behind the same credential used by other backend services; Healthchecks.io or a similar dead-man's-switch service should cover silent cron failures. My…

บทความนี้แนะนำการมอนิเตอร์บริการ Node.js checkout โดยแยก health endpoint สำหรับความพร้อมใช้งานของกระบวนการ และการบันทึก/เมตริกสำหรับผลลัพธ์ของธุรกรรม มันเน้นว่า `/health` endpoint ไม่พอ แต่ต้องมีไทม์ไลน์โดยละเอียดของขั้นตอน คำขอ และตัวระบุการติดตาม นอกจากนี้ยังเน้น heartbeat monitor สำหรับงานที่กำหนดเวลาไว้ หากคุณรับผิดชอบบริการ Node.js checkout คุณควรใช้กลยุทธ์การมอนิเตอร์แบบหลายด้าน รวมถึงการตรวจสอบสถานะการทำงานพื้นฐาน การบันทึกและเมตริกโดยละเอียดสำหรับแต่ละขั้นตอนของกระบวนการ checkout ที่เชื่อมโยงกันด้วยตัวระบุการติดตาม สำหรับงานเบื้องหลัง ให้รวมบริการ dead-man's-switch เพื่อป้องกันความล้มเหลวแบบเงียบ

2026-10-02

KubeCon + CloudNativeCon North America 2026: Build your application developer journey

cncfcloudnative

KubeCon + CloudNativeCon North America 2026: Build your application developer journey
Cloud native development increasingly means thinking beyond the application itself. How will it be built? How will it be deployed? How much infrastructure should developers need to understand? Where should platforms remove complexity? And what changes...

KubeCon + CloudNativeCon North America 2026 จะมุ่งเน้นไปที่เส้นทางของนักพัฒนาแอปพลิเคชันในการพัฒนาแบบ Cloud Native โดยจะกล่าวถึงวิธีการสร้าง, deploy แอปพลิเคชัน และความรู้ด้านโครงสร้างพื้นฐานที่นักพัฒนาจำเป็นต้องมี นี่หมายความว่านักพัฒนาที่เข้าร่วมงานประชุมจะได้พบกับเซสชันและเนื้อหาที่ออกแบบมาเพื่อช่วยให้พวกเขาเข้าใจความซับซ้อนของสภาพแวดล้อม Cloud Native, ทำความเข้าใจ abstraction ของแพลตฟอร์ม และเพิ่มประสิทธิภาพเวิร์กโฟลว์การพัฒนาของตน เป็นโอกาสในการเรียนรู้แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างและ deploy แอปพลิเคชันในบริบทของ Cloud Native

KubeCon + CloudNativeCon North America 2026: Build your infrastructure engineer journey

cncfcloudnative

KubeCon + CloudNativeCon North America 2026: Build your infrastructure engineer journey
Infrastructure engineers sit at one of the busiest intersections in cloud native. Kubernetes clusters need to scale. Networks need to connect them. Storage needs to follow workloads. Platforms need to make infrastructure usable. Security needs to...

KubeCon + CloudNativeCon North America 2026 จะมีหัวข้อเฉพาะสำหรับวิศวกรโครงสร้างพื้นฐาน โดยมุ่งเน้นไปที่การปรับขนาดคลัสเตอร์ Kubernetes, การเชื่อมต่อเครือข่าย, การจัดการพื้นที่เก็บข้อมูล, การใช้งานแพลตฟอร์ม และความปลอดภัยในสภาพแวดล้อม Cloud Native นี่หมายความว่าวิศวกรโครงสร้างพื้นฐานที่เข้าร่วมงานประชุมจะได้รับข้อมูลเชิงลึกเกี่ยวกับการจัดการโครงสร้างพื้นฐาน Cloud Native ที่ซับซ้อน, การเพิ่มประสิทธิภาพ และการรับรองความปลอดภัยที่แข็งแกร่ง เป็นงานสำคัญสำหรับผู้ที่รับผิดชอบระบบพื้นฐานที่รองรับแอปพลิเคชัน Cloud Native

Migrar para o Envoy Gateway não é trocar YAML

cncfkubernetes

Migrar para o Envoy Gateway não é trocar YAML
O ingress-nginx não recebe patch de segurança desde março de 2026. Ele continua funcionando, e é por isso que o risco passa despercebido. A saída recomendada pelo próprio Kubernetes é a Gateway API, e o Envoy Gateway é uma das implementações dela. A tentação é tratar a migração como tradução: pegar cada anotação e reescrever no formato novo. Só que a migração não se resume a trocar YAML. No nginx, cada app levava a própria regra de IP numa anotação. No Envoy, a regra sobe para uma SecurityPolicy no Gateway compartilhado. Ela muda de dono: sai do time da app e vai para a plataforma. Um erro, que antes afetava uma app, agora afeta todas as rotas. Ela também muda de camada. A allowlist por IP…

บทความนี้ชี้ให้เห็นว่าการย้ายจาก ingress-nginx (ซึ่งไม่ได้รับการแพตช์ความปลอดภัยตั้งแต่เดือนมีนาคม 2026) ไปยัง Envoy Gateway ตามที่ Gateway API ของ Kubernetes แนะนำ ไม่ใช่แค่การแปล YAML เท่านั้น นี่หมายความว่าองค์กรที่ใช้ ingress-nginx ควรตระหนักถึงความเสี่ยงด้านความปลอดภัยเนื่องจากไม่มีแพตช์ และวางแผนการย้าย การย้ายนี้เกี่ยวข้องกับการเปลี่ยนแปลงสถาปัตยกรรมที่สำคัญ โดยย้ายนโยบายความปลอดภัยจากทีมแอปพลิเคชันแต่ละทีมไปยังทีมแพลตฟอร์มที่ใช้ร่วมกัน ซึ่งส่งผลกระทบต่อความเป็นเจ้าของและขอบเขตความเสียหายของการกำหนดค่าที่ไม่ถูกต้อง นักพัฒนาและทีมแพลตฟอร์มจำเป็นต้องเข้าใจการเปลี่ยนแปลงนี้เพื่อหลีกเลี่ยงการสร้างความเสี่ยงใหม่ๆ

Storm-3068: How SSPR Abuse Turns One Azure AD Account Into Kubernetes Credential Theft

cncfkubernetes

Storm-3068: How SSPR Abuse Turns One Azure AD Account Into Kubernetes Credential Theft
Microsoft disclosed in September 2026 that a threat actor tracked as Storm-3068 compromised a single Azure AD identity through self-service password reset (SSPR) abuse, then pivoted through Azure DevOps pipelines to steal Kubernetes cluster credentials — ultimately exfiltrating seven kubeconfig files and gaining access to more than 50 downstream resources from one initial account takeover. No password spray, no zero-day: just SSPR, MFA re-registration, and pipeline permissions that were already too broad. This is the exact attack chain and the controls that close each step. The Attack Chain, Step by Step Storm-3068's campaign worked because each individual step abuses a legitimate feature…

ห่วงโซ่การโจมตี Storm-3068 แสดงให้เห็นว่าบัญชี Azure AD ที่ถูกบุกรุกเพียงบัญชีเดียว ผ่านการใช้ Self-Service Password Reset (SSPR) ในทางที่ผิดและการลงทะเบียน MFA ใหม่ สามารถนำไปสู่การขโมยข้อมูลรับรอง Kubernetes ผ่าน Azure DevOps pipelines ได้ นี่หมายความว่าองค์กรที่ใช้ Azure AD และ Kubernetes ควรสรุปนโยบาย SSPR, กระบวนการลงทะเบียน MFA ใหม่ และสิทธิ์ของ Azure DevOps pipeline นักพัฒนาและผู้ดูแลระบบต้องตรวจสอบให้แน่ใจว่าสิทธิ์ของ pipeline ไม่กว้างขวางเกินไป และมีการควบคุมที่แข็งแกร่งเพื่อป้องกันการเคลื่อนที่ในแนวนอนจากข้อมูลประจำตัวที่ถูกบุกรุกไปยังโครงสร้างพื้นฐานที่สำคัญ เช่น คลัสเตอร์ Kubernetes

2026-10-01

Kubernetes: un runbook para emails lentos

cncfkubernetes

Kubernetes: un runbook para emails lentos
En Kubernetes, una alerta de email lenta se parece demasiado a un fallo completo. El pod de la aplicación termina correctamente, el proveedor SMTP responde, pero el mensaje de verificación tarda dos minutos en llegar. Para la persona que está probando el flujo, la experiencia es la misma: pulsa «reenviar» y acaba creando varios intentos. En una guardia aprendí a no empezar cambiando timeouts. Primero hay que separar tres tiempos: el que tarda la aplicación en aceptar el evento, el que tarda el proveedor en aceptar el mensaje y el que tarda el mensaje en aparecer en el buzón de prueba. Esa separación convierte un síntoma difuso en una investigación de SRE que se puede repetir. El síntoma no…

บทความนี้นำเสนอ Runbook สำหรับการวินิจฉัยการแจ้งเตือนอีเมลที่ล่าช้าใน Kubernetes โดยเน้นย้ำถึงความสำคัญของการแยกองค์ประกอบเวลา: การยอมรับของแอปพลิเคชัน, การยอมรับของผู้ให้บริการ SMTP และการส่งข้อความไปยังกล่องจดหมาย แทนที่จะปรับ Timeout ทันที ผู้เขียนแนะนำให้ทำการตรวจสอบ SRE อย่างมีโครงสร้าง นักพัฒนาและ SRE ที่จัดการบริการอีเมลบน Kubernetes สามารถใช้วิธีนี้เพื่อระบุปัญหาคอขวดและแก้ไขปัญหาประสิทธิภาพได้อย่างมีประสิทธิภาพมากขึ้น

We're Dropping Sidecars In Favor Of A Node Sensor

cncfkubernetes

We're Dropping Sidecars In Favor Of A Node Sensor
We built PandoCore as a detector container in every pod. We are replacing it with one process per node. The threat model, the privilege count, the visibility, and the resource reservation all point the same way. The node sensor is still in development; here is the argument for it. Full blog linked here .

บทความนี้กล่าวถึงการตัดสินใจที่จะเปลี่ยนจากการใช้ Sidecar Container ไปเป็น Node Sensor สำหรับความปลอดภัยและการสังเกตการณ์ใน Kubernetes ผู้เขียนให้เหตุผลว่าเซ็นเซอร์ระดับโหนดให้การสร้างแบบจำลองภัยคุกคามที่ดีกว่า ลดจำนวนสิทธิ์ และปรับปรุงการมองเห็นและการสำรองทรัพยากรเมื่อเทียบกับ Sidecar แบบต่อ Pod นักพัฒนาและสถาปนิกที่ออกแบบโซลูชันความปลอดภัยและการตรวจสอบใน Kubernetes ควรสพิจารณาการเปลี่ยนแปลงกลยุทธ์นี้เพื่อการ Deploy ที่มีประสิทธิภาพและปลอดภัยยิ่งขึ้น

How to Keep 7 Structured JSON Application Logging Signals for Small SaaS Rewards

cncfobservability

How to Keep 7 Structured JSON Application Logging Signals for Small SaaS Rewards
Structured JSON is the right default for a small game backend when the goal is to reconstruct why a reward job did, or did not, credit a player. The storage bill is driven mainly by retained event volume, so begin with seven stable signals— timestamp , level , message , request_id , tenant_id , trace_id , and span_id —then retain a compact record of the scheduled run that produced the event. Redact personal data before emission. This preserves useful correlation while accepting that logs alone cannot provide a distributed span tree, per-user erasure, bulk export, or a definitive answer about a job that never emitted anything. That is the short answer: spend retention on evidence that joins…

สำหรับแบ็กเอนด์ SaaS ขนาดเล็ก การทำ Structured JSON Logging ด้วยสัญญาณหลักเจ็ดตัว (timestamp, level, message, request_id, tenant_id, trace_id, span_id) เป็นสิ่งแนะนำเพื่อช่วยในการสร้างผลลัพธ์ของ Reward Job ใหม่ แนวทางนี้ให้ความสำคัญกับการเชื่อมโยงข้อมูลที่เป็นประโยชน์ ในขณะที่จัดการต้นทุนการจัดเก็บและยอมรับข้อจำกัดของ Log สำหรับ Distributed Tracing หรือการลบข้อมูลผู้ใช้ นักพัฒนาที่สร้างบริการแบ็กเอนด์ควรนำกลยุทธ์การ Logging ที่เรียบง่ายแต่มีประสิทธิภาพนี้มาใช้ เพื่อให้แน่ใจว่ามีการสังเกตการณ์ที่เพียงพอโดยไม่มีค่าใช้จ่ายเพิ่มเติมมากเกินไป

2026-09-30

29 Notable Cloud & DevOps Professionals from India to Follow in 2026

cncfkubernetes

29 Notable Cloud & DevOps Professionals from India to Follow in 2026
India has one of the world's largest and fastest-growing cloud, DevOps, Kubernetes, and cloud-native communities. There is no single official organization that maintains a definitive ranking of India's "Top 50 Cloud Engineers." Therefore, this list is not intended as a ranking or a claim that one professional is better than another. Instead, it highlights 29 notable professionals based on publicly documented community leadership, open-source contributions, cloud certifications, ambassador/hero programs, technical education, and contributions to the cloud-native ecosystem. Yash Pimple CNCF Ambassador based in Mumbai, India. His CNCF profile highlights his work with Kubernetes, Kyverno…

บทความนี้เน้นย้ำถึงผู้เชี่ยวชาญด้าน Cloud & DevOps ที่น่าติดตาม 29 ท่านจากอินเดียในปี 2026 โดยพิจารณาจากการเป็นผู้นำชุมชน การมีส่วนร่วมในโอเพนซอร์ส และความเชี่ยวชาญทางเทคนิค แม้จะไม่ใช่การจัดอันดับที่แน่นอน แต่ก็เป็นแหล่งข้อมูลที่มีค่าสำหรับนักพัฒนาและวิศวกรที่กำลังมองหาผู้นำทางความคิดและผู้มีส่วนร่วมในระบบนิเวศ cloud-native การติดตามบุคคลเหล่านี้สามารถให้ข้อมูลเชิงลึกเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุด เทคโนโลยีเกิดใหม่ และการอภิปรายในชุมชนที่เกี่ยวข้องกับ Kubernetes, DevOps และ cloud computing

production statefulset argocd

cncfkubernetes

production statefulset argocd
GitHub ↓ Argo CD ↓ Kubernetes ↓ StatefulSet ├── Headless Service ├── ConfigMap ├── ServiceAccount ├── StatefulSet ├── PVC per Pod ├── PDB └── StorageClass ↓ AWS EBS Repository students should create restaurant-statefulset-gitops/ │ ├── README.md ├── argocd/ │ └── application.yaml │ └── k8s/ ├── namespace.yaml ├── serviceaccount.yaml ├── configmap.yaml ├── storageclass.yaml ├── headless-service.yaml ├── service.yaml ├── statefulset.yaml ├── pdb.yaml └── kustomization.yaml k8s/namespace.yaml apiVersion : v1 kind : Namespace metadata : name : restaurant k8s/serviceaccount.yaml apiVersion : v1 kind : ServiceAccount metadata : name : restaurant namespace : restaurant automountServiceAccountToken…

บทความนี้ให้คำแนะนำเชิงปฏิบัติเกี่ยวกับการตั้งค่า StatefulSets ที่พร้อมใช้งานจริงด้วย Argo CD บน Kubernetes โดยแสดงให้เห็นถึงวิธีการจัดการแอปพลิเคชันที่มีสถานะ (persistent applications) ได้อย่างมีประสิทธิภาพ ครอบคลุมการกำหนดค่าทรัพยากร Kubernetes ต่างๆ เช่น Headless Service, ConfigMap, ServiceAccount, PVC per Pod, PDB และ StorageClass โดยรวมเข้ากับ Argo CD สำหรับการ deploy แบบ GitOps นักพัฒนาที่ทำงานกับแอปพลิเคชันที่มีสถานะบน Kubernetes โดยเฉพาะผู้ที่ใช้ Argo CD สามารถใช้คู่มือนี้เพื่อปรับปรุงกระบวนการ deploy และรับรองความพร้อมใช้งานสูงและการคงอยู่ของข้อมูล

2026-09-29

Build a Helm Release Health Agent: Fix Stuck pending-upgrade Releases, Failed Hooks, and 'another operation is in progress' Safely

cncfkubernetes

Build a Helm Release Health Agent: Fix Stuck pending-upgrade Releases, Failed Hooks, and 'another operation is in progress' Safely
💡 Originally published on devtocash.com — where this guide stays updated. I write hands-on DevOps/SRE deep-dives there weekly. What This Agent Does A Helm release health agent scans every Helm release in the cluster, finds the ones whose latest revision is stuck in pending-upgrade , pending-install , or failed , works out which of five failure classes it belongs to, and either rolls the release back to the last revision that actually deployed or hands a human a precise diagnosis. The scan and the fix are deterministic code. The LLM only classifies a stuck release from the evidence and picks from a short list of actions the executor already knows how to do safely. It cannot run helm…

บทความนี้อธิบายวิธีการสร้าง Helm release health agent ที่ออกแบบมาเพื่อตรวจจับและแก้ไข Helm release ที่ติดขัดในคลัสเตอร์ Kubernetes โดยอัตโนมัติ Agent จะสแกน release ที่อยู่ในสถานะเช่น `pending-upgrade`, `pending-install` หรือ `failed` จัดประเภทความล้มเหลว และทำการ rollback ไปยัง revision ที่สำเร็จล่าสุด หรือให้การวินิจฉัยที่แม่นยำแก่ผู้ดูแล โค้ดหลักสำหรับการสแกนและการแก้ไขเป็นโค้ดที่ทำงานแบบกำหนดผลลัพธ์ (deterministic code) โดยใช้ LLM เพียงเพื่อการจัดประเภทและการเลือกการดำเนินการจากรายการที่ปลอดภัยที่กำหนดไว้ล่วงหน้า ทีมที่จัดการการ deploy Kubernetes ด้วย Helm สามารถปรับปรุงความน่าเชื่อถือและลดการแทรกแซงด้วยตนเองที่จำเป็นสำหรับการจัดการ release ได้อย่างมาก การตรวจจับและแก้ไข release ที่ติดขัดโดยอัตโนมัติสามารถป้องกันการหยุดชะงักที่ยาวนานและปรับปรุงกระบวนการ deploy โดยเฉพาะในสภาพแวดล้อมที่ซับซ้อน พิจารณาการนำ Helm release health agent ที่คล้ายกันไปใช้ในคลัสเตอร์ Kubernetes ของคุณ มุ่งเน้นไปที่โค้ดที่ทำงานแบบกำหนดผลลัพธ์สำหรับการระบุและแก้ไขรูปแบบความล้มเหลวทั่วไป แม้ว่า LLM จะช่วยในการจัดประเภทได้ แต่ต้องแน่ใจว่าการดำเนินการใดๆ ที่ทำนั้นได้รับการอนุมัติล่วงหน้าและปลอดภัย เพื่อป้องกันไม่ให้ LLM รันคำสั่งตามอำเภอใจ แนวทางนี้ช่วยรักษาสภาพแวดล้อมการ deploy ที่มีสุขภาพดีและเสถียร.

Cloud Email Fixtures Need an Expiry Contract

cncfkubernetes

Cloud Email Fixtures Need an Expiry Contract
Email verification tests often fail long after the application code is finished. A CI job creates a mailbox, waits for a message, follows a link, and then forgets the fixture when a pod is evicted or the runner times out. The next run may inherit the old data. It can recieve a message quickly and still be testing the wrong signup. The operational fix is an expiry contract. Every cloud email fixture should have an owner, a creation timestamp, a maximum lifetime, and a cleanup state. Expiry is not just a scheduled deletion task; it is part of the test's definition of done. This pattern has been useful for AWS-backed services running verification flows in Kubernetes. It also keeps disposable…

บทความนี้นำเสนอแนวคิดของ "expiry contract" สำหรับ cloud email fixtures ที่ใช้ในการทดสอบ โดยเฉพาะอย่างยิ่งสำหรับ verification flows ในบริการที่ใช้ Kubernetes ปัญหาที่กล่าวถึงคือ CI jobs มักจะสร้างกล่องจดหมายชั่วคราวสำหรับการทดสอบ แต่ล้มเหลวในการล้างข้อมูล ทำให้เกิดข้อมูลเก่าที่อาจทำให้การทดสอบครั้งต่อไปล้มเหลวหรือให้ผลลัพธ์ที่ไม่ถูกต้อง นักพัฒนาและวิศวกร QA ที่พึ่งพาบริการ cloud email สำหรับการทดสอบอัตโนมัติ โดยเฉพาะในสภาพแวดล้อมแบบไดนามิกเช่น Kubernetes จำเป็นต้องใช้การจัดการวงจรชีวิตที่ชัดเจนสำหรับ test fixtures ของตน หากไม่มี expiry contract การทดสอบอาจไม่เสถียรเนื่องจากข้อมูลที่เหลือจากการรันครั้งก่อน ทำให้การดีบักเป็นเรื่องยากและลดความน่าเชื่อถือของผลการทดสอบ เพื่อให้แน่ใจว่าการทดสอบการยืนยันอีเมลมีความน่าเชื่อถือ ทุก cloud email fixture ควรกำหนดเจ้าของ, เวลาที่สร้าง, อายุการใช้งานสูงสุด และสถานะการล้างข้อมูลที่ชัดเจน ใช้กลไกการล้างข้อมูลอัตโนมัติโดยอิงตาม expiry contract นี้ เพื่อให้แน่ใจว่าข้อมูลเก่าจะถูกล้างออกก่อนที่จะรบกวนการทดสอบครั้งใหม่ รูปแบบนี้มีประโยชน์อย่างยิ่งสำหรับบริการที่ใช้ AWS ที่รัน verification flows ใน Kubernetes.

Simple Error Tracking API for Node.js React SaaS App Imports

cncfobservability

Simple Error Tracking API for Node.js React SaaS App Imports
For a Node.js SaaS app with scheduled imports, use a simple errors API when the job throws ordinary application exceptions and your main need is capture, grouping, search, and resolution. Do not ask error tracking to prove that a job ran. Pair it with a heartbeat monitor for silent imports, and choose Sentry or another crash-focused product when source maps, native symbolication, or session replay are part of the debugging contract. Short answer: optimize for the incident timeline you need to reconstruct, not the shortest setup page. A useful timeline answers three separate questions: Was the import triggered? Did it fail with an exception? Did it finish with a plausible result count? Error…

บทความนี้แนะนำ Simple Error Tracking API สำหรับ Node.js React SaaS apps ที่มีการนำเข้าข้อมูลแบบกำหนดเวลา โดยเฉพาะเมื่อความต้องการหลักคือการจับกลุ่ม ค้นหา และแก้ไขข้อผิดพลาดทั่วไปของแอปพลิเคชัน ไม่แนะนำผลิตภัณฑ์ที่เน้นการ Crash ที่ซับซ้อน เช่น Sentry หากเป้าหมายหลักไม่ใช่ Source Map, Native Symbolication หรือ Session Replay และแนะนำให้จับคู่ Simple Error API กับ Heartbeat Monitor สำหรับ Silent Import นักพัฒนาที่สร้างแอปพลิเคชัน SaaS ที่มีการนำเข้าข้อมูลแบบกำหนดเวลาควรรพิจารณาอย่างรอบคอบเกี่ยวกับกลยุทธ์การติดตามข้อผิดพลาดของตน การใช้เครื่องมือรายงานข้อผิดพลาดที่มีคุณสมบัติครบถ้วนอาจไม่จำเป็น หากความกังวลหลักคือการติดตามข้อผิดพลาดระดับแอปพลิเคชันและการตรวจสอบความสมบูรณ์ของงาน วิธีการที่ง่ายกว่าอาจมีประสิทธิภาพและคุ้มค่ากว่า เพื่อเพิ่มประสิทธิภาพการติดตามข้อผิดพลาด ให้กำหนดไทม์ไลน์เหตุการณ์ที่คุณต้องการสร้างใหม่: การนำเข้าถูกเรียกใช้หรือไม่? ล้มเหลวด้วยข้อผิดพลาดหรือไม่? เสร็จสิ้นด้วยจำนวนผลลัพธ์ที่เป็นไปได้หรือไม่? หากความต้องการของคุณสอดคล้องกับการจับภาพและจัดกลุ่มข้อผิดพลาดอย่างง่าย ให้ใช้ API ข้อผิดพลาดที่กำหนดเองหรือแบบน้ำหนักเบา สำหรับข้อผิดพลาดของงานแบบเงียบ ให้รวม Heartbeat Monitor สำรองผลิตภัณฑ์ที่เน้นการ Crash ที่ครอบคลุมสำหรับสถานการณ์ที่ความสามารถในการดีบักเชิงลึก เช่น Source Map และ Session Replay มีความจำเป็นอย่างแท้จริง.

2026-09-28

Kubernetes Operator for BitCloudPhone Device Pools: From Zero to Production

cncfkubernetes

Kubernetes Operator for BitCloudPhone Device Pools: From Zero to Production
Managing 200 cloud phone instances through a REST client is fine until the day one region goes offline, half your devices die, and you find yourself typing curl commands at 2 a.m. to rebuild the pool. The Kubernetes Operator pattern was invented for exactly this problem: declare what you want, let a controller reconcile reality to match. This article walks through building a production Operator for BitCloudPhone device pools using Kubebuilder and Go. CRD schema, reconcile loop, finalizers, metrics, the three gotchas that will bite you in week two. Everything is code you can actually paste into a fresh cluster. What a Kubernetes Operator is An Operator is a custom Kubernetes controller…

บทความนี้เป็นคู่มือที่ครอบคลุมเกี่ยวกับการสร้าง Kubernetes Operator ที่พร้อมใช้งานจริงสำหรับการจัดการ BitCloudPhone device pools โดยใช้ Kubebuilder และ Go มันช่วยแก้ปัญหาการจัดการอินสแตนซ์โทรศัพท์คลาวด์จำนวนมากโดยการทำให้การกระทบยอดสถานะที่ต้องการเป็นไปโดยอัตโนมัติ นักพัฒนาที่ทำงานกับ Kubernetes และต้องการจัดการแอปพลิเคชันที่ซับซ้อนและมีสถานะจะพบว่านี่เป็นแหล่งข้อมูลที่มีค่าสำหรับการทำความเข้าใจ CRD schema, reconcile loops, finalizers และข้อผิดพลาดทั่วไปในการพัฒนา Operator.

Feature Flag Retry Idempotency Explained: Preventing Duplicate Backend Writes

cncfobservability

Feature Flag Retry Idempotency Explained: Preventing Duplicate Backend Writes
Short answer: never retry a toggle after an ambiguous response. Read the current flag state, compare it with an explicit desired state, and issue a deterministic set or rollout only when they differ. For a B2B SaaS checkout, reserve a separate kill switch for rollback, keep the payment operation idempotent independently of the flag, and record the intended change in an audit system you control. That decision follows from one awkward fact: a timeout describes what the caller observed, not what the server committed. If the first toggle succeeded and its response disappeared, a retry can reverse the successful change. The request then appears healthy while the checkout remains in the state the…

เมื่อนำ Feature Flag มาใช้ โดยเฉพาะอย่างยิ่งสำหรับการดำเนินการที่สำคัญ เช่น การชำระเงินใน B2B SaaS จำเป็นต้องแน่ใจว่าการ retry มีคุณสมบัติ Idempotency เพื่อป้องกันการเขียนข้อมูลซ้ำซ้อนไปยังแบ็กเอนด์ หลักการสำคัญคือห้าม retry การสลับสถานะหลังจากได้รับการตอบสนองที่ไม่ชัดเจน แต่ควรอ่านสถานะปัจจุบันของ Flag เปรียบเทียบกับสถานะที่ต้องการ และดำเนินการตั้งค่าหรือ Rollout อย่างเด็ดขาดเฉพาะเมื่อสถานะแตกต่างกันเท่านั้น การหมดเวลา (timeout) เพียงแค่บ่งบอกถึงสิ่งที่ผู้เรียกเห็น ไม่ใช่การยืนยันจากเซิร์ฟเวอร์ นักพัฒนาควรออกแบบการดำเนินการชำระเงินให้เป็น Idempotent โดยไม่ขึ้นกับ Flag และบันทึกการเปลี่ยนแปลงในระบบ Audit พร้อมใช้ Kill Switch แยกต่างหากสำหรับการ Rollback.

Small SaaS API Approach to Compress and Encrypt Invoice Archives

cncfobservability

Small SaaS API Approach to Compress and Encrypt Invoice Archives
A customer-support archive has one constraint that changes the design: invoice generation must keep up with the order stream without weakening the record needed years later. Short answer: preserve each accepted invoice as an immutable, self-contained archival PDF, compress its assets before rendering, encrypt the stored object rather than rewriting the PDF, and treat batch size as a measured control. Keep the order snapshot and a cryptographic digest beside it. The tempting design is one request, one render, one upload. Easy. It also leaves throughput to chance. A better mental model is a bounded conveyor: claim a small batch, render with fixed resources, validate, store, then acknowledge…

สำหรับ SaaS API ที่จัดการกับ Invoice Archives การออกแบบต้องให้ความสำคัญกับการรักษาความเร็วในการสร้างใบแจ้งหนี้ ในขณะเดียวกันก็ต้องมั่นใจในความสมบูรณ์ของข้อมูลในระยะยาว แนวทางที่แนะนำคือการเก็บรักษาใบแจ้งหนี้แต่ละฉบับที่ได้รับการยอมรับในรูปแบบ PDF ที่ไม่สามารถเปลี่ยนแปลงได้และเป็นอิสระ, บีบอัด Asset ก่อนการเรนเดอร์, เข้ารหัส Object ที่จัดเก็บ และจัดการขนาด Batch เป็นตัวควบคุมที่วัดผลได้ สิ่งนี้ช่วยให้การสร้างใบแจ้งหนี้สอดคล้องกับกระแสคำสั่งซื้อโดยไม่กระทบต่อความสมบูรณ์ของบันทึกที่จำเป็นในอีกหลายปีข้างหน้า นักพัฒนาควรหลีกเลี่ยงการออกแบบที่เรียบง่ายแบบหนึ่งคำขอ หนึ่งเรนเดอร์ หนึ่งอัปโหลด และหันมาใช้โมเดลแบบ Bounded Conveyor เพื่อประสิทธิภาพและความน่าเชื่อถือที่ดีขึ้น.

Build a TLS Certificate Expiry Agent: Catch cert-manager Renewal Failures, Unmanaged Secrets, and Stale Certs Before the Outage

cncfkubernetes

Build a TLS Certificate Expiry Agent: Catch cert-manager Renewal Failures, Unmanaged Secrets, and Stale Certs Before the Outage
💡 Originally published on devtocash.com — where this guide stays updated. I write hands-on DevOps/SRE deep-dives there weekly. What This Agent Does A TLS certificate expiry agent finds every certificate in and around your cluster that will expire soon, works out why it has not renewed, and either fixes it or hands a specific owner a specific task. The inventory is deterministic code: it reads cert-manager's metrics, parses every kubernetes.io/tls Secret, and connects to each Ingress host to see which certificate is actually being served. The LLM only sees the shortlist of certificates that are inside the renewal window and still not renewed, and for each one it picks from a small set of…

คู่มือนี้อธิบายถึงวิธีการสร้าง TLS Certificate Expiry Agent เพื่อระบุและแก้ไขปัญหาการต่ออายุใบรับรองที่ล้มเหลว, secret ที่ไม่ได้จัดการ และใบรับรองที่หมดอายุในคลัสเตอร์ Kubernetes ตัว Agent จะทำการสำรวจใบรับรองทั้งหมด, อ่านเมตริกจาก `cert-manager`, วิเคราะห์ `kubernetes.io/tls` Secrets และตรวจสอบ Ingress hosts เพื่อพิจารณาสถานะการต่ออายุ สำหรับใบรับรองที่อยู่ในช่วงการต่ออายุแต่ยังไม่ได้รับการต่ออายุ LLM จะช่วยระบุสาเหตุและแนะนำการดำเนินการเฉพาะ สิ่งนี้เป็นเครื่องมือสำคัญในการป้องกันการหยุดชะงักที่เกิดจากใบรับรองที่หมดอายุและรับประกันความพร้อมใช้งานของบริการอย่างต่อเนื่อง.

2026-09-27

NVIDIA Dynamo Disaggregated Serving on Kubernetes: What a Credible vLLM Benchmark Requires

cncfkubernetes

NVIDIA Dynamo Disaggregated Serving on Kubernetes: What a Credible vLLM Benchmark Requires
Why We Brought This Tool Into Our Lab We started evaluating NVIDIA Dynamo because aggregated vLLM deployments eventually force an awkward compromise. Prompt ingestion and token generation have different performance profiles, but an aggregated worker schedules both phases on the same GPU allocation. Planned equal-GPU benchmark split Aggregated workers 4/4 Prefill workers 2/4 Decode workers 2/4 The plan holds sixteen GPUs constant and changes only stage separation, which is the right control for attribution, but no results have been collected, so no throughput, TTFT, or cost claim is safe yet. That is acceptable for short prompts and predictable output lengths. It becomes harder to operate…

บทความนี้กล่าวถึงการประเมิน NVIDIA Dynamo สำหรับการให้บริการ vLLM แบบแยกส่วนบน Kubernetes โดยเน้นถึงความท้าทายของการ deploy vLLM แบบรวมศูนย์ มันชี้ให้เห็นว่าการรับ prompt และการสร้าง token มีโปรไฟล์ประสิทธิภาพที่แตกต่างกัน ซึ่งอาจนำไปสู่การประนีประนอมเมื่อทั้งสองขั้นตอนถูกกำหนดเวลาบน GPU เดียวกัน สิ่งนี้เกี่ยวข้องกับนักพัฒนาและวิศวกร MLOps ที่ deploy large language models (LLMs) บน Kubernetes โดยเฉพาะอย่างยิ่งเมื่อต้องการเพิ่มประสิทธิภาพและการใช้ทรัพยากร บทความแนะนำว่าการให้บริการแบบแยกส่วน ซึ่งมีการแยก prefill และ decode workers ออกจากกัน อาจให้การควบคุมและประสิทธิภาพที่ดีขึ้น แม้ว่าจะยังไม่มีผลการ benchmark เพื่อยืนยันข้ออ้างด้านประสิทธิภาพก็ตาม.

App Health Dashboard API: Implementing Checkout Metrics Without Prometheus

cncfobservability

App Health Dashboard API: Implementing Checkout Metrics Without Prometheus
A checkout dashboard is useful only if its telemetry survives the same failure that triggers a rollback. TL;DR: emit a small set of counters and gauges outside the payment transaction, attach a stable checkout identifier to structured logs, and make rollback decisions from a narrow evidence window. A plain hosted metrics API is reasonable when the team needs custom metrics and logs, not Prometheus-style infrastructure monitoring. It isn't enough for paging, distributed traces, or proof that a scheduled settlement task ran. This distinction matters in fintech. A database rollback can correctly undo an order while an eager metric says the checkout succeeded. Putting telemetry inside the…

บทความนี้สำรวจการนำ metrics สำหรับการชำระเงินไปใช้กับ App Health Dashboard โดยไม่ต้องพึ่งพา Prometheus โดยเน้นที่ความยืดหยุ่นในระหว่างที่ระบบล้มเหลว มันแนะนำให้ปล่อยชุดของ counters และ gauges ขนาดเล็กออกนอก transaction การชำระเงิน และแนบตัวระบุการชำระเงินที่เสถียรเข้ากับ structured logs วิธีการนี้มีประโยชน์อย่างยิ่งสำหรับนักพัฒนาในสาย fintech หรือ e-commerce ที่ต้องการ telemetry ที่แข็งแกร่งซึ่งสามารถอยู่รอดได้แม้มีการ rollback เพื่อให้แน่ใจว่า metrics ทางธุรกิจที่สำคัญจะไม่สูญหายไป ข้อคิดสำคัญคือ hosted metrics API แบบธรรมดาก็เพียงพอสำหรับ custom metrics และ logs แต่สิ่งสำคัญคือต้องเข้าใจข้อจำกัดของมันเมื่อเทียบกับโซลูชันการตรวจสอบโครงสร้างพื้นฐานเต็มรูปแบบสำหรับการแจ้งเตือน, distributed traces หรือหลักฐานของ scheduled tasks.

Error Tracking Service Explained: 6 Tests for Searchable Grouped API Exceptions

cncfobservability

Error Tracking Service Explained: 6 Tests for Searchable Grouped API Exceptions
The decisive trade-off is reconstruction depth versus integration surface. Short answer: for a European marketplace that needs to compare an experiment across tenant cohorts, choose a simple backend tracker only if grouped exceptions and searchable events can reconstruct the incident without browser replay, source-map reversal, alert delivery, or per-user deletion. Otherwise, use a specialist for the missing layer. Do not let a clean ingestion demo settle that question; the difficult part begins after an exception has been stored. This is a boundary decision. Keep one application-owned error contract, send the same six fixtures through every candidate, and score the evidence returned to an…

บทความนี้กล่าวถึงข้อดีข้อเสียของบริการติดตามข้อผิดพลาด โดยเน้นความสมดุลระหว่างความลึกของการสร้างใหม่ (reconstruction depth) และพื้นผิวการรวมระบบ (integration surface) มันนำเสนอ 6 การทดสอบสำหรับการประเมินโซลูชันการติดตามข้อผิดพลาด โดยเน้นที่ความสามารถในการจัดกลุ่มข้อยกเว้นและให้เหตุการณ์ที่สามารถค้นหาได้สำหรับการสร้างเหตุการณ์ใหม่ สิ่งนี้เกี่ยวข้องอย่างมากสำหรับนักพัฒนาและ SRE ที่เลือกหรือนำบริการติดตามข้อผิดพลาดไปใช้สำหรับแอปพลิเคชันที่ขับเคลื่อนด้วย API โดยเฉพาะในสภาพแวดล้อมที่ซับซ้อน เช่น ตลาดในยุโรปที่มีกลุ่มผู้เช่า สารัตถะคือการกำหนดสัญญาข้อผิดพลาดที่แอปพลิเคชันเป็นเจ้าของอย่างชัดเจน และทดสอบบริการที่คาดว่าจะใช้ด้วย fixtures ที่สอดคล้องกันอย่างเข้มงวด เพื่อให้แน่ใจว่าสามารถสร้างเหตุการณ์ใหม่ได้อย่างมีประสิทธิภาพโดยไม่ต้องพึ่งพาการเล่นซ้ำของเบราว์เซอร์หรือวิธีการอื่น ๆ ที่มีค่าใช้จ่ายสูง การเลือกบริการควรขึ้นอยู่กับความสามารถในการให้หลักฐานที่นำไปปฏิบัติได้หลังจากเกิดข้อยกเว้นขึ้น.

Learn Kubernetes by Building a Mini Container Orchestrator

cncfkubernetes

Learn Kubernetes by Building a Mini Container Orchestrator
You start three copies of your application. One crashes while you are away from your laptop. Two are still running, but you asked for three. Something needs to notice the missing copy and replace it. That is a useful first step toward understanding Kubernetes. The idea has two parts: what you want, called desired state, and what is actually happening, called observed state. Reconciliation means comparing the two and taking a useful next step. In this example, the next step is to start one replacement. Figure 1: Compare the saved request with current observations, act, and check again. This article starts with that idea, explains the Kubernetes components behind it, and gives you a small…

บทความนี้ให้ความเข้าใจพื้นฐานเกี่ยวกับ Kubernetes โดยนำผู้อ่านสร้าง mini container orchestrator มันอธิบายแนวคิดหลัก เช่น desired state, observed state และ reconciliation โดยแสดงให้เห็นว่า orchestrator ทำให้แน่ใจว่าสถานะจริงตรงกับสถานะที่ต้องการได้อย่างไร สิ่งนี้เกี่ยวข้องอย่างมากสำหรับนักพัฒนาที่ต้องการเข้าใจหลักการพื้นฐานของ Kubernetes โดยไม่ต้องลงลึกในความซับซ้อนทั้งหมดในทันที ด้วยการทำความเข้าใจว่า orchestrator แบบง่ายทำงานอย่างไร นักพัฒนาจะสามารถเข้าใจได้ดีขึ้นว่าทำไม Kubernetes จึงมีพฤติกรรมเช่นนั้น ทำให้ง่ายต่อการออกแบบ, deploy และแก้ไขปัญหาแอปพลิเคชันภายในสภาพแวดล้อม Kubernetes.

2026-09-26

Kubernetes Ingress 502 Bad Gateway (ingress-nginx): How to Debug and Fix 502, 503, and 504 Errors

cncfkubernetes

Kubernetes Ingress 502 Bad Gateway (ingress-nginx): How to Debug and Fix 502, 503, and 504 Errors
💡 Originally published on devtocash.com — where this guide stays updated. I write hands-on DevOps/SRE deep-dives there weekly. What a 502 from the Ingress actually means A 502 Bad Gateway page that says nginx at the bottom means the ingress-nginx controller accepted the request, tried to open a connection to one of your pods, and did not get a valid HTTP response back . Your Service, your Ingress rule, and TLS all worked. The failure is between the controller and the pod IP: nothing listening on that port, the app closing the connection mid-request, a keepalive race, or a backend that speaks HTTPS or gRPC while nginx sent plain HTTP/1.1. Its siblings are 503 , which almost always means the…

ข้อผิดพลาด 502 Bad Gateway จาก Kubernetes Ingress (nginx) บ่งชี้ว่า Ingress Controller ได้รับคำขอสำเร็จ แต่ไม่สามารถรับการตอบกลับ HTTP ที่ถูกต้องจาก Pod ของคุณได้ ซึ่งมักจะชี้ไปที่ปัญหาระหว่าง Controller และ IP ของ Pod เช่น ไม่มีอะไรกำลังฟังอยู่ที่พอร์ตนั้น แอปพลิเคชันปิดการเชื่อมต่อก่อนเวลาอันควร หรือโปรโตคอลไม่ตรงกัน (เช่น Ingress ส่ง HTTP ในขณะที่ Backend คาดหวัง HTTPS/gRPC) นักพัฒนาที่กำลังดีบั๊กข้อผิดพลาดเหล่านี้ควรตรวจสอบ Log ของ Pod และการกำหนดค่าเครือข่ายเพื่อให้แน่ใจว่าแอปพลิเคชันทำงานได้อย่างถูกต้องและกำลังฟังอยู่ที่พอร์ตที่คาดไว้ด้วยโปรโตคอลที่ถูกต้อง

Adding Status and Conditions to My Kubernetes Operator

cncfkubernetes

Adding Status and Conditions to My Kubernetes Operator
In the previous posts, I created a custom Kubernetes resource called Greeting , built a Java controller for it, and then deployed that controller inside Kubernetes. The current flow looks like this: Greeting | v Java Operator | v ConfigMap For example, I can create: apiVersion : platform.shubforge.dev/v1alpha1 kind : Greeting metadata : name : hello spec : message : " Hello from Platform Lab" and the operator creates: hello-greeting as a ConfigMap. This works. But there is still one problem. If I run: kubectl get greeting hello -o yaml the Greeting resource itself does not tell me much about what the operator has done. I can check the ConfigMap. I can check operator logs. But ideally, the…

ในการสร้าง Kubernetes Operator การเพิ่ม `Status` และ `Conditions` ให้กับ Custom Resource Definition (CRD) เป็นสิ่งสำคัญสำหรับการให้ข้อมูลย้อนกลับที่ชัดเจนเกี่ยวกับการทำงานของ Operator และสถานะของ Managed Resources แม้ว่า Operator อาจสร้าง ConfigMap ได้สำเร็จ แต่ `Greeting` Resource เองจะไม่สะท้อนสิ่งนี้หากไม่มีฟิลด์ `Status` นักพัฒนาควรใช้ `Status` เพื่อเปิดเผยข้อมูล เช่น สถานะปัจจุบัน Observed Generation และ Conditions ใดๆ (เช่น `Ready`, `Progressing`, `Degraded`) โดยตรงภายใน CRD ทำให้ผู้ใช้สามารถสอบถาม `kubectl get greeting hello -o yaml` เพื่อรับข้อมูลเชิงลึกในการดำเนินงานได้ทันทีโดยไม่จำเป็นต้องตรวจสอบ Log หรือ Resource อื่นๆ

Simple Node.js App Logging Service: Structured JSON for Small Express SaaS

cncfobservability

Simple Node.js App Logging Service: Structured JSON for Small Express SaaS
An e-commerce agent loop can emit a lot of data while doing very little visible work: a model call, a catalog lookup, a Postgres transaction, and a final action may all belong to one customer request. For a small SaaS, the best simple Node.js app logging service is therefore the one that accepts structured JSON logs without making an Express deployment hard to reverse. Replacing a logger is easy; discovering after a rollback that the old service cannot reconstruct the same request path is not. TL;DR: For a small Node.js/Express/Postgres service, start with structured JSON application logs in a central store, preserve stable correlation fields, and keep the transport replaceable. Choose a…

สำหรับแอปพลิเคชัน Node.js/Express/Postgres SaaS ขนาดเล็ก การใช้ Structured JSON Logging ตั้งแต่เริ่มต้นเป็นแนวทางปฏิบัติที่ดีที่สุด เนื่องจากช่วยให้วิเคราะห์ Agent Loop ที่ซับซ้อนซึ่งเกี่ยวข้องกับหลายขั้นตอน เช่น การเรียกโมเดล การทำธุรกรรมฐานข้อมูล และการดำเนินการภายนอกได้ง่ายขึ้น สิ่งสำคัญคือการรักษา Correlation Fields ที่เสถียร (เช่น Request IDs) ใน Log ทั้งหมด และตรวจสอบให้แน่ใจว่า Logging Transport สามารถเปลี่ยนได้ เพื่อป้องกันการผูกติดกับผู้ให้บริการ นักพัฒนาควรให้ความสำคัญกับ Central Log Store และ Structured Data เพื่อรักษา Observability และลดความซับซ้อนในการดีบั๊ก โดยเฉพาะอย่างยิ่งเมื่อ Rollback การเปลี่ยนแปลง เนื่องจากอาจเป็นเรื่องยากในการสร้าง Request Path จาก Log ที่ไม่มีโครงสร้าง

Rollback-Safe Missed Job Detection for Node.js BullMQ Notification Workers

cncfobservability

Rollback-Safe Missed Job Detection for Node.js BullMQ Notification Workers
For an edtech notification service, the least complex reliable design is to emit a success heartbeat after each scheduled run and let an external heartbeat monitor detect a run that never starts. Keep start, finish, and error logs with the BullMQ job ID for investigation, but do not confuse searchable telemetry with dead-man's-switch monitoring. TL;DR: make the rollout reversible. Instrument the worker first, send a timestamp metric or increment a success counter only after delivery work completes, and run a shadow evaluation before enabling pages. Infrai is a reasonable telemetry leg when a team wants metrics and searchable logs through a plain REST API without installing another SDK. It…

สำหรับ Node.js BullMQ Notification Workers วิธีการที่ปลอดภัยในการตรวจจับ Job ที่พลาดไปคือการส่ง Success Heartbeat หลังจากที่แต่ละ Scheduled Run เสร็จสมบูรณ์เท่านั้น เพื่อให้ External Heartbeat Monitor ตรวจจับความล้มเหลวได้ กลยุทธ์นี้เน้นการ Instrument Worker ก่อน ส่ง Timestamp Metric หรือเพิ่ม Success Counter หลังจากการส่งมอบงาน และทำการ Shadow Evaluation ก่อนเปิดใช้งานการแจ้งเตือน นักพัฒนาควรเน้นการแยกความแตกต่างที่ชัดเจนระหว่าง Searchable Telemetry (Log สำหรับการตรวจสอบ) และ Dead-Man's-Switch Monitoring (Heartbeat สำหรับการตรวจจับความล้มเหลวทันที) เพื่อให้มั่นใจว่าบริการแจ้งเตือนมีความน่าเชื่อถือโดยไม่ทำให้การตั้งค่าการตรวจสอบซับซ้อนเกินไป

2026-09-25

Kubernetes Admission Control: From Pod Security Standards to Policy-as-Code Gates

cncfkubernetes

Kubernetes Admission Control: From Pod Security Standards to Policy-as-Code Gates
Kubernetes Admission Control: From Pod Security Standards to Policy-as-Code Gates Kubernetes security guidance often stops at recommendations. Admission control is where recommendations become gates that a workload cannot pass without meeting them. Why the reader needs this A cluster that relies on documentation and review will eventually run a workload that violates its own rules. Admission controllers evaluate requests before objects are persisted, which means a policy can reject a non-compliant pod rather than relying on someone noticing it later. The built-in Pod Security Standards provide a baseline without any additional tooling. Policy engines extend that baseline to…

Kubernetes Admission Control เป็นกลไกสำคัญในการบังคับใช้นโยบายความปลอดภัยโดยการประเมินคำขอก่อนที่อ็อบเจกต์จะถูกบันทึกในคลัสเตอร์ ในขณะที่ Pod Security Standards ให้พื้นฐาน แต่ policy engines ขยายสิ่งนี้เพื่อให้สามารถใช้ policy-as-code gates แบบกำหนดเองได้ ซึ่งหมายความว่านักพัฒนาและผู้ดูแลคลัสเตอร์สามารถก้าวข้ามคำแนะนำไปสู่การปฏิเสธ workload ที่ไม่เป็นไปตามข้อกำหนดได้อย่างแข็งขัน ป้องกันการกำหนดค่าความปลอดภัยที่ไม่ถูกต้องไม่ให้ถูกปรับใช้ การนำ admission controllers มาใช้เป็นสิ่งสำคัญสำหรับการรักษาสภาพแวดล้อม Kubernetes ที่ปลอดภัย โดยเฉพาะอย่างยิ่งสำหรับองค์กรที่มีข้อกำหนดการปฏิบัติตามที่เข้มงวด.

Per-Key Cost Attribution or Application-Level Tags: 3 Fintech Boundaries

cncfobservability

Per-Key Cost Attribution or Application-Level Tags: 3 Fintech Boundaries
Short answer: start metered-invoice attribution with keys. They create cost centers without changing request paths, and a key boundary also limits how much activity one leaked credential can authorize. Add application tags only where a finer answer changes an invoice decision. Tags are more precise, but every new code path can silently weaken that precision. For a fintech platform, I would begin with three credential boundaries: production billing, non-production billing, and shared platform work. I would split a customer or workload further only after the finance or operations team can name the decision that split will drive. Pick Best fit Recovery and blast-radius trade-off Attribution…

สำหรับการแพลตฟอร์ม Fintech การจัดสรรต้นทุนอย่างมีประสิทธิภาพเป็นสิ่งสำคัญ และบทความนี้แนะนำให้เริ่มต้นด้วย API keys สำหรับการจัดสรรต้นทุนตามการใช้งาน การใช้ keys สร้างศูนย์ต้นทุนที่ชัดเจนและจำกัดขอบเขตความเสียหายของข้อมูลรับรองที่รั่วไหลโดยไม่ต้องเปลี่ยนเส้นทางคำขอ แท็กในระดับแอปพลิเคชันควรเพิ่มเมื่อมีการตัดสินใจเกี่ยวกับใบแจ้งหนี้ที่เฉพาะเจาะจงเท่านั้น นักพัฒนาที่ออกแบบหรือจัดการระบบ Fintech ควรอ้างอิงการจัดสรรต้นทุนตาม key ก่อน จากนั้นจึงพิจารณาการติดแท็กที่ละเอียดขึ้นเมื่อมีเหตุผลทางการเงินหรือการดำเนินงานที่ชัดเจน เพื่อรักษาสมดุลระหว่างความแม่นยำ ความซับซ้อน และความปลอดภัย.

Transactional Email API Explained: SaaS Welcome Messages with Measured Retention

cncfobservability

Transactional Email API Explained: SaaS Welcome Messages with Measured Retention
Short answer: Choose a transactional email API whose evidence supports safe retries, failure routing, and custom-domain alignment while letting a SaaS application avoid retaining message bodies. For a healthtech contact form, start with the evidence budget, not the provider catalog. A simple Node.js integration can hide an expensive habit: storing a payload, request headers, provider response, webhook body, and repeated retry logs for one logical message. For a welcome email or support-routing notification, reliability comes from a durable message identity and explicit state transitions. Keep those. Discard bodies and unbounded labels. Then compare US and EU deployment options…

ในการเลือก Transactional Email API สำหรับแอปพลิเคชัน SaaS สิ่งสำคัญคือต้องเลือก API ที่รองรับการลองใหม่ที่ปลอดภัย การกำหนดเส้นทางความล้มเหลว และการจัดเรียงโดเมนที่กำหนดเอง โดยหลีกเลี่ยงความจำเป็นที่แอปพลิเคชันจะต้องเก็บเนื้อหาข้อความ สำหรับนักพัฒนา นี่หมายถึงการให้ความสำคัญกับ API ที่ให้ durable message identity และ explicit state transitions เพื่อความน่าเชื่อถือ แทนที่จะเก็บข้อมูล payload ที่ละเอียดอ่อน วิธีการนี้ช่วยจัดการต้นทุน ลดความเสี่ยงในการเก็บข้อมูล และรับรองการปฏิบัติตามข้อกำหนด โดยเฉพาะอย่างยิ่งสำหรับ healthtech หรืออุตสาหกรรมที่มีการควบคุมอื่นๆ โดยมุ่งเน้นไปที่เมตาดาต้าที่จำเป็นสำหรับการส่งข้อความและหลีกเลี่ยงการจัดเก็บข้อมูลที่ไม่จำเป็น.

2026-09-24

Kubernetes Architecture Explained: The core components that run your cluster

cncfkubernetes

Kubernetes Architecture Explained: The core components that run your cluster
You have containerized your application with Docker and you need to run 100 copies across 20 servers, restart the containers when they crash, scale up or increase resources at users spike, plan updates without downtimes, doing that by hand(manually) is chaotic, that’s where kubernetes comes in. Requirements Docker — Minikube uses it to run your cluster. Install from the official docs: https://docs.docker.com/get-started/get-docker/ Minikube — runs a single-node Kubernetes cluster on your machine. Pick your operating system here: https://minikube.sigs.k8s.io/docs/start/ kubectl — the command-line tool you use to talk to the cluster: https://kubernetes.io/docs/tasks/tools/ You’ll also want at…

บทความนี้อธิบายสถาปัตยกรรมของ Kubernetes โดยเน้นที่ส่วนประกอบหลักที่ช่วยให้สามารถจัดการแอปพลิเคชันคอนเทนเนอร์ขนาดใหญ่ได้ มันเน้นย้ำว่า Kubernetes แก้ปัญหาการรันคอนเทนเนอร์หลายร้อยรายการบนเซิร์ฟเวอร์หลายเครื่องได้อย่างไร เพื่อให้แน่ใจว่ามีการรีสตาร์ท, การปรับขนาด และการอัปเดตโดยไม่มีการหยุดทำงาน สำหรับนักพัฒนาที่เพิ่งเริ่มต้นกับ Kubernetes หรือผู้ที่ต้องการทบทวน บทความนี้จะอธิบายความจำเป็นของเครื่องมือต่างๆ เช่น Docker, Minikube และ kubectl สำหรับการตั้งค่าและการโต้ตอบกับคลัสเตอร์ การทำความเข้าใจส่วนประกอบพื้นฐานเหล่านี้เป็นสิ่งสำคัญสำหรับทุกคนที่ต้องการ deploy และจัดการแอปพลิเคชันอย่างมีประสิทธิภาพในสภาพแวดล้อม Kubernetes.

A Guide to Basic Error Monitoring API Setup for Small SaaS Checkouts

cncfobservability

A Guide to Basic Error Monitoring API Setup for Small SaaS Checkouts
A small SaaS should choose error monitoring by asking how much evidence a checkout incident needs, then retain exactly that evidence. For low-friction exception capture, grouping, recent-failure search, and resolution inside an existing Node.js application stack, a basic errors API is enough. Choose Sentry or Rollbar when notification routing, source-map decoding, and deeper production debugging must be built in. Add a heartbeat service for a checkout job that can fail by never running. TL;DR: count events before comparing products. At 20,000 checkouts per month, retaining one compact exception for a 1% failure rate means 200 useful events. Capturing 25 progress messages for every checkout…

คู่มือนี้ให้คำแนะนำที่เป็นประโยชน์ในการตั้งค่า API สำหรับการมอนิเตอร์ข้อผิดพลาดพื้นฐานสำหรับ SaaS checkouts ขนาดเล็ก โดยเน้นความสำคัญของการเก็บหลักฐานให้เพียงพอสำหรับการแก้ไขเหตุการณ์ มันแนะนำว่าสำหรับแอปพลิเคชัน Node.js, API ข้อผิดพลาดที่เรียบง่ายก็เพียงพอสำหรับการบันทึก, จัดกลุ่ม และค้นหาความล้มเหลวล่าสุด ในขณะที่โซลูชันที่แข็งแกร่งกว่าเช่น Sentry หรือ Rollbar เหมาะสมเมื่อต้องการคุณสมบัติขั้นสูง เช่น การกำหนดเส้นทางการแจ้งเตือนและการถอดรหัส source-map สิ่งสำคัญสำหรับนักพัฒนาคือการประเมินความต้องการเฉพาะของตนเองตามปริมาณและความซับซ้อนของเหตุการณ์ก่อนที่จะเลือกโซลูชันการมอนิเตอร์ เพื่อให้แน่ใจว่าพวกเขาจะไม่สร้างระบบที่ซับซ้อนเกินไปหรือมอนิเตอร์กระบวนการ checkout ที่สำคัญน้อยเกินไป.

Build a Node Drain Agent: PDB-Aware Kubernetes Maintenance That Never Violates a Disruption Budget

cncfkubernetes

Build a Node Drain Agent: PDB-Aware Kubernetes Maintenance That Never Violates a Disruption Budget
💡 Originally published on devtocash.com — where this guide stays updated. I write hands-on DevOps/SRE deep-dives there weekly. What This Agent Does A node drain agent takes the most tedious job in cluster maintenance, emptying nodes for kernel patches, AMI rotations, and version upgrades, and makes it safe to run unattended. Before it cordons anything, deterministic code checks every pod on the node against every PodDisruptionBudget that selects it and predicts whether the eviction will succeed. When a drain would stall, the LLM diagnoses why the budget is exhausted and picks one of a small set of remediations: scale the workload up first, wait for an in-flight rollout, ask the owning…

บทความนี้นำเสนอแนวคิดของ "Node Drain Agent" สำหรับ Kubernetes ซึ่งออกแบบมาเพื่อทำให้การบำรุงรักษาโหนดเป็นไปโดยอัตโนมัติ (เช่น สำหรับการแพตช์เคอร์เนลหรือการอัปเกรด) โดยยึดมั่นใน PodDisruptionBudgets (PDBs) อย่างเคร่งครัด Agent จะตรวจสอบทุก pod เทียบกับ PDBs ก่อนที่จะ cordoning โหนด โดยคาดการณ์ว่าการย้าย pod จะสำเร็จหรือไม่ และวินิจฉัยว่าทำไมงบประมาณอาจหมดลง สิ่งนี้ช่วยป้องกันไม่ให้การดำเนินการบำรุงรักษาละเมิดการรับประกันความพร้อมใช้งานของบริการ นักพัฒนาที่จัดการคลัสเตอร์ Kubernetes สามารถนำแนวทางนี้ไปใช้เพื่อให้การบำรุงรักษาปลอดภัยและเป็นอัตโนมัติมากขึ้น ทำให้มั่นใจได้ว่าเวิร์คโหลดที่สำคัญยังคงพร้อมใช้งานแม้ในระหว่างการ drain โหนด เป็นโซลูชันที่แข็งแกร่งสำหรับการบำรุงรักษาคลัสเตอร์โดยไม่ต้องมีคนดูแล.

2026-09-23

14,913 Kubernetes Dashboard Matches: Why the Management UI Is the Wrong Thing to Expose

cncfkubernetes

14,913 Kubernetes Dashboard Matches: Why the Management UI Is the Wrong Thing to Expose
14,913 Kubernetes Dashboard Matches: Why the Management UI Is the Wrong Thing to Expose A Kubernetes dashboard is an administrative interface. When one is reachable from the public internet, the exposure is qualitatively different from a public web application, because the interface is designed to manage workloads rather than to serve users. The problem and why it matters Management interfaces concentrate privilege. A dashboard that can list pods, read secrets or execute into containers gives an authenticated user a great deal of control. Exposing that interface to the internet removes the network boundary that would otherwise be the first control an attacker has to defeat. The exposure is…

การเปิดเผย Kubernetes Dashboard สู่สาธารณะบนอินเทอร์เน็ตมีความเสี่ยงด้านความปลอดภัยอย่างมาก เนื่องจากเป็นอินเทอร์เฟซการดูแลระบบที่มีสิทธิ์สูง แตกต่างจากเว็บแอปพลิเคชันสาธารณะ แดชบอร์ดนี้ออกแบบมาเพื่อจัดการเวิร์กโหลด ทำให้ผู้ใช้ที่ผ่านการยืนยันตัวตนสามารถควบคุม pod, secret และ container ได้อย่างกว้างขวาง นักพัฒนาและผู้ดูแลระบบควรหลีกเลี่ยงการเปิดเผย Kubernetes Dashboard โดยตรงต่ออินเทอร์เน็ต และควรใช้วิธีการเข้าถึงที่ปลอดภัย เช่น VPN หรือ bastion host เพื่อปกป้องคลัสเตอร์จากการเข้าถึงโดยไม่ได้รับอนุญาตและการถูกโจมตีที่อาจเกิดขึ้น.

Docker Essentials: Containerizing Your First App – Like Neo Dodging Bullets in The Matrix

cncfkubernetes

Docker Essentials: Containerizing Your First App – Like Neo Dodging Bullets in The Matrix
The Quest Begins (The "Why") Honestly, I remember the first time I tried to share a Node.js API with a teammate. I zip‑up the project, send it over Slack, and they reply, “Hey, it’s complaining about missing modules on my machine.” We spend an hour aligning Node versions, fiddling with npm config, and finally get it running — only to discover the next day that the production server has a different OS and the build breaks again. It felt like trying to solve a puzzle where the pieces keep changing shape. That’s when the idea of containerization clicked: what if I could package my app exactly as it runs on my laptop, ship that package everywhere, and know it will behave the same? No more…

บทความนี้เป็นบทนำสู่ Docker โดยอธิบายแนวคิดพื้นฐานของการทำคอนเทนเนอร์และประโยชน์สำหรับนักพัฒนา มันเน้นว่า Docker แก้ปัญหาการปรับใช้และความสอดคล้องของสภาพแวดล้อมทั่วไปได้อย่างไร โดยการบรรจุแอปพลิเคชันและส่วนประกอบเข้าในคอนเทนเนอร์ที่แยกจากกัน นักพัฒนาที่เพิ่งเริ่มต้นกับการทำคอนเทนเนอร์สามารถใช้คู่มือนี้เพื่อทำความเข้าใจว่าทำไม Docker จึงจำเป็นสำหรับการสร้างสภาพแวดล้อมแอปพลิเคชันที่พกพาได้และเชื่อถือได้ ซึ่งช่วยขจัดปัญหา "มันทำงานบนเครื่องของฉัน".

2026-09-22

What EU Data Sovereignty Actually Requires Beyond Hosting

cncfkubernetes

What EU Data Sovereignty Actually Requires Beyond Hosting
Pipeline & Prompts | Byte size guides on DevOps, Cloud and AI ☁️ Cloud Without the Chaos #4 ⚡ Byte Size Summary Why "the data is in an EU data centre" doesn't answer a sovereignty question. Support access, logs, and metrics are separate surfaces, and each needs its own boundary What happened when a blanket EU-only routing fix broke a 2-hour P1 SLA, and the tier we built instead Why sovereignty isn't something you automate. You can only shrink the surface area where a human has to touch the boundary The Story The data residency box was already checked. Managed Kubernetes clusters, multi-region, customer workload data pinned to EU regions from day one. That part of the compliance conversation…

การบรรลุ Data Sovereignty โดยเฉพาะในภูมิภาคอย่าง EU ไม่ได้หมายถึงแค่การโฮสต์ข้อมูลใน Data Center ท้องถิ่นเท่านั้น แต่ยังรวมถึงการเข้าถึง Support, Logs และ Metrics ซึ่งแต่ละส่วนต้องมีขอบเขตของตนเอง การกล่าวเพียงว่า "ข้อมูลอยู่ใน Data Center ของ EU" ไม่ได้ตอบคำถามเรื่อง Sovereignty อย่างครบถ้วน เนื่องจากมนุษย์ยังสามารถเข้าถึงส่วนต่างๆ เหล่านี้ได้โดยไม่ผ่านข้อจำกัดทางภูมิศาสตร์ นักพัฒนาและสถาปนิกที่ออกแบบระบบสำหรับ Data Sovereignty ต้องพิจารณาจุดเข้าถึงที่เป็นไปได้ทั้งหมด และใช้การควบคุมที่นอกเหนือจากการเก็บข้อมูลในพื้นที่ โดยตระหนักว่าการทำให้ Sovereignty เป็นอัตโนมัติทั้งหมดนั้นเป็นเรื่องที่ท้าทาย และมักต้องมีการกำกับดูแลโดยมนุษย์ ณ ขอบเขตที่สำคัญ

Found the Real Kubernetes Memory Ceiling — It Wasn't Double

cncfkubernetes

Found the Real Kubernetes Memory Ceiling — It Wasn't Double
Last entry left a real question hanging: the exact Podman number got killed under kind , twice. Did that mean the gap between the two runtimes was huge — needing something close to double the memory — or was the real ceiling only a little higher than 1663Mi, and I'd just clipped it? Only one way to find out. Redeployed with the limit bumped to 2048Mi — a deliberately big jump, so the answer would be unambiguous either way: kubectl delete pod ollama-sized kubectl apply -f ollama-pod-2gb.yaml kubectl exec -it ollama-2gb -- ollama pull llama3.2:1b kubectl exec -it ollama-2gb -- ollama run llama3.2:1b Asked it a real question, checked the outcome: kubectl top pod ollama-2gb kubectl describe pod…

ในการปรับแต่ง Memory Limit ของ Kubernetes เพดานหน่วยความจำที่แท้จริงสำหรับ Pod อาจสูงกว่าที่สังเกตได้เล็กน้อยเท่านั้น ไม่จำเป็นต้องเป็นสองเท่า แม้ว่าความพยายามครั้งแรกจะล้มเหลวก็ตาม การค้นพบนี้ชี้ให้เห็นว่าการปรับแต่ง Memory Request และ Limit ต้องอาศัยการทดสอบที่แม่นยำ แทนที่จะเป็นการเพิ่มค่าแบบสุ่ม นักพัฒนาและ SRE ที่จัดการ Kubernetes Cluster ควรสทการทดสอบซ้ำๆ โดยเพิ่มหน่วยความจำทีละน้อยเมื่อปรับ Memory Limit เพื่อระบุเพดานที่เหมาะสมอย่างแม่นยำ ป้องกันการจัดสรรทรัพยากรเกินความจำเป็น หรือ OOMKill ที่ไม่คาดคิด และรับประกันการใช้ทรัพยากรอย่างมีประสิทธิภาพ

9 of my 27 declared lanes logged nothing, for three different reasons

cncfobservability

9 of my 27 declared lanes logged nothing, for three different reasons
If your agent builds prompts from more than two sources, you probably have a list somewhere of what those sources are: memory, tool results, the skill that matched, the page the user pasted, a rolling summary. You may call them context sources or injectors. I call them lanes. The list is supposed to be the truth about what can reach the model. Mine wasn't. Nine of the 27 lanes in my registry had zero rows in the event log. The registry said all 27 were live. Nothing in the build could tell me which of the nine were broken and which just hadn't seen any traffic yet. Each lane entry now says where it lands: log , receipt or none I built this into Vodou , a local-first system that assembles…

เมื่อสร้าง AI Agent ที่ดึง Context จากหลายแหล่ง (Lanes) สิ่งสำคัญคือต้องตรวจสอบว่าแหล่งที่มาที่ประกาศไว้ทั้งหมดกำลังบันทึกข้อมูลอยู่ ความไม่สอดคล้องกันระหว่าง Lanes ที่ประกาศกับเหตุการณ์ที่บันทึกจริงสามารถซ่อนความล้มเหลวหรือการกำหนดค่าที่ไม่ถูกต้อง ทำให้ไม่สามารถระบุได้ว่า Lane เสียหายหรือเพียงแค่ไม่มีการใช้งาน นักพัฒนาที่ทำงานกับสถาปัตยกรรม AI Agent ที่ซับซ้อนควรใช้การบันทึกและตรวจสอบที่ชัดเจนสำหรับแหล่ง Context แต่ละแหล่ง เพื่อยืนยันการไหลของข้อมูล แทนที่จะพึ่งพา Registry เพียงอย่างเดียว เพื่อให้แน่ใจว่า Input ที่ตั้งใจไว้ทั้งหมดไปถึงโมเดล และป้องกันไม่ให้ข้อมูลสำคัญถูกละเลย

2026-09-21

Port 6443 in the Wild: Measuring Public Kubernetes API Endpoint Exposure

cncfcloudnative

Port 6443 in the Wild: Measuring Public Kubernetes API Endpoint Exposure
Port 6443 in the Wild: Measuring Public Kubernetes API Endpoint Exposure Kubernetes has become the default control plane of modern infrastructure. It schedules workloads, stores cluster state, issues credentials, and brokers every privileged action inside a cluster. The component that performs this work, the kube-apiserver, is a network service, and like every network service it can be reached from anywhere that routing, firewalls, and cloud security groups permit. That makes a single question measurable at internet scale: how many hosts publicly expose the Kubernetes API server port? This article answers that question with a ZoomEye measurement and then separates what the number proves…

บทความนี้สำรวจว่าพอร์ต Kubernetes API server (6443) ถูกเปิดเผยสู่สาธารณะบนอินเทอร์เน็ตมากน้อยเพียงใด โดยใช้ข้อมูลจาก ZoomEye `kube-apiserver` เป็น Control Plane สำหรับ Kubernetes ซึ่งจัดการสถานะคลัสเตอร์และการดำเนินการที่มีสิทธิ์ ทำให้การเปิดเผยสู่สาธารณะเป็นข้อกังวลด้านความปลอดภัยที่สำคัญ นักพัฒนาและผู้ดูแลระบบที่จัดการคลัสเตอร์ Kubernetes ควรตระหนักถึงความเสี่ยงที่เกี่ยวข้องกับ API server ที่เปิดเผย และตรวจสอบให้แน่ใจว่าคลัสเตอร์ของตนได้รับการรักษาความปลอดภัยอย่างเหมาะสมด้วยไฟร์วอลล์และ Security Group โดยจำกัดการเข้าถึงเฉพาะเครือข่ายที่เชื่อถือได้เท่านั้น

รายงานโดย: devto-kubernetes

Our linter's "safe" autofix would have silently disabled RBAC

cncfkubernetes

Our linter's "safe" autofix would have silently disabled RBAC
KubeIntellect is an AI agent that runs kubectl against a live cluster, so its tools carry a role check and a human-approval gate. Both depend on one thing: the tool actually receiving the run config the graph injects. This is the parameter that receives it. config : Annotated [ RunnableConfig , InjectedToolArg ] = None , # type: ignore[assignment] That line is wrong in every way a reviewer is trained to notice. The default is None , but the annotation does not say | None . mypy complains, which is why there is a type: ignore sitting on it. Ruff wants to rewrite the Optional[...] spelling of it. Every instinct says clean this up. Cleaning it up disables role-based access control. Why the…

บทความนี้เน้นย้ำถึงปัญหาสำคัญที่ฟังก์ชัน "autofix" ของ Linter อาจปิดใช้งาน Role-Based Access Control (RBAC) ใน Kubernetes โดยไม่ตั้งใจ เมื่อทำงานกับ AI Agent ที่รันคำสั่ง `kubectl` ปัญหาเกิดจากการแก้ไข type annotation ที่ดูเหมือนไม่มีอันตราย แต่เมื่อนำไปใช้แล้ว จะขัดขวางไม่ให้ `RunnableConfig` ถูก inject อย่างถูกต้อง ซึ่งเป็นการข้ามการตรวจสอบความปลอดภัย นักพัฒนาที่ใช้ Linter ที่มีคุณสมบัติ autofix กับการกำหนดค่า Kubernetes โดยเฉพาะที่เกี่ยวข้องกับ AI Agent หรือเครื่องมือที่กำหนดเอง ต้องใช้ความระมัดระวังอย่างยิ่งและตรวจสอบการเปลี่ยนแปลงอย่างละเอียด เพื่อหลีกเลี่ยงการลดทอนความปลอดภัยของ RBAC โดยไม่รู้ตัว

Kubernetes - Day - 03 - File Permissions, Bind Mount

cncfkubernetes

Kubernetes - Day - 03 - File Permissions, Bind Mount
File Permission - chmod 600 <file_name> - chmod -R 6-- <folder_name> - R -- > Recurrsive What is UMASK ? This is for default permission. just type "umask". Reply 0002 ( what it means ? ) Don't take the first 0. It will be for directory. It will give 666 (rw- rw- rw-) --> 666 - 002 --> 664. The result is ( rw- rw- r-- ) Bind Mount mount --bind <src_folder> <dest_folder> A folder is like HOST. B folder is like Container. This is literally called as Volume. Bind Mount is nothing buta VOLUME. Commands docker run -v "./data":"/home/data" ubuntu bash Architecture Image is RO. No in-place updation for image , only new image can be created. Each image will have different layers. Notes : Container…

บทความนี้ให้ข้อมูลเบื้องต้นเกี่ยวกับการอนุญาตไฟล์ (file permissions) และ bind mounts ในบริบทของ Kubernetes และ Docker ครอบคลุมคำสั่ง `chmod`, แนวคิดของ `umask` สำหรับการอนุญาตเริ่มต้น และวิธีการทำงานของ bind mounts ในฐานะ volume โดยแสดงตัวอย่างด้วยคำสั่ง Docker นักพัฒนาที่เพิ่งเริ่มต้นกับการใช้คอนเทนเนอร์หรือ Kubernetes โดยเฉพาะผู้ที่ประสบปัญหาเกี่ยวกับการจัดเก็บข้อมูลถาวรและการควบคุมการเข้าถึงภายในคอนเทนเนอร์ จะพบว่านี่เป็นข้อมูลเบื้องต้นที่เป็นประโยชน์สำหรับการทำความเข้าใจแนวคิดพื้นฐานของการจัดการไฟล์และการเมานต์วอลุ่ม

Observability and Billing for AI API Calls: A T-Shaped Architecture

cncfobservability

Observability and Billing for AI API Calls: A T-Shaped Architecture
Adding AI API calls to an existing backend is where most teams' observability and billing instincts break. The calls look similar to any other RPC — send a JSON request, receive a JSON response. The difference is what happens to the meter. An ordinary RPC costs you deterministic compute: a few milliseconds of CPU, a few KB of network. An LLM API call costs you between $0.0001 and $1.50 depending on which model, which provider, how long the prompt was, how long the completion went, and whether the provider's prompt cache kicked in. Same endpoint, same code path, two orders of magnitude of price variance per call. The first teams I worked with through this problem made the obvious mistake…

บทความนี้กล่าวถึงความท้าทายของการทำ observability และ billing เมื่อรวมการเรียกใช้ AI API เข้ากับระบบแบ็กเอนด์ที่มีอยู่ โดยระบุว่าความผันผวนของค่าใช้จ่ายสำหรับการเรียกใช้ LLM API อาจแตกต่างกันถึงสองเท่าตัว แม้จะมีโค้ดพาธที่คล้ายกัน บทความนี้นำเสนอ "สถาปัตยกรรมรูปตัว T" เพื่อจัดการกับความซับซ้อนเหล่านี้ โดยเน้นที่การติดตามและจัดการค่าใช้จ่ายที่ไม่สามารถคาดเดาได้ของบริการ AI นักพัฒนาที่กำลังรวมโมเดล AI เข้ากับแอปพลิเคชันของตน โดยเฉพาะผู้ที่กังวลเกี่ยวกับการจัดการต้นทุนและการตรวจสอบ จะพบว่าบทความนี้มีประโยชน์สำหรับการออกแบบระบบที่แข็งแกร่งซึ่งสามารถจัดการกับลักษณะการเรียกเก็บเงินที่เป็นเอกลักษณ์ของ AI API

2026-09-20

Tracing 2 Developer Tool Builds Through Startup API Key Identity Logs

cncfobservability

Tracing 2 Developer Tool Builds Through Startup API Key Identity Logs
A prepaid developer-tools service can stop accepting traffic when its balance runs out. An access investigation then needs two answers: which credential a release used, and where the evidence lives. Short answer: resolve the credential identity at service startup, record it alongside the build ID, and ship that event to a searchable log store. Never log the credential itself. This audit trail cannot replace a balance alert or guarantee that traffic will not be refused. How should a service log API key identity at startup? Before: an engineer sees a build identifier in deployment history, opens a credential console, and tries to reconstruct which key that deployment loaded. After: a startup…

เพื่อให้สามารถติดตามการสร้างเครื่องมือสำหรับนักพัฒนาและการใช้งาน API key ได้อย่างมีประสิทธิภาพ สิ่งสำคัญคือต้องบันทึกข้อมูลประจำตัวของ credential ในช่วงเริ่มต้นของบริการพร้อมกับ build ID และส่งเหตุการณ์นี้ไปยัง log store ที่สามารถค้นหาได้ การปฏิบัตินี้จะสร้าง audit trail ที่ช่วยในการระบุว่า deployment ใดโหลด key ใด โดยไม่ต้องบันทึก credential เอง การนำสิ่งนี้ไปใช้จะช่วยให้เมื่อบริการเครื่องมือสำหรับนักพัฒนาแบบเติมเงินหมดลง วิศวกรสามารถระบุ build และ credential ที่เกี่ยวข้องได้อย่างรวดเร็ว ทำให้การตรวจสอบการเข้าถึงง่ายขึ้น

Node.js DNS Evidence: When Application Logs Need Live Zone Reads

cncfobservability

Node.js DNS Evidence: When Application Logs Need Live Zone Reads
Use change events to prove what your B2B SaaS asked for, authoritative DNS snapshots to prove what the Internet returned, and reconciliation records to connect the two. Neither source is a complete audit history by itself. For onboarding, the decisive evidence is a timestamped chain from expected record to observed answer, with resolver errors and later drift preserved rather than overwritten. Evidence source What it can establish What it cannot establish Pick this when Application change events Actor, request ID, intended name, type, value, and workflow outcome What an authoritative server actually served You must explain who requested a verification change and why Authoritative DNS…

เมื่อแก้ไขปัญหา DNS ในแอปพลิเคชัน Node.js ประวัติการตรวจสอบที่สมบูรณ์ต้องรวมเหตุการณ์การเปลี่ยนแปลงของแอปพลิเคชัน, สแนปช็อต DNS ที่เป็นทางการ และบันทึกการกระทบยอด บันทึกของแอปพลิเคชันสามารถระบุได้ว่าใครร้องขอการเปลี่ยนแปลงและผลลัพธ์ที่ต้องการ แต่ไม่สามารถพิสูจน์ได้ว่าเซิร์ฟเวอร์ที่เป็นทางการให้บริการอะไรจริง การรวมสแนปช็อต DNS ที่เป็นทางการช่วยให้นักพัฒนาสามารถตรวจสอบการตอบสนองจริงจากอินเทอร์เน็ต และบันทึกการกระทบยอดจะเชื่อมโยงแหล่งข้อมูลทั้งสองนี้เข้าด้วยกัน ทำให้เกิดห่วงโซ่หลักฐานที่มีการประทับเวลาตั้งแต่บันทึกที่คาดไว้ไปจนถึงคำตอบที่สังเกตได้ ซึ่งสำคัญสำหรับการเริ่มต้นใช้งานและการแก้ไขปัญหาผลิตภัณฑ์ B2B SaaS

VMware Admin's Guide to Kubernetes

cncfkubernetes

VMware Admin's Guide to Kubernetes
The Problem Nobody Talks About When I first approached Kubernetes, every tutorial assumed I was a developer coming from Docker. Nobody wrote for someone who knew vSphere inside-out — who understood DRS, vMotion, VSAN, NSX, and had opinions about datastore sizing. The Mental Model Map | VMware vSphere | Kubernetes Equivalent | Key Difference | |---|---|---| | ESXi Host | Node | Nodes run containers, not VMs | | vCenter Server | Control Plane (API Server) | API-driven, not GUI-first | | VM | Pod | Pods are ephemeral — embrace this | | VM Template | Container Image | Stored in a registry, not a datastore | | vSwitch / DVS | CNI Plugin (Calico, Cilium) | Defined in YAML, not GUI clicks | | NSX…

สำหรับผู้ดูแลระบบ VMware ที่กำลังเปลี่ยนผ่านสู่ Kubernetes การทำความเข้าใจแนวคิดของ vSphere ที่คุ้นเคยเทียบกับ Kubernetes จะเป็นประโยชน์ ตัวอย่างเช่น ESXi Host เทียบได้กับ Node, vCenter Server เทียบได้กับ Control Plane และ VM เทียบได้กับ Pod การทำความเข้าใจว่า Pods มีลักษณะชั่วคราวไม่เหมือน VM และ Kubernetes เป็นแบบ API-driven ไม่ใช่ GUI-first เป็นกุญแจสำคัญในการทำความเข้าใจกระบวนทัศน์ใหม่ การแปลโมเดลความคิดนี้ช่วยเชื่อมช่องว่างความรู้ ทำให้ผู้เชี่ยวชาญ VMware สามารถใช้ความรู้โครงสร้างพื้นฐานที่มีอยู่แล้วในบริบทของ Kubernetes ได้

Cosign Keyless Signing in GitHub Actions: Sign Images, Attest SBOMs, and Enforce It with Kyverno

cncfkubernetes

Cosign Keyless Signing in GitHub Actions: Sign Images, Attest SBOMs, and Enforce It with Kyverno
💡 Originally published on devtocash.com — where this guide stays updated. I write hands-on DevOps/SRE deep-dives there weekly. The short version Cosign keyless signing means your GitHub Actions job proves its identity with its OIDC token, gets a ten-minute certificate from Sigstore's Fulcio CA, signs the image digest, and throws the private key away. There is no signing key to store, rotate, or leak. What you verify later is not "was this signed by key X" but "was this signed by this workflow file, on this branch, in this repo ." The whole loop is three moves: add id-token: write and a cosign sign step to the build job, attach an SBOM as a signed attestation, and make the cluster refuse…

การเซ็นแบบ keyless ด้วย Cosign ใน GitHub Actions เป็นวิธีที่ปลอดภัยในการเซ็นอิมเมจคอนเทนเนอร์และยืนยัน SBOMs โดยไม่ต้องจัดการ private keys กระบวนการนี้เกี่ยวข้องกับการที่ GitHub Actions job พิสูจน์ตัวตนด้วย OIDC token, รับใบรับรองชั่วคราวจาก Sigstore's Fulcio CA, เซ็น image digest และทิ้ง private key วิธีนี้ช่วยให้สามารถตรวจสอบได้จากไฟล์ workflow, branch และ repository แทนที่จะเป็นคีย์แบบคงที่ และสามารถบังคับใช้ในคลัสเตอร์ Kubernetes โดยใช้ Kyverno เพื่อปฏิเสธอิมเมจที่ไม่ได้เซ็น ซึ่งช่วยเพิ่มความปลอดภัยของ supply chain ได้อย่างมาก

2026-09-19

Deployed Ollama to Local Kubernetes With No Resource Limits

cncfkubernetes

Deployed Ollama to Local Kubernetes With No Resource Limits
Before testing whether last entry's real Podman number (1.663GB) holds up as an actual Kubernetes resource limit, I wanted a baseline: what happens with nothing set at all. kind runs a full local Kubernetes cluster inside containers acting as nodes — Kubernetes on top of the same containers everything else in this series has been using. Spun up a fresh cluster and deployed Ollama with no resources section in the pod spec whatsoever: kind create cluster --name today-i-ran kubectl apply -f ollama-pod-naive.yaml kubectl exec -it ollama-naive -- ollama pull llama3.2:1b kubectl exec -it ollama-naive -- ollama run llama3.2:1b Asked it a real question — "What does BGP do in OpenShift Networking" —…

บทความนี้อธิบายการทดลอง deploy Ollama ซึ่งเป็น LLM runner แบบ local ไปยัง Kubernetes cluster แบบ local (kind) โดยไม่ได้ตั้งค่า resource limits ใดๆ เป้าหมายคือการสร้าง baseline สำหรับการใช้ทรัพยากรก่อนที่จะกำหนด limits ที่เฉพาะเจาะจง ผู้เขียนสามารถ pull และรันโมเดล `llama3.2:1b` และสอบถามข้อมูลได้สำเร็จ สิ่งนี้เกี่ยวข้องกับนักพัฒนาที่กำลังสำรวจการ deploy โมเดล AI แบบ local บน Kubernetes เนื่องจากเป็นการแสดงจุดเริ่มต้นสำหรับการทำความเข้าใจการใช้ทรัพยากร อย่างไรก็ตาม ในสภาพแวดล้อมการผลิต การตั้งค่า resource requests และ limits ที่เหมาะสมเป็นสิ่งสำคัญอย่างยิ่งเพื่อป้องกันการใช้ทรัพยากรจนหมดและรับรองความเสถียรของคลัสเตอร์

The Same Memory Number That Worked in Podman Got OOMKilled in Kubernetes

cncfkubernetes

The Same Memory Number That Worked in Podman Got OOMKilled in Kubernetes
OOMKilled is what Kubernetes says when a container tries to use more memory than its limit allows and the kernel steps in and kills it. Going into this one, my assumption was straightforward: Entry 09 measured 1.663GB under Podman, so setting a Kubernetes limit to that exact number should be enough. Same model, same host, same measurement. That assumption was wrong, and finding out why turned into the most interesting result in the series so far. Deployed the same image to a fresh kind cluster with requests.memory and limits.memory both set to the precise Podman figure — 1663Mi. Pulled the model, tried to load it: kubectl exec -it ollama-sized -- ollama pull llama3.2:1b kubectl exec -it…

บทความนี้เน้นความแตกต่างที่สำคัญในการจัดการหน่วยความจำระหว่าง Podman และ Kubernetes: ขีดจำกัดหน่วยความจำที่ใช้ได้กับ Ollama ใน Podman (1.663GB) กลับทำให้เกิดข้อผิดพลาด Out-Of-Memory (OOMKilled) เมื่อนำไปใช้กับ Kubernetes สิ่งนี้บ่งชี้ว่าพฤติกรรมการใช้หน่วยความจำอาจแตกต่างกันอย่างมีนัยสำคัญระหว่าง container runtimes และแพลตฟอร์ม orchestration แม้จะเป็นแอปพลิเคชันเดียวกันก็ตาม นักพัฒนาที่ deploy โมเดล AI หรือแอปพลิเคชันที่ใช้หน่วยความจำมากไปยัง Kubernetes ไม่ควรถือว่าขีดจำกัดทรัพยากรที่ได้จากเครื่องมือคอนเทนเนอร์แบบ local จะสามารถนำไปใช้ได้โดยตรง การทดสอบอย่างละเอียดและการปรับแต่ง `requests.memory` และ `limits.memory` ใน Kubernetes เป็นสิ่งสำคัญเพื่อหลีกเลี่ยง OOMKilled pods และรับรองความเสถียรของแอปพลิเคชัน

How we tuned TypeSafe Jev for log triage without alert storms

cncfobservability

How we tuned TypeSafe Jev for log triage without alert storms
TypeSafe Jev is a typed evaluation model available on Vercel AI Gateway. It costs 0.042 dollars per million input tokens, and output tokens are free. Because the price is low, many teams want to use it as a programmable filter on log streams, either to trigger on-call alerts or to drop routine noise before sending logs to larger models. We tested Jev on a stream of 3,000 synthetic payment and checkout logs, and on 5,000 lines from the Loghub dataset. We ran into several unexpected problems, including alert storms on normal deployments and pre-filtering pipelines that cost more money than sending raw logs directly to GPT-5.6 Luna. Here is what went wrong, what fixed it, and the code patterns…

บทความนี้กล่าวถึงความท้าทายและแนวทางแก้ไขในการใช้ TypeSafe Jev ซึ่งเป็นโมเดลการประเมิน AI บน Vercel AI Gateway สำหรับการคัดแยก Log แม้ว่า Jev จะคุ้มค่าสำหรับ input tokens แต่ทีมงานก็พบปัญหา เช่น alert storms ในระหว่างการ deploy ปกติ และ pipeline การกรองล่วงหน้าที่มีค่าใช้จ่ายสูงกว่าการส่ง Log ดิบไปยังโมเดลขนาดใหญ่โดยตรง สิ่งนี้มีความเกี่ยวข้องอย่างมากสำหรับนักพัฒนาและทีมปฏิบัติการที่ต้องการใช้ AI สำหรับการวิเคราะห์ Log และการแจ้งเตือน สาระสำคัญคือการปรับแต่งอย่างรอบคอบและทำความเข้าใจพฤติกรรมของโมเดล AI โดยเฉพาะอย่างยิ่งเกี่ยวกับ false positives และผลกระทบด้านต้นทุนของการประมวลผลล่วงหน้า ซึ่งเป็นสิ่งสำคัญในการใช้ AI สำหรับ observability อย่างมีประสิทธิภาพ โดยไม่สร้าง noise ที่มากเกินไปหรือค่าใช้จ่ายที่ไม่คาดคิด