Support for registering & discovering applications using AWS CloudMap
Type: Feature Support for registering & discovering applications using AWS CloudMap
Is your feature request related to a problem? Please describe. We have an application which is currently deployed in both ECS and EKS cluster that would need AWS CloudMap integration to enable service discovery. But depending upon where you deploy the CloudMap integration may vary, like below:
- For applications deployed in ECS we need to enable cloudmap integration via ECS task or Service.
- For applications running on EKS we need to deploy an EKS operator and then integrate it via kubespec
This makes it difficult to have a single codebase for both services that can control the CloudMap integration and makes it DevOps heavy
Describe the solution you'd like Similar to other Spring-boot AWS integration, we can have the registry and discovery defined part of application or bootstrap yaml/properties file like below:
aws:
cloudmap:
discovery:
discoveryList:
- healthCheckProtocol: http
healthCheckResourcePath: /health
healthCheckThreshold: 5
service: test-service
serviceNameSpace: test-namespace
failFast: true
enabled: true
region: us-east-1
registry:
description: Namespace for sample cloudmap registry service
port: 80
service: service-service
serviceNameSpace: service-namespace
This will help application developers to control most aspects of the CloudMap integration part of their application code, instead of defining them in CDK, CloudFormation or k8s deployment files
Likewise, we will also provide annotation support using which developers can register spring boot application to cloudmap service. Here is a sample registration code:
@CloudMapRegistry(
serviceNameSpace = "dark1-namespace",
service = "dark1-service",
port = 80
)
public class TestController {}
Describe alternatives you've considered Other alternative is to have the individual applications register themselves to AWS CloudMap service using AWS SDK. This leads to lot of code & logic duplications which would become difficult to manage
Additional context If you guys like this, please let me know. I am currently working on a pull request will submit it for review once it's ready.
@hariohmprasath thanks for offering your support for this feature. After reading about cloudmap it makes sense to have this integration which allows registry and discovery. I think a good example to follow the implementation is spring-cloud-consul
Do we have any working example of spring boot integration with this new repository. Seems like whatever I do none of the integrations like parameter store is working with the new repo. Can you please help me out with this?
@hariohmprasath do you mind to open a discussion with category Q&A about it, please?
@hariohmprasath do you mind to open a discussion with category
Q&Aabout it, please?
Thanks. I have opened a discussion