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 đặtkubectltrong 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ổng80trê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

