Why You Need Istio, Kubernetes, and Weave Cloud for Distributed Applications
Kubernetes is great for managing microservices. See how the open-source service mesh Istio can help with your Kubernetes clusters.
Join the DZone community and get the full member experience.Join For Free
The open source service mesh Istio, just reached the 1.0 milestone (officially released next week) with many of its features now in stable mode. Anyone who’s running a Kubernetes cluster in production should consider implementing Istio and this is why.
By now you are aware of the many benefits of running Kubernetes and how by its ability to manage microservices and deployments, it has fundamentally changed the way we approach and do application design and deployment patterns. But with this radical change comes a whole new set of challenges, such as service discovery, routing, failure handling, as well as basic visibility on to your running microservices and how they communicate with one another.
Istio in combination with Kubernetes provides some of the missing components needed to successfully run and debug distributed applications in Kubernetes. To illustrate the problem we are discussing, imagine a distributed application that is split up into multiple microservices where each microservice has multiple instances and potentially each deployed instance may also have multiple versions. Even a simple deployment can spawn hundreds of microservices. And when something goes wrong with a deployment this large, distributed and complex, it can be difficult or even impossible to trace, debug and fix. These kinds of problems not only cause issues for your customers but they also slow down your team’s productivity.
“A Kubernetes Deployment managed ReplicaSet. Each one represents a different version of the deployed application. Each ReplicaSet manages a set of identically versioned Pods.”
Istio is designed to help solve some of these problems, but not all of them. It is a dedicated infrastructure layer for reliable service to service interactions in a microservices architecture. Specifically, Istio's control plane provides an abstraction layer over an underlying cluster management platform like Kubernetes.
Istio can manage and route encrypted network traffic, balance loads across microservices, enforce access policies, verify service identity, provide tracing, aggregation of service to service telemetry and many more features including Helm support as of 1.0.
Control and Manage Istio Traffic With Weave Cloud
Weave Cloud adds a number of additional features that fit well with your Kubernetes and Istio stack:
- Increase your development velocity and manage your deployments to Kubernetes and Istio by applying GitOps best practices.
- Visualize and debug service to service interactions in Istio.
- Implement maintenance-free monitoring and alerting with our hosted Prometheus as a service.
Weave Cloud can help you achieve the following goals:
1. Use GitOps to Deploy Your App
All configuration objects in Istio are driven through declarative Kubernetes APIs. This means that Istio configuration object definitions can be kept as YAML files in Git and that allows developers to manage service behavior completely through Git, along with application code. Weave Cloud implements a Kubernetes operator that keeps your cluster in sync with ‘the source of truth’ via its configuration files that are checked into Git. And since the desired state of your cluster is kept in Git, it can also be observed for differences against the running cluster.
GitOps workflow to Istio and Kubernetes.
Declarative infrastructure in combination with Weave Cloud’s continuous delivery and real-time observability dashboards also provides developers with a way to quickly decide on the integrity of the deployment and therefore increase deployment velocity.
Try it out right now: GitOps Workflows for Istio Canary Deployments.
Deployments dashboard - connect to Git and start deploying.
Real-time workload dashboards.
- Read more about GitOps, and Istio: GitOps for Istio - Manage Istio Config like Code
- Find out how you can use Flux (the OSS for continuous deployment in Weave Cloud) with Helm: Helm Integration
2. Visualize and Debug Service to Service Communication Running in Istio
Although Istio is designed to abstract and manage the complexity of deployments, being able to observe, drill down and pinpoint telemetry between services and make sense of your workloads can still be daunting without a graphical UI.
With Weave Cloud, it means that you’ll be able to see how Istio deploys sidecars for each of your application containers and you’ll be able to verify how all the application traffic goes via these sidecars. You’ll be able to see a before and after view of the changes Istio’s kube-inject makes to your app in real time which helps visualize and understand your application as it runs in Istio.
Drill down and observe service intercommunication for simpler debugging.
Open a terminal for quick access to a pod or container.
Try it out for yourself with this tutorial: Istio and Weave Cloud.
3. Maintenance-Free Prometheus Monitoring, an Easy-to-Use GUI for Exploring Available Metrics, and an Always Up Alertmanager
With Weave Cloud’s hosted Prometheus service, you don’t have to worry about the scalability of your Prometheus instance, or even managing storage within your Kubernetes cluster – we will handle that for you. In addition to this, you never have to worry about your AlertManager outages as we look after it for you.
You can also configure the same Grafana dashboard that Istio provides out of the box and use it to query Weave Cloud.
In this post, we have described how Istio solves some of the problems of running distributed apps in Kubernetes. We also discussed how you can more easily manage, debug and monitor your applications running in Kubernetes and Istio with our hosted SaaS, Weave Cloud.
Published at DZone with permission of Anita Buehrle, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.