Blog chia sẻ về công nghệ ...
Published on

Istio - Giới thiệu các mô hình triển khai hệ thống service mesh

Authors

🚀 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

  1. Câu hỏi cần trả lời khi triển khai
  2. Mô hình Cluster
  3. Mô hình Network
  4. Mô hình Control Plane
  5. Mô hình Mesh
  6. Mô hình Trust & Identity
  7. Mô hình Tenancy
  8. 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

Istio Single Cluster
  • Đơn giản nhất
  • Dễ quản lý
  • Không có khả năng failover

✅ Multi-Cluster

Istio 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

Istio Single Network
  • Tất cả workload đều có thể reach nhau trực tiếp
  • Đơn giản hóa DNS & routing

✅ Multi-Network

Istio 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

    Istio Primary Cluster
  • Remote Cluster: dùng control từ Primary

    Istio Primary Cluster

🌀 Các mô hình phổ biến:

Mô hìnhMô tả
Một control planeDễ quản lý, rủi ro nếu nó die
Một control plane dùng chungHA hơn, phức tạp về kết nối
Mỗi cluster 1 control planeCực kỳ HA, tốn tài nguyên
Control plane ngoài clusterQuả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

Istio Single Mesh
  • Dễ quản lý
  • Dùng namespace để phân tách team

✅ Multi Mesh (Federation)

Istio 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

Istio Multi Mesh (Federation)
  • 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

Istio Multi Mesh (Federation)
  • 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ấtPhù hợp HAPhù hợp đa team
ClusterSingle clusterMulti clusterCluster riêng
NetworkSingle networkMulti networkMulti network
Control Plane1 control planeNhiều planeRiêng mỗi cluster
MeshSingle meshSingle meshMulti mesh
TenancyNamespaceNamespaceMesh/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!