Service mesh Istio – nền tảng mở để kết nối, giám sát và an toàn trên K8S

Server mesh là gì?

Service mesh được dùng để mô tả hệ thống mạng lưới các microservices tạo nên các ứng dụng và sự tương tác giữa chúng.

Một khi service mesh phát triển về kích thước và độ phức tạp, nó có thể trở nên rất khó để hiểu và quản lý. Do đó, yêu cầu của nó có thể bao gồm việc phát hiện, cân bằng tải (load balacing), khôi phục lỗi (failure recovery), metrics và theo dõi.

Service mesh cũng thường có các yêu cầu hoạt động phức tạp hơn, như thử nghiệm A/B, phát hành ứng dụng với công nghệ canary, rating limiting, kiểm soát truy cập (access control, và xác thực đầu cuối).

Istio là gì?

  • Istio là service mesh độc lập mã nguồn mở cung cấp các nguyên tắc cơ bản mà bạn cần để chạy thành công một kiến trúc microservice phân tán. Ngày này, khi các công ty, tổ chức ngày càng áp dụng nền tảng đám mây thì các nhà phát triển phải kiến trúc lại theo hướng tính di động bằng cách sử dụng các microservice, trong khi đội ngũ vận hành phải quản lý các triển khai phân tán trải rộng trên multi-cloud hoặc hybird.
  • Istio giảm sự phức tạp trong việc quản lý các triển khai dịch vụ microservice bằng cách cung cấp một cách thống nhất để bảo mật, kết nối và giám sát các dịch vụ microservices lại với nhau.
  • Nó là một service mesh mã nguồn mở hoàn toàn, trong suốt lên các ứng dụng phân tán hiện có. Nó bao gồm các API cho phép nó tích hợp vào bất kỳ nền tảng logging nào. Bộ tính năng đa dạng của Istio cho phép bạn thành công và hiệu quả khi chạy kiến trúc microservice phân tán và cung cấp một cách thống nhất để bảo mật, kết nối và giám sát các microservices.

Tại sao phải sử dụng Istio

  • Istio giúp chúng ta dễ dàng tạo một mạng lưới các dịch vụ được triển khai với cân bằng tải, xác thực giữa các dịch vụ, giám sát,… mà không có bất kỳ thay đổi nào về mã service. Istio được đưa vào hệ thống miroservices bằng cách triển khai một proxy sidecar đặc biệt trong môi trường để ngăn chặn tất cả các giao tiếp mạng giữa microservices, sau đó cấu hình và quản lý Istio bằng chức năng điều khiển của nó, bao gồm:
    • Cân bằng tải tự động cho lưu lượng HTTP, gRPC, WebSocket và TCP.
    • Kiểm soát chặt chẽ hành vi traffic với các quy tắc định tuyến, thử lại, chiệu lỗi.
    • Lớp policy có thể gắng và API cấu hình hỗ trợ các điều khiển truy cập, giới hạn tốc độ và hạn ngạch.
    • Số liệu, nhật ký và dấu vết tự động cho tất cả lưu lượng truy cập trong một cụm, bao gồm cả việc in/out với cụm
    • Bảo mật giao tiếp giữ các dịch vụ an toàn trong một cụm có xác thực và ủy quyền dựa trên nhận dạng
  • Istio được thiết kế cho khả năng mở rộng và đáp ứng nhu cầu triển khai đa dạng.

Các chức năng chính của istio

  • Traffic managerment: quản lý lưu thông dữ liệu giữa các service
  • Security: giao tiếp giữa các dịch vụ được mã hóa và quản lý xác thực, ủy quyền và mã hóa giao tiếp dịch vụ ở quy mô lớn.
  • Observability: theo dõi và ghi nhật ký, cung cấp thông tin chi tiết sâu về việc triển khai dịch vụ của bạn.
  • Platform support: có thể chạy trên nhiều môi trường khác nhau K8S, Mesos, on-premiese,…
  • Integration and customization.

Kiến trúc của Istio:

Envoy

Istio sử dụng phiên bản mở rộng của proxy Envoy. Envoy là một proxy hiệu suất cao được phát triển trên C ++ để làm trung gian cho tất cả các dịch vụ trong và ngoài đối với tất cả các dịch vụ trong mạng lưới dịch vụ. Istio tận dụng nhiều tính năng tích hợp của Envoy:

  • Dynamic service discovery
  • Load balancing
  • TLS termination
  • HTTP/2 and gRPC proxies
  • Circuit breakers
  • Health checks
  • Staged rollouts with %-based traffic split
  • Fault injection

Mixer

Mixer là một thành phần độc lập với nền tảng. Mixer thực thi kiểm soát truy cập và các chính sách sử dụng trên hệ thống dịch vụ và thu thập dữ liệu từ xa từ proxy Envoy và các dịch vụ khác. Proxy trích xuất các thuộc tính mức yêu cầu và gửi chúng đến Mixer để đánh giá.

Pilot

Pilot cung cấp dịch vụ khám phá cho các Envoy sidecar, khả năng quản lý lưu lượng cho việc định tuyến thông minh (ví dụ, thử nghiệm A / B, triển khai canary, vv), và khả năng phục hồi (timeouts, retries, circuit breakers, vv).

Pilot chuyển đổi các quy tắc định tuyến mức cao kiểm soát hành vi traffic thành các cấu hình cụ thể của Envoy và truyền chúng sang các sidecar khi chạy. Pilot tóm tắt các cơ chế khám phá dịch vụ cụ thể theo nền tảng và tổng hợp chúng thành một định dạng chuẩn mà bất kỳ sidecar nào phù hợp với Envoy data plane APIs đều có thể tiếp nhận. Khớp nối lỏng lẻo này cho phép Istio chạy trên nhiều môi trường như Kubernetes, Consul hoặc Nomad, đồng thời duy trì cùng một giao diện điều hành cho quản lý lưu lượng.

Citadel

Citadel cung cấp dịch vụ xác thực dịch vụ và người dùng cuối mạnh mẽ với tính năng quản lý thông tin nhận dạng và chứng chỉ tích hợp. Bạn có thể sử dụng Citadel để nâng cấp lưu lượng không mã hóa trong lưới dịch vụ. Sử dụng Citadel, các toán tử có thể thực thi các chính sách dựa trên nhận dạng dịch vụ thay vì trên các điều khiển mạng. Bắt đầu từ bản phát hành 0.5, bạn có thể sử dụng tính năng ủy quyền của Istio để kiểm soát những người có thể truy cập dịch vụ của bạn.

Tham khảo:

Leave a Reply

Your email address will not be published. Required fields are marked *