Hi, welcome back với series Istio của mình, khá lâu mình mới viết lại Blog chắc do nghỉ dịch khá là dài đó mà ;)). Lần này mình sẽ giới thiệu với các bạn về cách triển khai Istio với Kubernetes và làm thế nào để traffic người dùng có thể sử dụng ứng dụng mà mình viết ra, nói 1 cách kỹ thuật hơn thì làm thế nào để route traffic user vào application của mình.

  1. Cài đặt

   Cài đặt rất là đơn giản, chỉ cần gõ câu lệnh theo dưới đây:

$ curl -L https://git.io/getLatestIstio | sh -
$ cd istio-$version
$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml
$ kubectl apply -f install/kubernetes/istio-demo.yaml

sẽ có ngay 1 phiên bản mới nhất của Istio ngay trong Kubernetes cluster của mình. Về phần mình sẽ cài Istio bản demo để có thể test toàn bộ tính năng cũng như service cài đặt full option lên Kubernetes cluster.

Bạn có thể view các service hoặc deployment  có trong namespace istio-system:

$ kubectl get svc -n istio-system
$ kubectl get deploy -n istio-system

Làm thế nào để các ứng dụng tương tác với nhau

Architecture Istio

Theo hình trên thì ta thấy có 1 Ingress và Egress, có 2 ứng dụng A,B và 1 controll Plan của Istio.

Mỗi service, Istio đều gắn thêm Envoy Proxy ở trước service đó để có thể control traffic In/Out của chính service đó.

Ingress

Traffic client sẽ vào tới ứng dụng thông qua service gọi là Ingress, nó là envoy proxy đứng giữa và được cấu hình tự động bởi Istiod ở Control Plane.

Ingress Istio có thể biết được nơi nào gọi traffic tới Service A, nó đồng thời health check service và load balancing tới Service thông qua các thông số mà mình cấu hình như: packets, quotes, traffic balancing.

Service A, B

Service gồm container của ứng dụng và 1 container chạy envoy proxy của Isito, nó cũng network namespace cũng như chung worker node Kubernetes.

Cả 2 đều chung IP address và share chung IPtables rules. Envoy proxy control tất cả traffic vào Service và pass tới Service đó.

Envoy proxy sẽ được cấu hình từ Istiod nếu có policy nào được định nghĩa trên nó.

Egress

Mọi traffic đi ra ngoài đều đi qua Egress proxy. Do đó có thể cấu hình limit traffic outpoint hoặc allow endpoint nào đó ngoài cluster.

Telemetry data collection

Mọi traffic đều đi qua envoy proxy, nó có thể collect vào send metrics telemetry data về Prometheus. Và data đó có thể visualize lên Grafana. Do đó bạn có thể quan sát 1 cách tổng thể về traffic đi như thế nào vào Ingress -> Service A -> Service B -> Egress.

Series 2 kết thúc với tiêu đề "Khởi động" - nói về cách cài đặt và sơ lược về traffic đi như thế nào từ ngoài vào Istio chạy trên Kubernetes và tới Service A,B và đi ra ngoài Istio cluster. Phần tới mình sẽ nói rõ thêm cách tạo cấu hình Ingress, Egress và 1 số kinh nghiệm khi chạy Istio trên môi trường Production nhé.