With AWS announcing the deprecation of AWS App Mesh effective September 30, 2026, many organizations are evaluating alternatives to continue their service mesh journey. If you are one of those organizations, Istio presents itself as a robust and feature-rich option, especially for Kubernetes-native environments. In this post, I will provide an overview of the migration process from AWS App Mesh to Istio, compare the two service meshes, and introduce the Tetrate Istio Migration Tool—a convenient utility we developed to streamline this transition.
With AWS App Mesh being deprecated, it’s important to understand the similarities and differences between App Mesh and Istio to prepare for a successful migration. Below are some key points of comparison to help align your current infrastructure with what Istio offers:
AWS recommends ECS customers migrate to Service Connect and EKS customers to VPC Lattice. For a feature-rich, open source solution, Istio is a compelling choice. Let’s dive into the migration journey from AWS App Mesh to Istio, supported by Tetrate’s migration tool.
Before starting the migration, it’s essential to understand the key differences between AWS App Mesh, Service Connect, VPC Lattice, and Istio:
Feature | App Mesh | Service Connect | VPC Lattice | Istio |
---|---|---|---|---|
Network Reliability | Uses Envoy as sidecar proxies for outlier detection, health checks, and retries with granular adjustments. | Uses Envoy as sidecar proxies with default configurations, only timeouts adjustable. | Built-in health checks and retries with AWS-managed reliability. No sidecar proxies are needed. | Supports both sidecar and ambient modes, using Envoy with full support for fine-tuning. |
Advanced Traffic Routing | Supports advanced traffic routing like A/B testing and canary releases. | Does not support advanced traffic routing. | Supports basic traffic routing and load balancing. | Supports advanced traffic control, including A/B testing and canary releases. |
Observability | Manual collection and monitoring of metrics. | Sends metrics to Amazon CloudWatch automatically. | Integrated monitoring with AWS CloudWatch and X-Ray. | Out-of-the-box observability with Prometheus, Grafana, and Jaeger. |
Service Discovery | Integrates with AWS Cloud Map. | Uses AWS Cloud Map. | Uses AWS service discovery mechanisms. | Uses Kubernetes-native service discovery. |
Security | Supports TLS with AWS PCA and mutual TLS (mTLS). | Supports TLS, no mTLS. | Supports mTLS. | Supports mTLS, fine-grained security policies. |
Resource Sharing | Can share Mesh across multiple AWS accounts. | Cannot share namespaces across accounts. | Can share resources across multiple AWS accounts. | Can be deployed across multiple clusters and clouds. |
To make the migration process smoother, Tetrate has developed an Istio Migration Toolkit, which is currently in a private state but can be used internally or by approved customers who request it through the form. The toolkit assists in automating the conversion of AWS App Mesh configurations to Istio equivalents, including Virtual Nodes, Virtual Routers, and other networking constructs.
Key Considerations
Below, I’ll guide you through the steps to use this tool effectively.
To start the migration, ensure you have the following installed:
Make sure your AWS App Mesh is properly installed and configured on an EKS cluster. You’ll also need a Kubernetes secret called tetrate-tis-creds for Istio installation, as detailed in the tool’s documentation.
The tool also helps verify compatibility, offering a precheck command to identify any potential blockers before starting the migration.
To verify that your setup is ready for migration, run:
tim precheck
This command will scan your App Mesh environment and highlight any adjustments required to ensure a successful migration.
Install Istio
Use the Istio Migration Toolkit to generate IstioOperator configurations, and install Istio:
tim generate iop | istioctl install –skip-confirmation -f –
Apply Istio Networking Rules Next, generate and apply Istio networking rules:
tim generate networking | kubectl apply -f –
Remove AWS App Mesh Labels Remove the existing App Mesh labels from your namespaces. For example, for the default namespace:
kubectl label namespace default "appmesh.k8s.aws/sidecarInjectorWebhook-"
Enable Istio Sidecar Injection Add a label to enable Istio’s automatic sidecar injection:
kubectl label namespace default istio-injection=enabled
Restart Deployments To apply changes and initiate the new Envoy sidecar injection, restart your deployments:
kubectl rollout restart deployment <deployment-name> -n <deployment-namespace>
When migrating apps from AWS App Mesh to Istio, there are strategies like in-place, canary, and blue/green deployments, similar to those for migrating to VPC Lattice. The right strategy depends on app requirements like zero downtime or scheduling maintenance windows.
Migrating from AWS App Mesh to Istio can unlock new capabilities in traffic management, observability, and security. Tetrate’s Istio Migration Toolkit simplifies the process, providing a step-by-step approach to reduce manual configurations and ensure a seamless transition.
If you’re interested in trying out Tetrate’s Istio Migration Toolkit, feel free to reach out—the tool is currently available for private use, and we’d be happy to discuss access.
This migration is not just about adopting a new service mesh—it’s an opportunity to take advantage of Istio’s comprehensive features, support multi-cloud deployments, and enhance the resilience of your infrastructure.
This blog was initially published at tetrate.io.
Last updated on Dec 20, 2024