Istio Service Mesh Fundamentals
Istio là một service mesh mã nguồn mở được tích hợp liền mạch với các ứng dụng phân tán hiện có. Các tính năng mạnh mẽ của nó cung cấp một cách thức chuẩn hóa và hiệu quả hơn để bảo mật, kết nối và giám sát các dịch vụ.
Được thiết kế để có khả năng mở rộng, Istio có thể đáp ứng nhiều nhu cầu triển khai khác nhau. Control plane của Istio chạy trên Kubernetes, cho phép bạn thêm các ứng dụng được triển khai trong cụm đó vào mesh của mình, mở rộng mesh sang các cụm khác hoặc thậm chí kết nối máy ảo (VM) hoặc các điểm cuối khác chạy bên ngoài Kubernetes.
Dưới đây là một số điểm chính về Istio Service Mesh:
Mã nguồn mở: Istio hoàn toàn miễn phí và có thể được sử dụng cho bất kỳ mục đích nào.
Dễ triển khai: Istio có thể được triển khai dễ dàng trên Kubernetes mà không cần thay đổi mã ứng dụng hiện có.
Mạnh mẽ: Istio cung cấp nhiều tính năng mạnh mẽ để bảo mật, kết nối và giám sát các dịch vụ, bao gồm:
Bảo mật: Istio cung cấp xác thực, ủy quyền và mã hóa cho các dịch vụ.
Kết nối: Istio cung cấp cân bằng tải, định tuyến lưu lượng truy cập và khám phá dịch vụ.
Giám sát: Istio cung cấp nhật ký, truy vết và thu thập số liệu cho các dịch vụ.
Có thể mở rộng: Istio có thể được mở rộng để đáp ứng nhiều nhu cầu triển khai khác nhau.
Tương thích: Istio tương thích với nhiều nền tảng và công nghệ khác nhau, bao gồm Kubernetes, Docker, VMs và đám mây.
Ưu điểm:
Kiểm soát truy cập chặt chẽ: Istio đảm bảo chỉ những người dùng hợp lệ và đã được xác thực mới có thể thực hiện yêu cầu API, ngăn chặn các cuộc tấn công phổ biến như nhồi nhét thông tin đăng nhập (credential stuffing) và giả mạo (phishing).
Bảo mật giao tiếp: Istio đảm bảo lưu lượng truy cập giữa máy khách (client) và máy chủ (server) đáng tin cậy và an toàn cho cả hai bên.
Cân bằng tải tự động: Istio hỗ trợ cân bằng tải tự động cho các giao thức HTTP, gRPC, WebSocket và TCP, giúp phân phối lưu lượng truy cập hiệu quả giữa các dịch vụ.
Kiểm soát chi tiết luồng truy cập: Istio cung cấp khả năng kiểm soát chi tiết hành vi của luồng truy cập thông qua các quy tắc định tuyến phức tạp, tính năng thử lại, chuyển hướng lỗi và tiêm lỗi giả lập. Điều này giúp dễ dàng thiết lập các tác vụ quan trọng như thử nghiệm A/B, triển khai canary và triển khai theo giai đoạn với phân tách lưu lượng truy cập dựa trên tỷ lệ phần trăm.
Nhược điểm :
1. Độ phức tạp của mTLS:
- Việc triển khai mTLS (mutual TLS) phức tạp hơn TLS truyền thống do cả máy khách và máy chủ đều cần cung cấp chứng chỉ để xác thực. Quá trình quản lý chứng chỉ cho nhiều dịch vụ có thể tốn nhiều công sức.
2. Yêu cầu xác thực cho tất cả các yêu cầu:
- Khi bật mTLS, tất cả các yêu cầu đều phải được xác thực, kể cả đối với các tài nguyên không yêu cầu xác thực, chẳng hạn như các tệp tĩnh. Điều này có thể dẫn đến chi phí hiệu suất không cần thiết cho các tương tác đơn giản.
3. Bảo mật chứng chỉ riêng:
- mTLS đảm bảo chỉ những người dùng hợp lệ và đã được xác thực mới có thể thực hiện yêu cầu API. Tuy nhiên, nếu kẻ tấn công có quyền truy cập vào một chứng chỉ riêng, chúng có thể khai thác hệ thống. Do đó, việc quản lý an toàn chứng chỉ riêng tư là điều cần thiết.
Các thành phần chính của Istio Service Mesh:
Istio Service Mesh bao gồm nhiều thành phần làm việc cùng nhau để cung cấp các tính năng bảo mật, kết nối và giám sát cho các dịch vụ microservices. Dưới đây là các thành phần chính:
Data Plane Components:
Envoy Proxy: Được triển khai như một sidecar proxy cùng với mỗi container trong mạng lưới dịch vụ. Envoy xử lý tất cả lưu lượng mạng giữa các dịch vụ và cung cấp các tính năng như load balancing, routing, circuit breaking, và metrics collection.
Mixer: Thu thập dữ liệu telemetry từ Envoy proxy và gửi dữ liệu này đến các hệ thống giám sát bên ngoà
Control Plane Components:
Pilot: Quản lý và phân phối các cấu hình định tuyến và phân phối tải cho các proxy Envoy trong mạng lưới. Nó cũng giữ thông tin về các dịch vụ và phiên bản của chúng.
Citadel: Quản lý bảo mật và xác thực trong mạng lưới dịch vụ bằng cách cung cấp các chứng chỉ và quản lý việc mã hóa mạng giao thông.
Galley: Quản lý cấu hình cho Istio và chịu trách nhiệm đồng bộ hóa cấu hình giữa các thành phần khác nhau của Istio.
Telemetry: Thu thập và lưu trữ dữ liệu giám sát và thống kê từ Envoy proxies để hiển thị các thông tin về hoạt động của mạng lưới dịch vụ.
Add-on Components:
Jaeger: Hệ thống giám sát phân tán, cung cấp giải pháp theo dõi và xem xét sự phân tán của các yêu cầu trong mạng lưới dịch vụ.
Grafana và Prometheus: Cung cấp giải pháp giám sát và thống kê cho mạng lưới dịch vụ, bao gồm các biểu đồ và báo cáo về hiệu suất và sự hoạt động của dịch vụ.
Istioctl: Dòng lệnh để quản lý Istio mesh.
Kiali: Cung cấp giao diện người dùng để quản lý và giám sát Istio mesh.
Jaeger: Cung cấp hệ thống truy vết phân tán cho Istio.
Consul: Cung cấp dịch vụ khám phá dịch vụ cho Istio.