What is our primary use case?
I mostly work with Kubernetes in Google Cloud, and I use Istio to get better control over the network layer in my Kubernetes cluster. Kubernetes manages the containers, making sure they stay up and running and doing what they're supposed to do, while Istio manages the communication between them.
How has it helped my organization?
Istio's service-to-service communication features are good. For example, if you're trying to set up a zero-trust environment where all your service-to-service interactions are authenticated and possibly encrypted, that's something that Istio can help with. It can also add a lot of extra telemetry information, so you can see what kind of latencies you're getting and ensure that communications are encrypted the way they're supposed to be. That's all stuff Istio can do.
What is most valuable?
I like the telemetry it gives you. I like the easy traffic management capabilities it offers. If you want to do a canary test, for example, it makes it really easy to do that where normal Kubernetes does not. Kubernetes has always been primarily a container orchestration technology.
So, it's really good at making sure the containers are running and running where they're supposed to be, but it's never been super concerned with the communication between containers and between containers and the outside world. So, giving me better control over security and telemetry - the observability coming out - those are all key features, I think.
The security features, like mutual TLS, helped with security posture. In a normal Kubernetes cluster, the communication between the pods in the cluster is clear text except where it jumps between nodes. So, the industry is moving towards larger, more multi-tenant sorts of environments. And if you're at some organization like Deloitte and you're trying to build larger multipurpose clusters where you might have different levels of security on your workloads in the same cluster, being able to get things like mutual TLS, being able to get better network restrictions on which pods can talk to which pods, that's all key as you move towards larger clusters.
What needs improvement?
Istio is in the middle of a big evolution. We're about to go to a proxyless version of Istio. So Istio is about to drastically change the way it works. They've been talking about it for the last year or two, but they're just about to roll out their big shift, and they're going to move away from the Envoy proxy, which has been the cornerstone of Istio since its inception. So it'll be interesting to see how that works and the pros and cons that come with that.
There's a certain amount of overhead that comes with Istio. So, if you're in really, really high-volume workloads, you might be concerned with the overhead that this middle layer adds. Because, Istio is essentially operating as a middle layer, and every communication goes from the origin to Istio to the destination, and maybe Istio on that end and then to the real destination. So you have a certain amount of overhead that Istio adds.
I've seen applications where they had such strict time constraints, they couldn't use Istio because it was too much overhead. Now, again, the normal amount of overhead we're talking about here is fractions of a second. So it's not like it's a tremendous amount of overhead. But if you're doing it enough, that can add up.
I think the biggest challenges with Istio are probably just learning how to use it properly. There's a lot of adjustments, a lot of knobs to tune. So you have to know how to configure it properly. And then, you also have to understand that it's giving you a lot of good benefits. But in addition to some configuration overhead, there's also going to be some performance overhead that Istio adds in, just not a lot.
And it'll be interesting to see with the shift towards a proxyless version of Istio. I've seen a lot of changes recently in the way Kubernetes communicates internally. So as Kubernetes shifts towards a new data plane communication and as Istio shifts to keep up with that, it'll be interesting to see if Istio gets more performant or is it more important or less important as Kubernetes continues to evolve?
For how long have I used the solution?
I have been using it for a little bit more than five years.
What do I think about the stability of the solution?
Personally, I don't know that I've run into any major issues with Istio. I've heard about Istio having challenges. Our number one problem with Istio tends to be misconfiguration. For example, somebody misconfigures something.
I do a lot of training, and I help people set this stuff up. And so it's not unusual, especially when they're first setting things up, that they don't quite have things set up correctly. And maybe it'll interrupt a running workload because they didn't quite configure Istio properly. But, most of that is kinda normal growing pains into a new technology. But once Istio is set up, it's pretty bulletproof.
Overall, I would rate the stability a nine out of ten because it's awfully hard for me on a ten-point scale to go all the way to ten. There's always room for improvement.
It's a pretty good tool. It does a pretty good job.
What do I think about the scalability of the solution?
It scales pretty well. I do a lot of work in Google Cloud. In Google Cloud, they have a managed Istio control plane. So, the way Google addresses some of the scalability issues in Istio is by moving the Istio control plane out of the Kubernetes cluster and into Google Cloud, and that helps with the scale issues. Istio is a workload just like anything else. If you're going with the traditional Istio setup where your Istio control plane is inside the Kubernetes cluster, then, as your cluster gets bigger and bigger, it's taking on more and more work.
So, I don't know about limitations, but it's not really something that we have to be aware of. We can't just look at the overhead of our workloads; we have to look at the overhead of running Istio as well. So, Istio scales pretty well. But, again most of my stuff - Google's done some things to help me scale it, and that makes it a little bit more painless for me.
Overall, I would rate the scalability an eight out of ten.
How are customer service and support?
One nice thing about it being well-used is that it is well-documented online. So when I run into big problems, usually I wasn't the first. I had an issue a couple of times setting up something that was super, super new, and I couldn't quite get it set up right. But I never contacted support.
I usually just thought, "Okay. Well, maybe this new thing is not quite ready for prime time yet. Let me hold off a little while, and we'll try it a little bit later."
How was the initial setup?
The initial setup is pretty straightforward. It's also very well documented. Istio is open source, and since it's very popular - it's the most popular service mesh - it's very widely used. So there's a lot of good documentation out there. And, I don't think that initial setup is necessarily difficult.
There's a lot of options on how exactly you put it together.
- Are you using a single cluster?
- Are you using multiple clusters?
- How is your network set up before you get to Istio?
So there's a good deal of options on how you set it up. But, it's not difficult to set up.
I don't know about prior experience or if it's easy to use. It's a matter of learning how to do the configurations. It's not that it's super difficult; it's more tedious than difficult to set up. You have to learn how to do the configurations, and it's very flexible, but with flexibility comes a certain amount of configuration and management overhead.
So, having some sort of GitOps to help manage some of your Istio config files is useful. Then it's just a matter of learning how to put Istio together. It's nice that it's open-source. Again, a lot of what I do is inside Google Cloud, and Google has a lot of extra features to try to make Istio a little easier and a little bit more manageable. But it is still at its heart, Istio. So there's a fair amount of configuration you have to work and do, but it does what it's supposed to do.
There's some overhead to getting Istio in place, but it's not super, super technically difficult. I've done a lot of multi-cloud, hybrid cloud applications as well. I've done a lot with Google's distributed Anthos product, for example. And, it uses Istio pretty heavily when you're setting up a service mesh that might span multiple locations, maybe even multiple clouds.
And, again, it might add some more configuration overhead and complexity, but it's still something that is certainly doable.
What's my experience with pricing, setup cost, and licensing?
Istio is all open source. So, everything I do is mostly through Google. I'm probably closer to Google in partnership than I am with Istio directly.
What other advice do I have?
I recommend this product to other people. I do Kubernetes training. I do Istio training for Google. And, it's regular that we recommend it to organizations who, again, are looking for that extra control.
Kubernetes is really good at orchestrating containers. I have a background in development. So if I want to do a canary test in a standard Kubernetes cluster, that's not very easy to do.
Istio makes all that much easier - traffic splits, percentage traffic splits, doing some sort of chaos testing to see how it works. And the extra observability information I get also means I can get a better view of what exactly is happening inside my Kubernetes workloads, what's happening with my services, how they are interacting, what kind of latencies I'm seeing. Istio makes all that kind of stuff easier to figure out.
Overall, I would rate the solution a nine out of ten.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Google