Skip to content

Zenika/tz-service-mesh-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TZ25 Service Mesh Istio Demo

This project deploys the Istio Bookinfo application in three different modes (no mesh, sidecar mesh, ambient mesh) onto a local Kubernetes kind cluster. It also includes a monitoring stack (Prometheus, Grafana, Kiali) and a K6 performance testing setup.

Overview

The demo showcases:

  • Istio service mesh capabilities with sidecars and the newer ambient mode.
  • Accessing applications via an Istio-managed Kubernetes Gateway.
  • Monitoring the mesh and applications using Kiali.
  • Visualizing metrics with Prometheus and Grafana.
  • Running automated performance tests with K6 and generating reports.

Prerequisites

  1. Docker Desktop: With Kubernetes and kind enabled.
  2. helm: The Kubernetes package manager. Installation Guide
  3. kubectl: The Kubernetes command-line tool. Installation Guide
  4. k6: Modern load testing tool. Installation Guide
  5. (Optional but Recommended) istioctl: The Istio command-line tool Installation Guide

Setup Instructions

  1. Make the Script Executable:

    chmod +x service-mesh-setup.sh
  2. Run the Setup Script: This will deploy MetalLB, the monitoring stack, Istio, Kiali, Bookinfo applications, and configure gateways.

    ./service-mesh-setup.sh

    The script will output access information at the end.

Accessing Services

  1. Configure /etc/hosts: The setup script will output the EXTERNAL-IP of the Istio Ingress Gateway. You need to add entries to your /etc/hosts file (or C:\Windows\System32\drivers\etc\hosts on Windows) to map the hostnames to this IP. For example, if the gateway IP is 172.18.255.3:

    172.18.255.3 no-mesh.bookinfo.local
    172.18.255.3 sidecar.bookinfo.local
    172.18.255.3 ambient.bookinfo.local
    

    (Docker Desktop often forwards LoadBalancer IPs to 127.0.0.1, so you might be able to use 127.0.0.1 instead of the MetalLB IP in your /etc/hosts file.)

  2. Bookinfo Applications:

    • No Mesh: http://no-mesh.bookinfo.local/productpage
    • Sidecar: http://sidecar.bookinfo.local/productpage
    • Ambient: http://ambient.bookinfo.local/productpage
  3. Monitoring Tools: Run kubectl get svc -A | grep LoadBalancer to find the EXTERNAL-IP and PORT(S) for:

    • Kiali: Usually in istio-system or kiali-operator namespace. Access via http://<KIALI_IP>:<KIALI_PORT> (e.g., http://localhost:20001 if Docker Desktop forwards it).
    • Grafana: In monitoring namespace. Access via http://<GRAFANA_IP>:3000 (e.g., http://localhost:3000). Admin password is prom-operator.
    • Prometheus: In monitoring namespace. Access via http://<PROMETHEUS_IP>:9090 (e.g., http://localhost:9090).

    (In case of Kiali, you might want to port-forward the svc to access the dashboard: kubectl port-forward -n istio-system svc/kiali 20001:20001.)

Running K6 Performance Tests

Run the test Script:

    ./k6-execution.sh
  1. Test Execution: The script executes test.js, which contains scenarios for no-mesh, sidecar, and ambient environments. Each scenario runs for 2 minutes with 10 Virtual Users (VUs).

  2. HTML Report: A single HTML report named k6-report.html will be generated in the directory where you ran the script. This report contains metrics for all test scenarios.

Viewing Dashboards in Grafana

Access Grafana: Open Grafana using its LoadBalancer IP/port (e.g., http://localhost:3000). Log in with admin / prom-operator.

Cleanup

To remove all resources created by this demo:

./service-mesh-setup.sh cleanup

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published