Skip to content
Richard Chesterwood edited this page Oct 27, 2019 · 13 revisions

Course Plan

We're going to have a series of scenarios, angled to where a specific feature of Istio can help. Here's the list, I'll mark off progress as I go along...

Tags Inventory

Warm up

Demo: obscure problem with a microservice is causing a system slowdown. What's going on?

I want this to be a quick start with Istio, a quick win to sell its features. I need to be careful to keep my powder dry though - using grafana, jaeger AND kiali at once would be overkill I think. Maybe a short look at them???

Aim: 20 minutes all in, brief overview of Istio, followed by the install of the demo system and then onto the scenario.

To add: I think it would be better to semi-resolve this situation, so I suggest that we rewire around the blockage. We can provide the yaml for this maybe....either a timeout or just a straight fault (you can throw 200 as a fault).

Scenario 1: Telemetry

This was scheduled to be later in the course, but it was brought forward so we can use these tools in later demos. Tag :6 used here.

A further tag, :6-no-propagation, was created to demonstrate what happens if the tracing headers are not propagated.

No special code was needed here, we decided not to use a faulty system as that put too much strain on minikube.

Scenario 2: VirtualServices and Destination Rules

Tag :6, Filming Sequence 5

Deploy a new version of the staff service, in a weighted canary.

(No new tags were needed here except :6-placeholder for the non canary version)

Scenario 3: Ingress Gateways

Tag :6, Filming Sequence 6

Deploy a new version of the front end. With a world beating explanation of why Istio needs an ingress gateway!

(again no new tags needed except the canary, 6-experimental)

Scenario 4: Dark Releases

Fault Injection

  • break a lower level microservice and check that the front end isn't affect (need a "static" html for this - staff management?)

Circuit Breaking and Timeouts

  • show a heavily loaded component (eg tracker) failing (possibly with injected fault) and show (somehow) that this can cascade upwards, causing failures elsewhere. Introduce a circuit breaker

Traffic Mirroring

  • Not sure how we could pull this off? Staging/Production minikube?

Egress:

  • show a call to a remote system somewhere. (need an idea on what?) Want to switch off external calls generally.

External Services

  • let's add in a very brittle external service over which we have no control. We can make a service entry for it, inject some faults and check that we're tolerant to failure. THEN, we can finally add a retry in Istio to paper over the crack!

Policies:

Rate Limiting

  • Have the simulator run too fast for the tracker (maybe frig a delay into here). Show we can slow traffic down - what happens?

Control Headers and Routing:

  • Mmmm - interesting! Investigate, urgently, could be a solution for header propagation.

Black/Whitelisting

  • how this is different to authorization in security.

Security:

Authorisation

  • show we can have ONLY allowed microservices calling others. (think of example)

Mutual TLS

  • show how to enable SSL within the cluster. How to demo this? Might need tracing, so this section might come last!