All Projects → digio → Istio Demo

digio / Istio Demo

Licence: mit
demonstrating canary deployments with istio

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Istio Demo

Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (+5800%)
Mutual labels:  microservices-architecture, service-mesh
aegis-host
This is the ÆGIS federated application host. Federated components are independently deployable, written by multiple teams in multiple languages, and loaded from multiple repos and network locations at runtime, yet capable of running together in a single process or as distributed components in the ÆGIS application fabric.
Stars: ✭ 197 (+1541.67%)
Mutual labels:  microservices-architecture, service-mesh
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+15758.33%)
Mutual labels:  microservices-architecture, service-mesh
Istio.io
Source for the istio.io site
Stars: ✭ 556 (+4533.33%)
Mutual labels:  microservices-architecture
Linkerd
Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x.
Stars: ✭ 5,382 (+44750%)
Mutual labels:  service-mesh
Ocelot
.NET core API Gateway
Stars: ✭ 6,675 (+55525%)
Mutual labels:  microservices-architecture
Microservices Connector
Inter-Service communication framework, support for microservice architecture and distributed system
Stars: ✭ 17 (+41.67%)
Mutual labels:  microservices-architecture
Smi Spec
Service Mesh Interface
Stars: ✭ 729 (+5975%)
Mutual labels:  service-mesh
Istio Knowledge Map
Istio knowledge map 知识图谱
Stars: ✭ 526 (+4283.33%)
Mutual labels:  service-mesh
Istio
Connect, secure, control, and observe services.
Stars: ✭ 28,970 (+241316.67%)
Mutual labels:  service-mesh
Short
URL shortening service written in Go and React
Stars: ✭ 777 (+6375%)
Mutual labels:  microservices-architecture
Servicecomb Mesher
A high performance service mesh implementation written in go
Stars: ✭ 676 (+5533.33%)
Mutual labels:  microservices-architecture
Aws App Mesh Examples
AWS App Mesh is a service mesh that you can use with your microservices to manage service to service communication.
Stars: ✭ 640 (+5233.33%)
Mutual labels:  service-mesh
Mooa
Mooa 是一个为 Angular 服务的微前端框架。A independent-deployment micro-frontend Framework for Angular from single-spa.
Stars: ✭ 755 (+6191.67%)
Mutual labels:  microservices-architecture
Meshery
Meshery, the service mesh management plane
Stars: ✭ 608 (+4966.67%)
Mutual labels:  service-mesh
Istio Bench
A benchmark tool for Istio. It measures CPU, Memory, Network usage of istio per number of services
Stars: ✭ 20 (+66.67%)
Mutual labels:  service-mesh
Consul
Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
Stars: ✭ 23,723 (+197591.67%)
Mutual labels:  service-mesh
Microservices Reference Implementation
A reference implementation demonstrating microservices architecture and best practices for Microsoft Azure
Stars: ✭ 671 (+5491.67%)
Mutual labels:  microservices-architecture
Gloo Mesh
The Service Mesh Orchestration Platform
Stars: ✭ 846 (+6950%)
Mutual labels:  service-mesh
Linkerd2
Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.
Stars: ✭ 7,887 (+65625%)
Mutual labels:  service-mesh

Istio Demonstration

A basic example of implementing ingress into an Istio service mesh, with a demonstration of canary based policy which utilises labels on a multi-versioned microservice, which has been deployed within the Istio service mesh.

Contents

Reference

[1] https://istio.io/docs/reference/config/istio.networking.v1alpha3/

[2] https://istio.io/blog/2018/v1alpha3-routing/

Prerequisites

  • I've developed and tested this using Docker for Mac, with the Kubernetes local cluster enabled. It is available here. These instructions/tooling should also work with Minikube, however I have not tested yet.

  • nginx/haproxy to enable a single origin to prevent CORS complaints when web-app accesses the backend. associated steps are implemented in the Makefile contained in this repo, instructions below.

  • NVM installed and configured in the shell.

Getting Started

To start the presentation alone run the following:

nvm install
nvm use
npm install
npm run start

install dependencies

make install

Resolution

Add the following to your /etc/hosts to faciliate domain resolution which will be used for requesting content from the service mesh, running on your local machine within docker-for-desktop.

...
127.0.0.1   webapp.demo api.demo grafana.demo kiali.demo tracing.demo
...

Install Demo

The end-to-end install can be started by running:

make install.demo

Install Istio

In order to install Istio we run the below command. What this will do is deploy the Istio control plane via Helm, there are a range of flags added to add in the additional observability tooling as part of the deployment

make istio.intall

Deploy Example Microservice

With the namespace labelled, the below deployment will have side-cars added and consequently be augmented into the mesh.

These are deployed in the development namespace. This namespace has been labeled with istio-injection=enabled, consequently the admissionMutatingWebhook will modify the deployment resource to include an istio side-car in the deployment.

make deploy.demo

This will apply the related Istio CRD's to faciliate ingress into the mesh to the required microservices. You can see these polices in policy/istio within this repo.

Open a browser and hit http://localhost:3000, and we are ready to roll.

Observability

The observability tooling such as Jaeger, Grafana, Prometheus, and Kiali will be deployed as part of the make istio-install command. However, in order to enable ingress to these services we need to deploy some Ingress policies to enable this connectivity.

This can be achieved with the following make command:

make istio.observability

If you've added the required /etc/hosts configuration. These services will be available at the the following ${HOSTNAME}:${NODE_PORT}. Example:

Generate Traffic

In order to stimulate the given backend microservices and the Istio service mesh, we can generte some Siege traffic via the following command:

make traffic

This will generate many requests to the http://api.demo host, and we should see this traffic coming in via the myriad of observability tooling made available in the previous step.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].