- Published on
Istio - Giới thiệu các mô hình triển khai hệ thống service mesh
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
🚀 Các mô hình triển khai Istio
Đây là hướng dẫn cực kỳ chi tiết dành cho người mới sử dụng Istio, giúp bạn hiểu và lựa chọn mô hình triển khai phù hợp với hệ thống Kubernetes của mình.
📑 Mục Lục
- Câu hỏi cần trả lời khi triển khai
- Mô hình Cluster
- Mô hình Network
- Mô hình Control Plane
- Mô hình Mesh
- Mô hình Trust & Identity
- Mô hình Tenancy
- Tóm tắt
🧠 Câu hỏi cần trả lời khi triển khai
Khi triển khai Istio production, bạn cần xác định:
- Một hay nhiều cluster?
- Một hay nhiều mạng?
- Một hay nhiều control plane?
- Một hay nhiều mesh?
Tùy theo yêu cầu HA (High Availability), bảo mật, cách ly team, mô hình triển khai sẽ khác nhau.
🏗️ Mô hình Cluster
✅ Single Cluster
- Đơn giản nhất
- Dễ quản lý
- Không có khả năng failover
✅ Multi-Cluster
- Hỗ trợ:
- Failover nếu cluster bị lỗi
- Routing theo vị trí địa lý
- Canary từng cụm
- Phức tạp hơn, cần cấu hình DNS & ServiceEntry
👉 Nên dùng nếu bạn triển khai trên nhiều vùng hoặc cần độ sẵn sàng cao.
🌐 Mô hình Network
✅ Single Network
- Tất cả workload đều có thể reach nhau trực tiếp
- Đơn giản hóa DNS & routing
✅ Multi-Network
- Dùng Gateway để kết nối giữa mạng
- Hỗ trợ:
- IP overlap
- Tách mạng giữa zone
- Routing có TLS passthrough
⛑️ Yêu cầu proxy ở hai đầu → workload không dùng Envoy sẽ không tham gia mTLS.
🧠 Mô hình Control Plane
Primary Cluster: có Istiod
Remote Cluster: dùng control từ Primary
🌀 Các mô hình phổ biến:
Mô hình | Mô tả |
---|---|
Một control plane | Dễ quản lý, rủi ro nếu nó die |
Một control plane dùng chung | HA hơn, phức tạp về kết nối |
Mỗi cluster 1 control plane | Cực kỳ HA, tốn tài nguyên |
Control plane ngoài cluster | Quản lý tập trung, tách biệt với workload |
👉 Dùng remote secret
để các control plane có thể thấy endpoint của nhau.
🔗 Mô hình Mesh
✅ Single Mesh
- Dễ quản lý
- Dùng namespace để phân tách team
✅ Multi Mesh (Federation)
- Phân tách tổ chức/team mạnh mẽ
- Có thể có trùng tên service/namespace
- Cần chia sẻ trust bundle nếu không chung CA
👉 Cấu hình mesh ID khác nhau để tránh xung đột DNS.
🔐 Mô hình Trust & Identity
✅ CA và chứng chỉ
- Mỗi workload có một identity riêng (service account)
- Istio CA phát hành chứng chỉ (X.509)
- Trust Bundle = Tập public key từ các CA
✅ Trust giữa các mesh
- Trao đổi trust bundle thủ công hoặc dùng SPIFFE Federation
👥 Mô hình Tenancy (đa người dùng)
🧱 Namespace tenancy
- Mỗi team dùng 1 namespace
- Có thể giới hạn truy cập qua AuthorizationPolicy
☁️ Cluster tenancy
- Mỗi team có cluster riêng
- Có thể share control plane hoặc riêng biệt
🌐 Mesh tenancy
- Mỗi team = 1 mesh riêng
- Cách ly mạnh nhất
- Dễ bị trùng tên service
📋 Tóm tắt
Tiêu chí | Đơn giản nhất | Phù hợp HA | Phù hợp đa team |
---|---|---|---|
Cluster | Single cluster | Multi cluster | Cluster riêng |
Network | Single network | Multi network | Multi network |
Control Plane | 1 control plane | Nhiều plane | Riêng mỗi cluster |
Mesh | Single mesh | Single mesh | Multi mesh |
Tenancy | Namespace | Namespace | Mesh/Cluster |
💡 Mỗi mô hình có ưu điểm riêng, hãy chọn theo nhu cầu thực tế hệ thống bạn!