Cách triển khai Canary với Istio và Kubernetes
Khi giới thiệu các version mới của dịch vụ, người ta thường mong muốn chuyển phần trăm lưu lượng user được kiểm soát sang version mới hơn của dịch vụ trong quá trình loại bỏ version cũ hơn. Kỹ thuật này được gọi là triển khai canary .Các nhà khai thác cụm Kubernetes có thể sắp xếp các triển khai canary nguyên bản bằng cách sử dụng nhãn và Triển khai . Tuy nhiên, kỹ thuật này có một số hạn chế nhất định: phân phối lưu lượng truy cập và số lượng bản sao được kết hợp với nhau, trong thực tế, tỷ lệ bản sao phải được kiểm soát thủ công để hạn chế lưu lượng truy cập vào bản phát hành canary. Nói cách khác, để hướng 10% lưu lượng truy cập đến việc triển khai canary, bạn cần có một group gồm mười group , với một group nhận được 10% lưu lượng user và chín group còn lại nhận phần còn lại.
Triển khai với lưới dịch vụ Istio có thể giải quyết vấn đề này bằng cách cho phép tách biệt rõ ràng giữa số lượng bản sao và quản lý lưu lượng. Lưới Istio cho phép kiểm soát lưu lượng chi tiết giúp tách việc phân phối và quản lý lưu lượng ra khỏi quy mô bản sao. Thay vì kiểm soát tỷ lệ bản sao theo cách thủ công, bạn có thể xác định tỷ lệ và mục tiêu lưu lượng truy cập và Istio sẽ quản lý phần còn lại.
Trong hướng dẫn này, bạn sẽ tạo triển khai canary bằng Istio và Kubernetes. Bạn sẽ triển khai hai version của ứng dụng Node.js demo và sử dụng tài nguyên Luật đích và Dịch vụ ảo để cấu hình định tuyến lưu lượng cho cả version mới hơn và cũ hơn. Đây sẽ là một điểm khởi đầu tốt để xây dựng các triển khai canary trong tương lai với Istio.
Yêu cầu
- Một cụm Kubernetes 1.10+ được bật kiểm soát truy cập dựa trên role (RBAC). Cài đặt này sẽ sử dụng một cụm DigitalOcean Kubernetes với ba nút, nhưng bạn có thể tự do tạo một cụm bằng phương pháp khác .
Lưu ý: Ta thực sự khuyên bạn nên sử dụng cụm có ít nhất 8GB bộ nhớ khả dụng và 4vCPU cho cài đặt này. Hướng dẫn này sẽ sử dụng ba trong số các server 4GB / 2vCPU tiêu chuẩn của DigitalOcean làm nút.
- Công cụ dòng lệnh
kubectl
được cài đặt trên server phát triển và được cấu hình để kết nối với cụm của bạn. Bạn có thể đọc thêm về cách cài đặtkubectl
trong tài liệu chính thức . - Docker được cài đặt trên server phát triển của bạn. Nếu bạn đang làm việc với Ubuntu 18.04, hãy làm theo Bước 1 và 2 của Cách cài đặt và sử dụng Docker trên Ubuntu 18.04 ; nếu không, hãy làm theo tài liệu chính thức để biết thông tin về cách cài đặt trên các hệ điều hành khác. Đảm bảo thêm user không phải root của bạn vào group
docker
, như được mô tả trong Bước 2 của hướng dẫn được liên kết. - Một account Docker Hub . Để biết tổng quan về cách cài đặt , hãy tham khảo phần giới thiệu về Docker Hub này.
- Istio được cài đặt và cấu hình theo hướng dẫn trong Cách cài đặt và sử dụng Istio Với Kubernetes . Bạn cũng nên bật và cấu hình addon đo từ xa Grafana để truy cập bên ngoài.
Bước 1 - Đóng gói ứng dụng
Trong hướng dẫn tiên quyết, Cách cài đặt và sử dụng Istio Với Kubernetes , bạn đã tạo Docker image node-demo
để chạy ứng dụng thông tin cá mập và đẩy hình ảnh này vào Docker Hub.Trong bước này, bạn sẽ tạo một hình ảnh khác: version mới hơn của ứng dụng mà bạn sẽ sử dụng để triển khai canary của bạn .
Ứng dụng demo ban đầu của ta đã nhấn mạnh một số thông tin hữu ích về cá mập trên trang Shark Info của nó:
Nhưng ta đã quyết định trong version canary mới của bạn để nhấn mạnh một số sự kiện đáng sợ hơn:
Bước đầu tiên của ta sẽ là sao chép mã cho version thứ hai của ứng dụng vào một folder có tên là node_image
. Sử dụng lệnh sau, sao chép kho ứng dụng nodejs-canary- từ tài khoản GitHub Cộng đồng DigitalOcean . Kho lưu trữ này chứa mã cho version thứ hai, đáng sợ hơn của ứng dụng của ta :
- git clone https://github.com/do-community/nodejs-canary-app.git node_image
Điều hướng đến folder node_image
:
- cd node_image
Thư mục này chứa các file và folder cho version mới hơn của ứng dụng thông tin cá mập của ta , cung cấp cho user thông tin về cá mập, giống như ứng dụng root , nhưng nhấn mạnh vào các dữ kiện đáng sợ hơn. Ngoài các file ứng dụng, folder chứa một file Docker với hướng dẫn xây dựng Docker image bằng mã ứng dụng. Để biết thêm thông tin về hướng dẫn trong Dockerfile, hãy xem Bước 3 của Cách tạo ứng dụng Node.js với Docker .
Để kiểm tra xem mã ứng dụng và Dockerfile có hoạt động như mong đợi hay không, bạn có thể xây dựng và gắn thẻ hình ảnh bằng lệnh docker build
, sau đó sử dụng hình ảnh để chạy containers demo. Sử dụng cờ -t
với bản docker build
sẽ cho phép bạn gắn thẻ hình ảnh bằng tên user Docker Hub của bạn để bạn có thể đẩy nó lên Docker Hub sau khi đã thử nghiệm.
Xây dựng hình ảnh bằng lệnh sau:
- docker build -t your_dockerhub_username/node-demo-v2 .
Các .
trong lệnh chỉ định rằng ngữ cảnh xây dựng là folder hiện tại. Ta đã đặt tên cho hình ảnh là node-demo-v2
, để tham chiếu đến hình ảnh node-demo
mà ta đã tạo trong Cách cài đặt và sử dụng Istio Với Kubernetes .
Khi quá trình xây dựng hoàn tất, bạn có thể liệt kê hình ảnh của bạn với docker images
:
- docker images
Bạn sẽ thấy kết quả sau xác nhận việc xây dựng hình ảnh:
OutputREPOSITORY TAG IMAGE ID CREATED SIZE your_dockerhub_username/node-demo-v2 latest 37f1c2939dbf 5 seconds ago 77.6MB node 10-alpine 9dfa73010b19 2 days ago 75.3MB
Tiếp theo, bạn sẽ sử dụng docker run
để tạo containers dựa trên hình ảnh này. Ta sẽ bao gồm ba cờ với lệnh này:
-
-p
: Điều này xuất bản cổng trên containers và ánh xạ nó tới một cổng trên server của ta . Ta sẽ sử dụng cổng80
trên server lưu trữ, nhưng bạn nên sửa đổi điều này nếu cần nếu bạn có một quy trình khác đang chạy trên cổng đó. Để biết thêm thông tin về cách thức hoạt động, hãy xem thảo luận này trong tài liệu Docker về cổng kết nối . -
-d
: Thao tác này chạy containers trong nền. -
--name
: Điều này cho phép ta đặt tên tùy chỉnh cho containers .
Chạy lệnh sau để tạo containers :
- docker run --name node-demo-v2 -p 80:8080 -d your_dockerhub_username/node-demo-v2
Kiểm tra các containers đang chạy của bạn bằng docker ps
:
- docker ps
Bạn sẽ thấy kết quả xác nhận containers ứng dụng của bạn đang chạy:
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49a67bafc325 your_dockerhub_username/node-demo-v2 "docker-entrypoint.s…" 8 seconds ago Up 6 seconds 0.0.0.0:80->8080/tcp node-demo-v2
Bây giờ, bạn có thể truy cập IP server của bạn trong trình duyệt để kiểm tra cài đặt của bạn : http:// your_server_ip
. Ứng dụng của bạn sẽ hiển thị trang đích sau:
Nhấp vào nút Nhận thông tin về cá mập để nhận thông tin về cá mập đáng sợ hơn:
Đến đây bạn đã kiểm tra ứng dụng, bạn có thể dừng containers đang chạy. Sử dụng lại docker ps
để lấy CONTAINER ID
của bạn:
- docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49a67bafc325 your_dockerhub_username/node-demo-v2 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:80->8080/tcp node-demo-v2
Dừng container bằng docker stop
. Đảm bảo thay thế CONTAINER ID
được liệt kê ở đây bằng CONTAINER ID
ứng dụng của bạn :
- docker stop 49a67bafc325
Đến đây bạn đã kiểm tra hình ảnh, bạn có thể đẩy nó vào Docker Hub. Đầu tiên, đăng nhập vào account Docker Hub mà bạn đã tạo trong yêu cầu :
- docker login -u your_dockerhub_username
Khi được yêu cầu , hãy nhập password account Docker Hub của bạn. Đăng nhập theo cách này sẽ tạo file ~/.docker/config.json
trong folder chính của user không phải root bằng thông tin đăng nhập Docker Hub của bạn.
Đẩy hình ảnh ứng dụng vào Docker Hub bằng lệnh docker push
. Hãy nhớ thay your_dockerhub_username
bằng tên user Docker Hub của bạn :
- docker push your_dockerhub_username/node-demo-v2
Đến đây bạn có hai hình ảnh ứng dụng lưu vào Docker Hub: các node-demo
hình ảnh, và node-demo-v2
. Bây giờ ta sẽ sửa đổi các file kê khai bạn đã tạo trong hướng dẫn tiên quyết Cách Cài đặt và Sử dụng Istio Với Kubernetes để hướng lưu lượng truy cập đến version canary của ứng dụng của bạn.
Bước 2 - Sửa đổi Triển khai Ứng dụng
Trong Cách cài đặt và sử dụng Istio Với Kubernetes , bạn đã tạo một tệp kê khai ứng dụng với các thông số kỹ thuật cho các đối tượng Dịch vụ và Triển khai ứng dụng của bạn . Các đặc tả này mô tả trạng thái mong muốn của từng đối tượng. Trong bước này, bạn sẽ thêm Triển khai cho version thứ hai của ứng dụng vào file kê khai này, cùng với các nhãn version sẽ cho phép Istio quản lý các tài nguyên này.
Khi bạn làm theo hướng dẫn cài đặt trong hướng dẫn yêu cầu , bạn đã tạo một folder có tên istio_project
và hai file kê khai yaml
: node-app.yaml
, chứa các thông số kỹ thuật cho các đối tượng Dịch vụ và Triển khai của bạn và node-istio.yaml
, chứa các thông số kỹ thuật cho tài nguyên Cổng và Dịch vụ Ảo Istio của bạn.
Điều hướng đến folder istio_project
ngay bây giờ:
- cd
- cd istio_project
Mở node-app.yaml
bằng nano
hoặc editor bạn quen dùng để áp dụng các thay đổi đối với file kê khai ứng dụng của bạn:
- nano node-app.yaml
Hiện tại, file có dạng như sau:
apiVersion: v1 kind: Service metadata: name: nodejs labels: app: nodejs spec: selector: app: nodejs ports: - name: http port: 8080 --- apiVersion: apps/v1 kind: Deployment metadata: name: nodejs labels: version: v1 spec: replicas: 1 selector: matchLabels: app: nodejs template: metadata: labels: app: nodejs version: v1 spec: containers: - name: nodejs image: your_dockerhub_username/node-demo ports: - containerPort: 8080
Để có giải thích đầy đủ về nội dung của file này, hãy xem Bước 3 của Cách cài đặt và sử dụng Istio Với Kubernetes .
Ta đã bao gồm các nhãn version trong các trường template
và metadata
Triển khai của bạn , theo các khuyến nghị của Istio cho Group và Dịch vụ . Bây giờ ta có thể thêm thông số kỹ thuật cho đối tượng Triển khai thứ hai, đối tượng này sẽ đại diện cho version thứ hai của ứng dụng của ta và thực hiện sửa đổi nhanh name
của đối tượng Triển khai đầu tiên của ta .
Đầu tiên, thay đổi tên của đối tượng Triển khai hiện tại của bạn thành nodejs -v1
:
... apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-v1 labels: version: v1 ...
Tiếp theo, bên dưới thông số kỹ thuật cho Triển khai này, hãy thêm thông số kỹ thuật cho Triển khai thứ hai của bạn. Hãy nhớ thêm tên hình ảnh của bạn vào trường image
:
... --- apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-v2 labels: version: v2 spec: replicas: 1 selector: matchLabels: app: nodejs template: metadata: labels: app: nodejs version: v2 spec: containers: - name: nodejs image: your_dockerhub_username/node-demo-v2 ports: - containerPort: 8080
Giống như Triển khai đầu tiên, Triển khai này sử dụng nhãn version
để chỉ định version của ứng dụng tương ứng với Triển khai này. Trong trường hợp này, v2
sẽ phân biệt version ứng dụng được liên kết với Triển khai này với v1
, tương ứng với Triển khai đầu tiên của ta .
Ta cũng đảm bảo Pods bởi các quản lý v2
triển khai sẽ chạy node-demo-v2
hình ảnh chim hoàng yến, mà ta xây dựng trong Bước trước.
Lưu file khi bạn hoàn tất chỉnh sửa.
Với file kê khai ứng dụng của bạn đã được sửa đổi, bạn có thể chuyển sang áp dụng các thay đổi đối với file node-istio.yaml
.
Bước 3 - Tăng lưu lượng truy cập với các dịch vụ ảo và thêm luật đích
Trong Cách cài đặt và sử dụng Istio Với Kubernetes , bạn đã tạo các đối tượng Gateway và Dịch vụ ảo để cho phép lưu lượng bên ngoài vào lưới Istio và định tuyến nó đến Dịch vụ ứng dụng của bạn. Tại đây, bạn sẽ sửa đổi cấu hình Dịch vụ ảo của bạn để bao gồm định tuyến tới các tập hợp con Dịch vụ ứng dụng của bạn - v1
và v2
. Bạn cũng sẽ thêm Luật đích để xác định các policy bổ sung, dựa trên version cho các luật định tuyến mà bạn đang áp dụng cho Dịch vụ ứng dụng nodejs
của bạn .
Mở file node-istio.yaml
:
- nano node-istio.yaml
Hiện tại, file có dạng như sau:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: nodejs-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nodejs spec: hosts: - "*" gateways: - nodejs-gateway http: - route: - destination: host: nodejs
Để có giải thích đầy đủ về các thông số kỹ thuật trong file kê khai này, hãy xem Bước 4 của Cách cài đặt và sử dụng Istio Với Kubernetes .
Sửa đổi đầu tiên của ta sẽ là Dịch vụ ảo. Hiện tại, tài nguyên này định tuyến lưu lượng truy cập vào lưới thông qua nodejs-gateway
đến Dịch vụ ứng dụng nodejs
của ta . Những gì ta muốn làm là cấu hình luật định tuyến sẽ gửi 80% lưu lượng truy cập đến ứng dụng root của ta và 20% cho version mới hơn. Khi ta hài lòng với hiệu suất của chim hoàng yến, ta có thể cấu hình lại các luật giao thông của bạn để dần dần chuyển tất cả lưu lượng sang version ứng dụng mới hơn.
Thay vì định tuyến đến một destination
duy nhất, như ta đã làm trong file kê khai ban đầu, ta sẽ thêm destination
trường destination
cho cả hai tập hợp con ứng dụng của bạn : version root ( v1
) và canary ( v2
).
Thực hiện các bổ sung sau cho Dịch vụ ảo để tạo luật định tuyến này:
... apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nodejs spec: hosts: - "*" gateways: - nodejs-gateway http: - route: - destination: host: nodejs subset: v1 weight: 80 - destination: host: nodejs subset: v2 weight: 20
Chính sách mà ta đã thêm bao gồm hai điểm đến: subset
của Dịch vụ nodejs
của ta đang chạy version root của ứng dụng của ta , v1
và subset
đang chạy canary, v2
. Tập con một sẽ nhận được 80% lưu lượng truy cập đến, trong khi chim hoàng yến sẽ nhận được 20%.
Tiếp theo, ta sẽ thêm Luật đích sẽ áp dụng các luật cho lưu lượng đến sau khi lưu lượng đó đã được chuyển đến Dịch vụ thích hợp. Trong trường hợp của ta , ta sẽ cấu hình các trường subset
để gửi lưu lượng đến các Group với các nhãn version thích hợp.
Thêm mã sau vào bên dưới định nghĩa Dịch vụ ảo của bạn:
... --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: nodejs spec: host: nodejs subsets: - name: v1 labels: version: v1 - name: v2 labels: version: v2
Luật của ta đảm bảo lưu lượng truy cập vào các tập hợp con Dịch vụ của ta , v1
và v2
, đến được các Group với các nhãn thích hợp: version: v1
và version: v2
. Đây là các nhãn mà ta đã đưa vào thông số kỹ thuật Triển khai ứng dụng của bạn .
Tuy nhiên, nếu ta muốn, ta cũng có thể áp dụng các policy lưu lượng truy cập cụ thể ở cấp độ tập hợp con, tạo điều kiện cụ thể hơn trong triển khai canary của ta . Để biết thêm thông tin về việc xác định các policy lưu lượng ở cấp độ này, hãy xem tài liệu Istio chính thức .
Lưu file khi bạn đã chỉnh sửa xong.
Với các bản kê khai ứng dụng của bạn đã được sửa đổi, bạn đã sẵn sàng áp dụng các thay đổi cấu hình và kiểm tra dữ liệu lưu lượng ứng dụng của bạn bằng addon đo từ xa Grafana.
Bước 4 - Áp dụng thay đổi cấu hình và truy cập dữ liệu lưu lượng truy cập
Bản kê khai ứng dụng được cập nhật, nhưng ta vẫn cần áp dụng những thay đổi này cho cụm Kubernetes của bạn . Ta sẽ sử kubectl apply
lệnh kubectl apply
để áp dụng các thay đổi của bạn mà không overrides hoàn toàn cấu hình hiện có. Sau khi thực hiện việc này, bạn có thể tạo một số yêu cầu cho ứng dụng của bạn và xem dữ liệu liên quan trong console Istio Grafana của bạn.
Áp dụng cấu hình của bạn cho các đối tượng Dịch vụ và Triển khai ứng dụng của bạn:
- kubectl apply -f node-app.yaml
Bạn sẽ thấy kết quả sau:
Outputservice/nodejs unchanged deployment.apps/nodejs-v1 created deployment.apps/nodejs-v2 created
Tiếp theo, áp dụng các cập nhật cấu hình bạn đã thực hiện cho node-istio.yaml
, bao gồm các thay đổi đối với Dịch vụ ảo và Luật đích mới:
- kubectl apply -f node-istio.yaml
Bạn sẽ thấy kết quả sau:
Outputgateway.networking.istio.io/nodejs-gateway unchanged virtualservice.networking.istio.io/nodejs configured destinationrule.networking.istio.io/nodejs created
Đến đây bạn đã sẵn sàng để tạo lưu lượng truy cập vào ứng dụng của bạn . Tuy nhiên, trước khi làm điều đó, trước tiên hãy kiểm tra đảm bảo rằng bạn có Dịch vụ grafana
đang chạy:
- kubectl get svc -n istio-system | grep grafana
Outputgrafana ClusterIP 10.245.233.51 <none> 3000/TCP 4d2h
Đồng thời kiểm tra các Group được liên kết:
- kubectl get svc -n istio-system | grep grafana
Outputgrafana-67c69bb567-jpf6h 1/1 Running 0 4d2h
Cuối cùng, hãy kiểm tra grafana-gateway
và Dịch vụ ảo grafana-vs
:
- kubectl get gateway -n istio-system | grep grafana
Outputgrafana-gateway 3d5h
- kubectl get virtualservice -n istio-system | grep grafana
Outputgrafana-vs [grafana-gateway] [*] 4d2h
Nếu bạn không thấy kết quả từ các lệnh này, hãy kiểm tra Bước 2 và 5 của Cách cài đặt và sử dụng Istio Với Kubernetes , thảo luận về cách bật bổ trợ đo từ xa Grafana khi cài đặt Istio và cách bật truy cập HTTP vào Dịch vụ Grafana.
Đến đây bạn có thể truy cập ứng dụng của bạn trong trình duyệt. Để thực hiện việc này, bạn cần IP bên ngoài được liên kết với Dịch vụ istio-ingressgateway
, đây là một loại Dịch vụ LoadBalancer . Ta đã đối sánh Cổng nodejs-gateway
với bộ điều khiển này khi viết file kê khai Cổng của ta trong Cách cài đặt và sử dụng Istio Với Kubernetes . Để biết thêm chi tiết về file kê khai Gateway, hãy xem Bước 4 của hướng dẫn đó.
Lấy IP bên ngoài cho Dịch vụ istio-ingressgateway
bằng lệnh sau:
- kubectl get svc -n istio-system
Bạn sẽ thấy kết quả như sau:
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE grafana ClusterIP 10.245.85.162 <none> 3000/TCP 42m istio-citadel ClusterIP 10.245.135.45 <none> 8060/TCP,15014/TCP 42m istio-galley ClusterIP 10.245.46.245 <none> 443/TCP,15014/TCP,9901/TCP 42m istio-ingressgateway LoadBalancer 10.245.171.39 ingressgateway_ip 15020:30707/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30285/TCP,15030:31668/TCP,15031:32297/TCP,15032:30853/TCP,15443:30406/TCP 42m istio-pilot ClusterIP 10.245.56.97 <none> 15010/TCP,15011/TCP,8080/TCP,15014/TCP 42m istio-policy ClusterIP 10.245.206.189 <none> 9091/TCP,15004/TCP,15014/TCP 42m istio-sidecar-injector ClusterIP 10.245.223.99 <none> 443/TCP 42m istio-telemetry ClusterIP 10.245.5.215 <none> 9091/TCP,15004/TCP,15014/TCP,42422/TCP 42m prometheus ClusterIP 10.245.100.132 <none> 9090/TCP 42m
Đường vào istio-ingressgateway
phải là Dịch vụ duy nhất có TYPE
LoadBalancer
và Dịch vụ duy nhất có IP bên ngoài.
Điều hướng đến IP bên ngoài này trong trình duyệt của bạn: http:// ingressgateway_ip
.
Bạn sẽ thấy trang đích sau:
Nhấp vào nút Nhận thông tin cá mập . Bạn sẽ thấy một trong hai trang thông tin về cá mập:
Nhấp vào làm mới trên trang này một vài lần. Bạn sẽ thấy trang thông tin cá mập thân thiện hơn thường xuyên hơn version đáng sợ hơn.
Khi bạn đã tạo ra một số tải bằng cách làm mới năm hoặc sáu lần, bạn có thể chuyển đến trang tổng quan Grafana của bạn .
Trong trình duyệt của bạn, chuyển đến địa chỉ sau, sử dụng IP bên ngoài istio-ingressgateway
của bạn và cổng được xác định trong file kê khai Grafana Gateway: http:// ingressgateway_ip:15031
.
Bạn sẽ thấy trang đích sau:
Nhấp vào Trang chủ ở đầu trang sẽ đưa bạn đến trang có folder istio . Để có danh sách các tùy chọn thả xuống, hãy nhấp vào biểu tượng folder istio :
Từ danh sách các tùy chọn này, hãy nhấp vào Control panel Dịch vụ Istio .
Thao tác này sẽ đưa bạn đến trang đích có menu thả xuống khác:
Chọn nodejs.default.svc.cluster.local
từ danh sách các tùy chọn có sẵn.
Nếu bạn chuyển xuống phần Dung lượng dịch vụ của trang, bạn có thể xem Các Yêu cầu Đến theo Mã Đích và Phản hồi :
Tại đây, bạn sẽ thấy sự kết hợp của 200 và 304 mã phản hồi HTTP, cho biết phản hồi OK
và Not Modified
thành công. Các phản hồi có nhãn nodejs-v1
sẽ nhiều hơn các phản hồi có nhãn nodejs-v2
, cho biết rằng lưu lượng đến đang được chuyển đến các tập con ứng dụng của ta theo các tham số mà ta đã xác định trong file kê khai của bạn .
Kết luận
Trong hướng dẫn này, bạn đã triển khai version canary của ứng dụng Node.js demo bằng Istio và Kubernetes. Bạn đã tạo các tài nguyên Luật đích và Dịch vụ ảo cùng nhau cho phép bạn gửi 80% lưu lượng truy cập đến dịch vụ ứng dụng root của bạn và 20% cho version mới hơn. Khi thấy ổn với hiệu suất của version ứng dụng mới hơn, bạn có thể cập nhật cài đặt cấu hình của bạn như mong muốn.
Để biết thêm thông tin về quản lý lưu lượng trong Istio, hãy xem tổng quan cấp cao liên quan trong tài liệu cũng như các ví dụ cụ thể sử dụng các ứng dụng mẫu bookinfo
và helloworld
của Istio.
Các tin liên quan