Quản lý lưu lượng Istio: Chuyển đổi lưu lượng - 789 crore club apk

| Mar 4, 2025 | 3 min read

Ngày 25 tháng 12 năm 2020 - Máy tính

Trong quá trình triển khai liên tục hàng ngày, chúng ta thường sử dụng phương pháp nâng cấp cuộn (rolling upgrade) để cập nhật microservice. Nếu bạn đang sử dụng nền tảng dàn xếp container Kubernetes để thực hiện nâng cấp cuộn cho các microservice, thông thường điều này sẽ được thực hiện bằng cách kiểm soát số lượng các phiên bản (instances). Chúng ta sẽ đưa phiên bản cũ ra khỏi hoạt động, khởi động phiên bản mới và sau khi kiểm tra sức khỏe của các phiên bản mới thành công, toàn bộ lưu lượng sẽ được chuyển đến phiên bản mới.

Tuy nhiên, với Istio, bạn không cần phải kiểm soát số lượng các instance mà có thể kiểm soát chi tiết hơn về tỷ lệ phần trăm lưu lượng đến từng phiên bản khác nhau, từ đó có thể chuyển dần lưu lượng theo một tỷ lệ nhất định sang phiên bản mới để thực hiện việc nâng cấp.

Dưới đây, chúng ta sẽ xem xét cách sử dụng chức năng chuyển đổi lưu lượng của Istio thông qua ví dụ Bookinfo. Giả sử rằng dịch vụ reviews có tải game bắn cá đổi thưởng tiền mặt ba phiên bản, và chúng ta muốn nâng cấp từ phiên bản v1 lên v3. (Về cài đặt Istio và triển khai ví dụ Bookinfo, bạn có thể tham khảo bài viết trước “Cài đặt và Sử dụng Istio”.)

Trước tiên, hãy cấu hình quy tắc đích mặc định (default Destination Rule).

$ cd /usr/local/istio-1.8.1
$ kubectl apply -n istio-demo -f samples/bookinfo/networking/destination-rule-all.yaml

1. Chuyển tất cả lưu lượng đến phiên bản v1

Hãy cấu hình Virtual Service cho reviews để chỉ định rằng tất cả lưu lượng truy cập vào reviews sẽ được chuyển đến phiên bản v1.

$ cd /usr/local/istio-1.8.1
$ kubectl apply -n istio-demo -f samples/bookinfo/networking/virtual-service-all-v1.yaml

Kiểm tra cấu hình:

$ kubectl get virtualservice/reviews -n istio-demo -o yaml
apiVersion:networking.istio.io/v1beta1kind:VirtualServicemetadata:name:reviews---spec:hosts:- reviewshttp:- route:- destination:host:reviewssubset:v1

Khi truy cập vào productpage và làm mới nhiều lần, bạn sẽ nhận thấy phần Review không hiển thị đánh giá sao năm ngôi, điều này chứng tỏ rằng cấu hình đã có hiệu lực.

2. Tăng dần tỷ lệ lưu lượng để nâng cấp reviews lên phiên bản v3

Tiếp theo, chúng ta sẽ cấu hình Virtual Service cho reviews để chuyển 50% lưu lượng đến phiên bản v3.

$ cd /usr/local/istio-1.8.1
$ kubectl apply -n istio-demo -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml

Kiểm tra cấu hình:

$ kubectl get virtualservice/reviews -n istio-demo -o yaml
apiVersion:networking.istio.io/v1beta1kind:VirtualServicemetadata:name:reviews---spec:hosts:- reviewshttp:- route:- destination:host:reviewssubset:v1weight:50- destination:host:reviewssubset:v3weight:50

Lúc này, khi làm mới nhiều lần trang productpage, bạn sẽ thấy đánh giá sao đỏ xuất hiện lúc có, lúc không trong phần Review.

Tiếp theo, hãy tăng tỷ lệ này lên 100% để chuyển tất cả lưu lượng đến phiên bản v3.

$ cd /usr/local/istio-1.8.1
$ kubectl apply -n istio-demo -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml

Kiểm Lô Đề Nohu76 tra cấu hình:

$ kubectl get virtualservice/reviews -n istio-demo -o yaml
apiVersion:networking.istio.io/v1beta1kind:VirtualServicemetadata:name:reviews---spec:hosts:- reviewshttp:- route:- destination:host:reviewssubset:v3

Bây giờ, bất kể bạn làm mới bao nhiêu lần, phần Review trên trang productpage luôn hiển thị đánh giá sao đỏ, điều này chứng tỏ rằng toàn bộ lưu lượng đã được chuyển hoàn toàn sang phiên bản v3.

Sau khi kết thúc thử nghiệm, hãy thực hiện lệnh dưới đây để xóa cấu hình định tuyến thử nghiệm.

$ cd /usr/local/istio-1.8.1
$ kubectl delete -n istio-demo -f samples/bookinfo/networking/virtual-service-all-v1.yaml

Như vậy, chúng ta đã giới thiệu về tình huống ứng dụng của việc chuyển đổi lưu lượng Istio, và sử dụng ví dụ Bookinfo để thử nghiệm dịch vụ reviews.

[1] Istio Traffic Shifting
[2] Istio Traffic Management

Mạng dịch vụ #Istio