Difficulty: Beginner
Estimated Time: 25 minutes

Networking layers have traditionally been a burden on engineering organizations to get networking right. Networking layers such as meshes look as clusters as a whole and attempt to add networking controls. An efficient mesh is one that can be declared with infrastructure as code (IaC).

Istio is a specific networking mesh you can add to your cloud native cluster. It's tuned for ease of use with Kubernetes, and can be used for meshing other services outside of Kubernetes. Use Istio for declarative control over these networking architecture x-ilities:

  • Connectability
  • Securability
  • Controllability
  • Observability

Istio (in the Greek alphabet, ιστίο) is Greek for the noun “sail,” and is pronounced "iss-teeh-oh.".

At a high level, Istio helps reduce the complexity of these deployments, and eases the strain on your development teams. It is a completely open source service mesh that layers transparently onto existing distributed applications. It is also a platform, including APIs that let it integrate into any logging platform, or telemetry or policy system. Istio’s diverse feature set lets you successfully, and efficiently, run a distributed microservice architecture, and provides a uniform way to secure, connect, and monitor microservices.

This scenario has been adapted from Istio's Getting Started guide.

In the following steps you will learn:

  • How to install Istio on Kubernetes following its recommended best practices
  • How to install Istio's Bookinfo as a Hello World for Istio
  • How to start manipulating Istio declarations to control your network close to the application plane

In this scenario you experienced some important Istio features, a small selection of how it helps you with:

  • Connectability
  • Securability
  • Controllability
  • Observability

Lessons Learned

With these steps you have learned:

  • ✔ How to install Istio on Kubernetes following its recommended best practices
  • ✔ How to install Istio's Bookinfo as a Hello World for Istio
  • ✔ How to start manipulating Istio declarations to control your network close to the application plane

Look for more scenarios to explore other Istio features as they arrive. The Istio Up and Running book offers more learning channels.

References

  • Kubernetes Pipelines: Consumer-Driven Contracts with Kubernetes
  • Kubernetes Serverless: Knative
  • Kubernetes Chaos: Pure Chaos
  • Kubernetes Chaos: Chaos Mesh
  • Kubernetes Chaos: Litmus

For a deeper understanding of these topics and more join
Jonathan Johnson
at various conferences, symposiums, workshops, and meetups.

Software Architectures ★ Speaker ★ Workshop Hosting ★ Kubernetes & Java Specialist

Kubernetes Applications: Istio

Step 1 of 10

Kubernetes Cluster

For this scenario, Katacoda has just started a fresh Kubernetes cluster for you. Verify that it's ready for your use:

kubectl version --short && \ kubectl get nodes && \ kubectl get componentstatus && \ kubectl cluster-info

It should list a 2-node cluster and the control plane components should be reporting Healthy. If it's not healthy, try again in a few moments. If it's still not functioning refresh the browser tab to start a fresh scenario instance before proceeding.

The Helm package manager used for installing applications on Kubernetes is also available:

helm version --short

Kubernetes Dashboard

You can administer your cluster with the kubectl CLI tool or use the visual Kubernetes dashboard. The Dashboard can be accessed from the tab labeled Kubernetes Dashboard above the command line. When the Dashboard first appears, it will prompt for an access token. At any time you can run this script to access the Dashboard token:

token.sh

This script will display the token in the terminal. Copy the green text using your browser's copy feature then paste the token into the prompt when the Dashboard is accessed. If the Dashboard is still starting up, then Katacoda will report the access error. Once the dashboard Pod reports the status Running it can be accessed:

kubectl get pods -n kube-system -l app.kubernetes.io/name=kubernetes-dashboard