Istio :1

DevOps Classroom Series – 26/Apr/2021

Monolith Applications

  • Consider a simple application Preview
  • As application grows and multiple developer start adding features
  • Even a small change in the code, might lead to deployment which means downtime
  • Scaling becomes one more overhead

Distributed Monolith

Preview

MicroServices

  • MicroService will have its own db and its own code base
  • Each MicroService is functionality which can be individually deployed
  • Challenges
    • Observing interactions b/w services can be complex, when we have too many distributed , loosely couple components
    • Traffic Management at each service endpoint becmes more important (specialized routing)
    • Securing communication by encrypting the data flows is more complicated
    • Managing timeouts and communication failures b/w services can lead to cascading failures

How did we get here

  • Netflix pioneered the development of early frameworks for managing microservices and they have opensource as part of Netflix OSS Refer Here
  • The have build components such as
    • Asgard (control plane)
    • Eureka (service registry)
    • Zuul (loadbalancer gateway)
    • Ribbon (Client-side load balancer)
  • As the containers & k8s become popular the technology for one platform might not solve the purpose, so these conditions helped to develop the modern micro service management system that is known as Service Mesh

Service Mesh

  • A Service Mesh is a programmable framework that allows us to observe, secure and connect microservices Preview
  • Istio
  • Consul Connect
  • Linkerd
  • App Mesh
  • Aspen Mesh

ISTIO

  • Features
    • Observability
    • Traffic Management
    • Security Preview

ISTIO Setup

  • Create a linux vm in azure
  • Install azure cli in the vm Refer Here
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

  • Execute the following command to login
az login

  • After successful login then install aks cluster Refer Here for the documentation
  • Now lets try to install istio on linux Refer Here
  • After setup lets expose
    • promethues
    • grafana
    • kiali
kubectl expose service prometheus --type=LoadBalancer --name=prometheusext --namespace istio-system

kubectl expose service grafana --type=LoadBalancer --name=grafanaext --namespace istio-system

kubectl expose service kiali --type=LoadBalancer --name=kialisext --namespace istio-system

  • Clone the istio Refer Here
  • Now cd in to samples/bookinfo/platform/kube
  • Now lets create a bookinfo application without istio
kubectl apply -f bookinfo.yaml
kubect get all

  • Wait for all the services to be up
  • Now lets inject istio proxies
kubectl apply -f <(istioctl kube-inject -f bookinfo.yaml)