So far, we’ve covered the Istio service mesh from the perspective of containers and Kubernetes. In reality, however, workloads frequently run on virtual machines (VMs) or physical machines. Containers and Kubernetes are often used in an effort to modernize a technology stack, and this chapter shows how to bridge these two worlds at the application-networking layer with Istio. You may wonder why we don’t simply modernize legacy workloads and run them in a Kubernetes cluster instead of integrating VMs into the mesh. We recommend that approach whenever it’s possible, but in a few cases it’s not—or at least, not when considering the cost:
- Enterprises may have to run the workloads on-premises—due to regulatory compliance—where they lack the expertise to set up and operate Kubernetes clusters.
- Containerizing applications is not that simple. Some apps may require rearchitecting; others might have dependencies that need to be updated but that conflict with other dependencies—dependency hell.
- Some have some unique dependencies on the VM they run on.