- vừa được xem lúc

NGINX Service Mesh

0 0 15

Người đăng: Nguyen Quoc Phong

Theo Viblo Asia

Mở đầu

Ngày nay cùng với sự phát triển không ngừng của phần mềm, sự ra đời của Cloud, SASS, BigData việc phát triển ứng dụng dựa trên kiến trúc micorservice ngày càng được quan tâm nhiều hơn. Để quản lý và phát triển các microservice được dễ dàng hơn, một ứng dụng không thể thiếu đó là Kubernetes và NGINX Service Mesh.

What NGINX Service Mesh

NGINX Service Mesh (NSM) là một tập hợp đầy đủ các service để quản lý luồng xử lý, giao tiếp của các micorservice trên môi trường Kubernetes và được cung cấp bới Nginx Plus. NSM hiện đang cung cấp miễn phí và download tại đây.

Benefit NSM

Việc áp dụng microservices vào dự án đi kèm với những thách thức khi việc triển khai và mở rộng trở nên phức tạp hơn. Giao tiếp giữa các dịch vụ rất phức tạp, việc gỡ lỗi cũng khó hơn và nhiều dịch vụ hơn đồng nghĩa với việc quản lý nhiều tài nguyên hơn.

NSM giải quyết tất cả các vấn đề trên bằng cách giải quyết các vấn đề sau:

  • Security - Bảo mật luôn là vấn đề quan trọng nhất. Việc dữ liệu bị mất mát có thể làm cho các tổ chụcw thiệt hại hàng triệu đô doanh thu mỗi năm cùng với đó danh tiếng và lượng khách hàng. NSM đảm bảo tất các dữ liệu đều được mã hóa mTLS (1 dạng mã hóa với độ bảo mật rất cao) để đảm bảo dữ liệu nhạy cảm không bị tin tặc đánh cắp. "Access control" cho phép bạn đặt ra các policies cho các service được phép giao tiếp với nhau.
  • Traffic management - Khi bạn deploy một tính năng mới, ban đầu có thể bạn sẽ muốn giới hạn dung lượng mà hệ thống của mình nhận được. NSM cung cấp tính năng cho bạn có thể config limit traffic và có thể tăng dần traffic theo thời gian. Bên cạnh đó NSM còn cung cấp chức năng giới hạn tốc độ, ngắt kết nối từng đương truyền
  • Visualization - Thử hình dung khi bạn phải quản lý hàng nghìn service đó thật là một cơn ác mộng để quản lý và debug. NSM cung cấp 1 bảng hiển thị Grafana có đầy đủ dữ liệu mà bạn mong muốn (cả tổng quan lẫn chi tiết đến từng service)
  • Hybrid deployments - Nếu các service của hệ thống bạn không phải chỉ có trên Kubernetes mà còn ở bên ngoài. NSM cung cấp 1 tính năng là NGINX Ingress Controller để đảm bảo các mesh service (trong Kubernetes) có thể giao tiếp với các service bên ngoài và ngược lại

NSM Architecture

Kiến trúc của hệ thống NSM sẽ được mô tả như sau

Về cơ bản NSM sẽ gồm các thành phần cơ bản sau:

  • Grafana – Trực quan hóa Prometheus metrics - bảng điều khiển NSM
  • Kubernetes Ingress controller - Quản lý traffic vào và ra
  • PIRE - Quản lý các quyền và đảm bảo quyền cho mesh
  • NATS – Nơi quản lý các message của hệ thống mesh
  • Open Tracing – Hệ thống ghi log phân tán (Zipkin and Jaeger)
  • Prometheus – Thu thập và lưu trữ các metrics từ Nginx plus như số lượng request, kết nối v..v...

Features and Components

  • Mutual TLS (mTLS) authentication
  • Load balancing
  • High availability
  • Limiting
  • Ngắt kết nối
  • Blue‑green and canary deployments (B/G deploycanary deploy - deploy từng phần

Getting Started with NSM

  • Truy câp hệ thống có cài mội trường Kubernetes (Amazon Elastic Container Service for Kubernetes (EKS), the Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSpher)
  • Cài đặt kubectl commands trên máy đã cái NSM
  • Truy cập vào hệ thống NSM, các pacakge bao gốm NSM image phải được đẩy vào các private cointainer mà Kubernetes có thể truy cập
  • Deploy NSM
$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ; \ ./nginx-meshctl deploy \ --nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}" \ --nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}" \ --nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}" \ --nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server... Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.
  • Verify xem các thành phần của NSM đã được chạy chưa
$ kubectl get pods –n nginx-mesh
NAME READY STATUS RESTARTS AGE
grafana-6cc6958cd9-dccj6 1/1 Running 0 2d19h
mesh-api-6b95576c46-8npkb 1/1 Running 0 2d19h
nats-server-6d5c57f894-225qn 1/1 Running 0 2d19h
prometheus-server-65c95b788b-zkt95 1/1 Running 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1/1 Running 0 2d19h
spire-agent-5cf87 1/1 Running 0 2d19h
spire-agent-rr2tt 1/1 Running 0 2d19h
spire-agent-vwjbv 1/1 Running 0 2d19h
spire-server-0 2/2 Running 0 2d19h
zipkin-6f7cbf5467-ns6wc 1/1 Running 0 2d19h
  • Ví dụ chúng ta đã chạy ứng dụng test, để kiểm tra xem ứng dụng test đang chạy trên cointaner nào
$ kubectl apply –f test.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
test-674f75ff4d-gxjf2 2/2 Running 0 5h23m
  • Ta cũng có thể monitor ứng dụng test bằng cách gõ command
kubectl port-forward test-674f75ff4d-gxjf2 8080:8886

Summary

Bên cạnh NGINX Service Mesh còn nhiều công cụ khác để quản lý, theo dõi và debug các microservices nhưng đa số chúng đều mất phí. NSM hiện đang miễn phí download, mình nghĩ các bạn nên thử để cho công việc được dễ dàng và thuận tiện hơn

Bình luận

Bài viết tương tự

- vừa được xem lúc

NGINX là gì? NGINX server hoạt động như thế nào?

Lời nói đầu. Mình thường thấy NGINX dùng trong các dự án, và dự án hiện tại của mình cũng đang dùng.

0 0 50

- vừa được xem lúc

Các cấu hình sai Nginx phổ biến khiến web server của bạn gặp nguy hiểm (Part 1)

Intro. Nginx được sử dụng làm web server, reverse proxy mạnh mẽ, nginx được cài đặt cho khoảng 1/3 số web site trên thế giới này.

0 0 74

- vừa được xem lúc

Giới thiệu về NGINX và core concept

1. NGINX là gì. 2. Tiểu sử.

0 0 34

- vừa được xem lúc

Cấu hình Nginx Server như thế nào?

Nginx là một Web Server phổ biến, quen thuộc đối với những Web Developer. Nginx hoạt động mạnh mẽ với hiệu suất cao, khả năng xử lí nhiều request đồng thời một lúc mà lại tốn ít tài nguyên.

0 0 141

- vừa được xem lúc

Dynamic Routing trong NGINX

Tiếp nối bài viết trước, Cấu hình Nginx Server như thế nào?. Trong bài viết này, mình sẽ giới thiệu về Dynamic Routing trong NGINX.

0 0 42

- vừa được xem lúc

Cách cấu hình NGINX thành Reverse Proxy

Tiếp nối bài viết trước Dynamic Routing trong NGINX, trong bài viết này mình sẽ hướng dẫn các bạn cách cấu hình NGINX thành Reverse Proxy. Một số ưu điểm của Reverse Proxy là:.

0 0 140