Blog
Thoughts on engineering, design, and building great products.
Kiến Trúc Kubernetes: Control Plane và Node
Mở nắp capo một cluster Kubernetes: control plane (api-server, etcd, scheduler, controller-manager) là bộ não, node với kubelet và kube-proxy là nơi ứng dụng chạy. Bài này giải thích vai trò từng thành phần ở mức tổng quan — và soi chúng chạy thật trong minikube.
Kubernetes Là Gì và Vì Sao Cần Orchestration
Mở đầu series: từ một container đơn lẻ tới việc chạy hàng chục container trên nhiều máy — vấn đề mà Kubernetes sinh ra để giải. Vì sao 'orchestration' và 'trạng thái mong muốn' là hai ý quan trọng nhất, minikube là gì, và lộ trình cả series.
Một Dự Án Hoàn Chỉnh và Tổng Kết Series
Ghép tất cả: một dự án Ansible hoàn chỉnh triển khai ứng dụng bằng role theo best practices, chạy idempotent trên server thật. Rồi dọn dẹp hạ tầng, tổng kết hành trình từ ad-hoc tới custom module, và gợi ý học tiếp.
Best Practices: Cấu Trúc Dự Án và Thiết Kế
Gom mọi thứ thành chuẩn mực: cấu trúc thư mục dự án, thiết kế role tốt, quy ước đặt tên và FQCN, idempotency, quản lý bí mật, và dùng ansible-lint để tự động bắt lỗi best-practice. Kèm ví dụ lint thật.
Kiểm Thử Role với Molecule
Trước khi đẩy role lên hàng trăm host, hãy kiểm thử nó. Molecule dựng container tạm, áp role, kiểm tra idempotency và verify kết quả — tự động. Bài này: cấu trúc scenario, vòng test create→converge→idempotence→verify→destroy, và lưu ý phiên bản.
Tối Ưu và Chiến Lược Thực Thi
Chạy Ansible nhanh và an toàn trên hàng trăm host: forks và strategy điều khiển song song, serial cho rolling update không gián đoạn, delegate_to/run_once, async cho task dài, fact caching và pipelining để tăng tốc, tags và check mode để kiểm soát.
Mở Rộng Ansible: Filter, Lookup và Callback Plugins
Module mở rộng việc làm trên host; plugin mở rộng bản thân Ansible chạy ở control node. Bài này: filter plugin (biến đổi dữ liệu trong Jinja2), lookup plugin (lấy dữ liệu ngoài), callback plugin (tùy biến output), và sự khác biệt module vs plugin.