-
-
Notifications
You must be signed in to change notification settings - Fork 358
Description
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-namespaceThis 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.