<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>nghia-pham.dev</title><description>Personal blog of Nghia Pham -- full-stack developer writing about Kubernetes, infrastructure, platform engineering, frontend (React, Angular, Vue), backend, databases, and software craft.</description><link>https://blog.nghia-pham.com/</link><item><title>Backstage on Kubernetes: Practical Platform Engineering Guide</title><link>https://blog.nghia-pham.com/blog/backstage-kubernetes-platform-engineering-practical-guide/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/backstage-kubernetes-platform-engineering-practical-guide/</guid><description>Implement a practical Internal Developer Platform with Backstage on Kubernetes, software templates, service catalog, and golden paths for engineering teams.</description></item><item><title>ArgoCD Advanced Patterns: App of Apps and Promotion Flows</title><link>https://blog.nghia-pham.com/blog/argocd-advanced-patterns-app-of-apps-promotion/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/argocd-advanced-patterns-app-of-apps-promotion/</guid><description>Implement advanced ArgoCD patterns for scalable GitOps: App of Apps, environment promotion, sync waves, and safe progressive delivery workflows.</description></item><item><title>[24/24] E is for Etcd: Understanding the Brain of Kubernetes</title><link>https://blog.nghia-pham.com/blog/e-is-for-etcd-kubernetes-brain/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/e-is-for-etcd-kubernetes-brain/</guid><description>A deep dive into etcd, the distributed key-value store that powers Kubernetes. Learn about consistency, high availability, and backup strategies.</description></item><item><title>[23/24] B is for Best Practices: Building Secure and Reliable Apps</title><link>https://blog.nghia-pham.com/blog/b-is-for-best-practices-security-reliability/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/b-is-for-best-practices-security-reliability/</guid><description>The second post in our Kubernetes A-to-Z series covering essential best practices for security, reliability, and resource management.</description></item><item><title>[19/24] A is for Authentication and RBAC: Securing Your Cluster</title><link>https://blog.nghia-pham.com/blog/a-is-for-authentication-rbac-securing-cluster/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/a-is-for-authentication-rbac-securing-cluster/</guid><description>The sixteenth post in our Kubernetes A-to-Z series covering authentication mechanisms, Role-Based Access Control, security contexts, and cluster security best practices.</description></item><item><title>[4/24] D is for Deployments: Managing Application Lifecycle</title><link>https://blog.nghia-pham.com/blog/d-is-for-deployments-application-lifecycle/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/d-is-for-deployments-application-lifecycle/</guid><description>The fourth post in our Kubernetes A-to-Z series covering Deployments, rolling updates, rollbacks, and application lifecycle management strategies.</description></item><item><title>[2/24] C is for Containers: Docker Fundamentals Before Kubernetes</title><link>https://blog.nghia-pham.com/blog/c-is-for-containers-docker-fundamentals/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/c-is-for-containers-docker-fundamentals/</guid><description>The second post in our Kubernetes A-to-Z series covering container fundamentals, Docker basics, and essential concepts needed before learning Kubernetes.</description></item><item><title>[20/24] F is for Federation: Multi-Cluster Management</title><link>https://blog.nghia-pham.com/blog/f-is-for-federation-multi-cluster-management/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/f-is-for-federation-multi-cluster-management/</guid><description>The seventeenth post in our Kubernetes A-to-Z series covering multi-cluster architectures, federation patterns, service mesh, disaster recovery, and cross-cluster communication.</description></item><item><title>[22/24] G is for GitOps: Modern Deployment Workflows</title><link>https://blog.nghia-pham.com/blog/g-is-for-gitops-modern-deployment-argocd-fluxcd/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/g-is-for-gitops-modern-deployment-argocd-fluxcd/</guid><description>A comprehensive guide to GitOps principles and practices, comparing ArgoCD and FluxCD with practical examples, deployment strategies, and production best practices.</description></item><item><title>Building Internal Developer Platforms on Kubernetes: A Comprehensive Guide</title><link>https://blog.nghia-pham.com/blog/building-internal-developer-platforms-kubernetes/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/building-internal-developer-platforms-kubernetes/</guid><description>Learn how to build an Internal Developer Platform (IDP) on Kubernetes with Backstage, self-service capabilities, golden paths, and platform engineering best practices.</description></item><item><title>[11/24] I is for Ingress: Managing External Access</title><link>https://blog.nghia-pham.com/blog/i-is-for-ingress-managing-external-access/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/i-is-for-ingress-managing-external-access/</guid><description>The tenth post in our Kubernetes A-to-Z series covering Ingress controllers, routing rules, TLS termination, and advanced traffic management patterns.</description></item><item><title>[1/24] K is for Kubernetes: Understanding the Basics and Architecture</title><link>https://blog.nghia-pham.com/blog/k-is-for-kubernetes-basics-and-architecture/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/k-is-for-kubernetes-basics-and-architecture/</guid><description>The first post in our Kubernetes A-to-Z series covering Kubernetes fundamentals, architecture, components, and basic cluster setup.</description></item><item><title>[7/24] J is for Jobs and CronJobs: Batch Processing in Kubernetes</title><link>https://blog.nghia-pham.com/blog/j-is-for-jobs-cronjobs-batch-processing/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/j-is-for-jobs-cronjobs-batch-processing/</guid><description>Learn how to run one-off tasks and scheduled batch jobs in Kubernetes using Jobs and CronJobs resources.</description></item><item><title>Kafka Partition Design for IoT: Throughput and Ordering</title><link>https://blog.nghia-pham.com/blog/kafka-partitions-deep-dive-iot-architecture/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kafka-partitions-deep-dive-iot-architecture/</guid><description>Design Kafka topic and partition strategy for IoT workloads with practical guidance on throughput, ordering, consumer scaling, and operational limits.</description></item><item><title>Kubernetes Backup and Disaster Recovery: Velero and etcd</title><link>https://blog.nghia-pham.com/blog/kubernetes-backup-disaster-recovery-velero-etcd/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-backup-disaster-recovery-velero-etcd/</guid><description>Design a practical backup and disaster recovery strategy for Kubernetes with etcd snapshots, Velero, restore drills, and RTO/RPO planning.</description></item><item><title>[12/24] H is for Helm: Package Management for Kubernetes</title><link>https://blog.nghia-pham.com/blog/h-is-for-helm-package-management-kubernetes/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/h-is-for-helm-package-management-kubernetes/</guid><description>The eleventh post in our Kubernetes A-to-Z series covering Helm charts, repositories, templating, values, and application lifecycle management.</description></item><item><title>Kubernetes Multi-Tenancy: Namespace, RBAC, and Quota Design</title><link>https://blog.nghia-pham.com/blog/kubernetes-multi-tenancy-namespace-rbac-quota/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-multi-tenancy-namespace-rbac-quota/</guid><description>Design a practical multi-tenant Kubernetes model with namespace boundaries, RBAC, network isolation, quotas, and operational guardrails.</description></item><item><title>Kubernetes Cost Optimization in Production</title><link>https://blog.nghia-pham.com/blog/kubernetes-cost-optimization-production/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-cost-optimization-production/</guid><description>A practical guide to reducing Kubernetes infrastructure spend with right-sizing, autoscaling, scheduling strategy, and workload-level optimization.</description></item><item><title>Kubernetes Security Hardening Checklist for Production</title><link>https://blog.nghia-pham.com/blog/kubernetes-security-hardening-checklist-production/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-security-hardening-checklist-production/</guid><description>A practical security hardening checklist for production Kubernetes clusters, covering identity, network, workloads, supply chain, and runtime controls.</description></item><item><title>Kubernetes A-to-Z Series: Complete Learning Path</title><link>https://blog.nghia-pham.com/blog/kubernetes-series-plan/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-series-plan/</guid><description>A comprehensive 24-part blog series covering Kubernetes from beginner to advanced level, with practical examples and real-world scenarios.</description></item><item><title>Kubernetes vs Docker Swarm: Complete Comparison Guide with Command Cheatsheets</title><link>https://blog.nghia-pham.com/blog/kubernetes-vs-docker-swarm-complete-guide/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kubernetes-vs-docker-swarm-complete-guide/</guid><description>A comprehensive comparison of Kubernetes and Docker Swarm container orchestration platforms, including detailed command cheatsheets, architecture differences, and practical examples.</description></item><item><title>[10/24] M is for ConfigMaps and Secrets: Managing Configuration</title><link>https://blog.nghia-pham.com/blog/m-is-for-configmaps-secrets-managing-configuration/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/m-is-for-configmaps-secrets-managing-configuration/</guid><description>The ninth post in our Kubernetes A-to-Z series covering ConfigMaps, Secrets, configuration management patterns, and environment-specific deployments.</description></item><item><title>[15/24] L is for Logging and Monitoring: Observability in Kubernetes</title><link>https://blog.nghia-pham.com/blog/l-is-for-logging-monitoring-observability/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/l-is-for-logging-monitoring-observability/</guid><description>The thirteenth post in our Kubernetes A-to-Z series covering logging architectures, Prometheus metrics, distributed tracing, and observability best practices.</description></item><item><title>[13/24] O is for Operators: Extending Kubernetes Functionality</title><link>https://blog.nghia-pham.com/blog/o-is-for-operators-extending-kubernetes/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/o-is-for-operators-extending-kubernetes/</guid><description>The twelfth post in our Kubernetes A-to-Z series covering Operators, Custom Resource Definitions (CRDs), controller patterns, and extending Kubernetes.</description></item><item><title>[8/24] N is for Namespaces: Organizing Your Cluster</title><link>https://blog.nghia-pham.com/blog/n-is-for-namespaces-organizing-cluster/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/n-is-for-namespaces-organizing-cluster/</guid><description>The seventh post in our Kubernetes A-to-Z series covering Namespaces, multi-tenancy, resource quotas, and cluster organization strategies.</description></item><item><title>[3/24] P is for Pods: The Basic Building Blocks of Kubernetes</title><link>https://blog.nghia-pham.com/blog/p-is-for-pods-basic-building-blocks/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/p-is-for-pods-basic-building-blocks/</guid><description>The third post in our Kubernetes A-to-Z series covering pods, their lifecycle, networking, storage, and multi-container patterns.</description></item><item><title>Kubernetes Observability Stack: Prometheus, OpenTelemetry, and Loki</title><link>https://blog.nghia-pham.com/blog/observability-stack-kubernetes-prometheus-otel-loki/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/observability-stack-kubernetes-prometheus-otel-loki/</guid><description>Build a practical Kubernetes observability stack using metrics, logs, and traces with Prometheus, OpenTelemetry, Loki, and actionable SLO-driven alerting.</description></item><item><title>PostgreSQL Index Size Deep Dive: Why Indexes Grow Fast</title><link>https://blog.nghia-pham.com/blog/postgresql-index-deep-dive-why-indexes-are-larger-than-you-think/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/postgresql-index-deep-dive-why-indexes-are-larger-than-you-think/</guid><description>Understand why PostgreSQL indexes can grow quickly in production and how to control index bloat with better schema design, maintenance, and query patterns.</description></item><item><title>[17/24] Q is for Quality Assurance: Testing in Kubernetes</title><link>https://blog.nghia-pham.com/blog/q-is-for-quality-assurance-testing-kubernetes/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/q-is-for-quality-assurance-testing-kubernetes/</guid><description>The fifteenth post in our Kubernetes A-to-Z series covering testing strategies, chaos engineering, CI/CD integration, and quality assurance best practices.</description></item><item><title>[6/24] R is for ReplicaSets: Ensuring High Availability</title><link>https://blog.nghia-pham.com/blog/r-is-for-replicasets-high-availability/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/r-is-for-replicasets-high-availability/</guid><description>The sixth post in our Kubernetes A-to-Z series covering ReplicaSets, scaling strategies, pod disruption budgets, and high availability patterns.</description></item><item><title>Stateful Workloads on Kubernetes: PostgreSQL and Kafka Operators</title><link>https://blog.nghia-pham.com/blog/stateful-workloads-kubernetes-postgresql-kafka-operators/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/stateful-workloads-kubernetes-postgresql-kafka-operators/</guid><description>Run stateful workloads safely on Kubernetes with operator-based patterns for PostgreSQL and Kafka, including storage, scaling, backup, and failure recovery.</description></item><item><title>Service Mesh Deep Dive: Istio vs Linkerd vs Consul Connect</title><link>https://blog.nghia-pham.com/blog/service-mesh-comparison-istio-linkerd-consul/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/service-mesh-comparison-istio-linkerd-consul/</guid><description>A comprehensive comparison of service mesh platforms including architecture, features, performance benchmarks, and practical implementation guides for Istio, Linkerd, and Consul Connect.</description></item><item><title>[5/24] S is for Services: Networking and Service Discovery</title><link>https://blog.nghia-pham.com/blog/s-is-for-services-networking-service-discovery/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/s-is-for-services-networking-service-discovery/</guid><description>The fifth post in our Kubernetes A-to-Z series covering Services, networking patterns, service discovery, and load balancing in Kubernetes.</description></item><item><title>[16/24] T is for Troubleshooting: Common Issues and Solutions</title><link>https://blog.nghia-pham.com/blog/t-is-for-troubleshooting-common-issues-solutions/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/t-is-for-troubleshooting-common-issues-solutions/</guid><description>The fourteenth post in our Kubernetes A-to-Z series covering debugging techniques, common issues, diagnostic commands, and systematic troubleshooting approaches.</description></item><item><title>[18/24] U is for Upgrades: Managing Cluster Lifecycle</title><link>https://blog.nghia-pham.com/blog/u-is-for-upgrades-cluster-lifecycle/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/u-is-for-upgrades-cluster-lifecycle/</guid><description>Master the art of Kubernetes upgrades. Learn about version skew policies, node draining, and strategies for zero-downtime cluster maintenance.</description></item><item><title>[9/24] V is for Volumes: Persistent Storage in Kubernetes</title><link>https://blog.nghia-pham.com/blog/v-is-for-volumes-persistent-storage-kubernetes/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/v-is-for-volumes-persistent-storage-kubernetes/</guid><description>The eighth post in our Kubernetes A-to-Z series covering Volumes, PersistentVolumes, PersistentVolumeClaims, storage classes, and stateful application patterns.</description></item><item><title>[14/24] Y is for YAML: Mastering the Language of Kubernetes</title><link>https://blog.nghia-pham.com/blog/y-is-for-yaml-kubernetes-language/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/y-is-for-yaml-kubernetes-language/</guid><description>Love it or hate it, YAML is the language of Kubernetes. Learn syntax tips, common pitfalls, and tools to validate your manifests.</description></item><item><title>[21/24] Z is for Zero-Downtime Deployments: Advanced Deployment Strategies</title><link>https://blog.nghia-pham.com/blog/z-is-for-zero-downtime-deployments-advanced-strategies/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/z-is-for-zero-downtime-deployments-advanced-strategies/</guid><description>The final post in our Kubernetes A-to-Z series covering advanced deployment strategies, GitOps, progressive delivery, canary deployments, and production-ready patterns.</description></item><item><title>Kibana cho Developer: Filter log, Saved Search, Dashboard và REST API</title><link>https://blog.nghia-pham.com/blog/kibana-cho-developer-filter-log-saved-search-dashboard-rest-api/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kibana-cho-developer-filter-log-saved-search-dashboard-rest-api/</guid><description>Hướng dẫn toàn diện sử dụng Kibana cho lập trình viên backend: filter error log bằng KQL, tránh pitfall với ES|QL, tạo Saved Search và Dashboard qua GUI, tương tác Kibana qua REST API và quản lý API key an toàn.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Kibana từ A đến Z: Series Plan</title><link>https://blog.nghia-pham.com/blog/kibana-series-plan/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kibana-series-plan/</guid><description>Roadmap series 28 bài học Kibana từ cơ bản đến production — cover Discover, KQL/ES|QL, Lens, Dashboard, Alerts, RBAC, ILM, automation và troubleshooting cho developer backend.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Canvas: dựng report branded cho stakeholder</title><link>https://blog.nghia-pham.com/blog/canvas-dung-report-co-branded-cho-stakeholder/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/canvas-dung-report-co-branded-cho-stakeholder/</guid><description>Dùng Canvas của Kibana để dựng infographic pixel-precise có brand công ty: khác Dashboard thế nào, expression language pipeline, data source ESSQL, dynamic image/color theo value, và export PDF multi-page giao CEO/CFO — dành cho developer backend và platform team.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Discover nâng cao: Runtime fields, filter phức tạp, highlighting</title><link>https://blog.nghia-pham.com/blog/discover-nang-cao-runtime-fields-filter-phuc-tap-highlighting/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/discover-nang-cao-runtime-fields-filter-phuc-tap-highlighting/</guid><description>Nâng Discover từ mức cơ bản lên power-user: tạo Runtime field không cần reindex, filter nested object và regex, bật highlighting để scan log nhanh, phân biệt Saved Query với Saved Search, inspect request để debug query và tối ưu performance.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>KQL và ES|QL: So sánh hai ngôn ngữ query của Kibana</title><link>https://blog.nghia-pham.com/blog/kql-va-esql-so-sanh-hai-ngon-ngu-query-kibana/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/kql-va-esql-so-sanh-hai-ngon-ngu-query-kibana/</guid><description>Phân biệt KQL và ES|QL trong Kibana 8.x: triết lý khác nhau, cú pháp đối chiếu, pitfall phổ biến, và quy tắc tay chọn ngôn ngữ nào cho filter, aggregation, alert và dashboard — dành cho developer backend và DevOps.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Lens: từ drag-drop tới công thức phức tạp</title><link>https://blog.nghia-pham.com/blog/lens-tu-drag-drop-toi-cong-thuc-phuc-tap/</link><guid isPermaLink="true">https://blog.nghia-pham.com/blog/lens-tu-drag-drop-toi-cong-thuc-phuc-tap/</guid><description>Dựng visualization trong Kibana 8.x bằng Lens: drag-drop chart cơ bản, Formula mode với function và time shift, annotation layer cho deploy marker, reference line cho SLO, pitfall về cardinality và time interval — dành cho developer backend muốn tự làm dashboard production-grade.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item></channel></rss>