-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature Request: EKS service discovery #125
Comments
I think this is feasible after addressing other issues. A Kubernetes service exposing multiple ports can't be mirrored in App Mesh because virtual nodes and routers don't support multiple listeners #120. With virtual routers you can't represent Kubernetes For an app to talk to another, the destination virtual service must be added as a backend on the caller virtual node, for this to be automated, the discovery component has to create virtual services and fill the backends on every single virtual node with all the virtual services in the mesh. Multiple EKS clusters can be part of the same mesh so all virtual objects must be unique, doing so would break Kubernetes name resolution since apps can't be addressed with Linkerd/SMI doesn't have these issues because in Linkerd the virtual node equivalent is the Kubernetes service. In SMI, two apps in the same namespace can address themselves with just the ClusterIP name while in App Mesh you need at least the namespace prefix to avoid name collisions. |
This is true and is a blocker unless controller automatically adds every service in the cluster as backend. This is not possible as there is limit on number of backends (25 as of 12/20). This is tracked under #113
It should be possible to use AWS Cloud Map integration to alleviate this problem. See https://github.com/aws/aws-app-mesh-examples/tree/master/walkthroughs/howto-k8s-cloudmap for an example.
|
This is just a no-go-mesh. |
Hey @fblgit, wanted to respond to a few of your questions and comments.
Have you taken a look at https://github.com/aws/aws-app-mesh-controller-for-k8s ? Its the way we recommend customers who are using kubernetes integrate with App Mesh, and is meant to be more idiomatic. And if its not satisfying your needs, we'd like to hear about it.
So this is a conscious decision in App Mesh to require fully modeling connectivity so that there's an explicit definition of who can talk to what. We do recognize that explicitly modeling each service for each node is redundant, and we have roadmap items like #113 to solve it.
Our current limit here is actually 50 and we can increase this for you if you cut us a service quota increase via the console. However, there is a limit to the amount of individual services we want people modeling on a single node and are looking to issues like #113 to solve that.
What constraints are forcing this for you? We have customers who are able to use NGINX with App Mesh, as well as others who have migrated to use our Virtual Gateways. |
Thanks for your answer. The main problem from my perspective is... either all or this is worthless.. things like canary in a microservices architecture cannot be accomplished. I think that there is some basic misunderstanding of how products/offerings are.. Its not about the industry adapting to AppMesh.. It's about AppMesh adapting to the industry. That starts with understanding that K8s workload exists much before.. and how they can adopt this with less effort. Expecting Modeling+RevampIngress is very pompous in balance of what AppMesh brings to the table. |
Hi @fblgit, App Mesh leans towards explicit modeling to limit blast radius of changes happening inside a mesh. For e.g. a new service joining a mesh should not impact every other service already in the mesh. While we do not have data on when and how Envoy fails as configuration grows, we did want to lean on safety rather than flexibility. I understand we may have created user experience issues due to this friction. Issue #113 is an effort to address this but unfortunately we could not prioritize it ahead of other things. To summarize, the asks here are;
Appreciate you taking time in testing App Mesh and documenting the observations. We will take this feedback and look into addressing these. |
Tell us about your request
Automatically create virtual nodes for each service deployed on EKS or import existing services from EKS.
As part of this, it will be good to support Kubernetes CRDS (maybe using SMI?) to configure routes to the services.
Which integration(s) is this request for?
EKS/Kubernetes
Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
Make it easier to integrate EKS with AppMesh - today there is a lot of manual configuration you need to do that can be configured automatically or using Kubernetes CRDs files.
Are you currently working around this issue?
Manually configurations on the UI - cumbersome and slow, make it harder to adopt
Additional context
Anything else we should know?
Attachments
If you think you might have additional information that you'd like to include via an attachment, please do - we'll take a look. (Remember to remove any personally-identifiable information.)
The text was updated successfully, but these errors were encountered: