Skip to content
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

Implement DNS and Kubernetes Service-Based Seed Node Discovery for ecChronos Agent #749

Open
VictorCavichioli opened this issue Oct 17, 2024 · 0 comments
Labels
enhancement New feature or request PoC/Agent Tasks related to new generation of ecchronos as an agent

Comments

@VictorCavichioli
Copy link
Contributor

Story Description:

Currently, the ecChronos agent relies on a static configuration or predefined mechanisms to identify seed_nodes for Cassandra clusters. To enhance the agent's flexibility in dynamic environments such as Kubernetes, where services and pods may change, it is necessary to implement a mechanism for resolving the Cassandra seed_nodes through DNS resolution or Kubernetes services (e.g., leveraging the headless service for Cassandra).

This task aims to implement the functionality for the ecChronos agent to dynamically retrieve Cassandra seed_nodes using either DNS resolution (for non-Kubernetes environments) or via Kubernetes services (when running in a Kubernetes environment). The change will primarily affect the connection initialization logic of the agent, and will require adjusting the configuration management to support this new method of discovering nodes.

Acceptance Criteria:

  1. The ecChronos agent must be able to resolve Cassandra seed_nodes dynamically via DNS.
  2. When deployed in Kubernetes, the agent must be able to resolve seed_nodes via a Kubernetes service (e.g., a headless service).
  3. The mechanism for resolving seed_nodes should be configurable, allowing users to specify either static nodes, DNS-based resolution, or Kubernetes service discovery.
  4. Appropriate logging must be added to track the discovery of seed_nodes during the agent’s initialization process.
  5. Unit and integration tests must be added to verify the correct functioning of both DNS and Kubernetes service-based node resolution.

Definition of Done:

  1. The code is written and covered with unit and integration tests.
  2. The configuration is updated to support DNS and Kubernetes-based node resolution.
  3. Documentation is updated to reflect the new feature, including how to configure the agent for DNS or Kubernetes service-based discovery.
  4. PR is reviewed and merged into the main branch.
  5. The feature is successfully tested in both Kubernetes and non-Kubernetes environments.

Notes:

  1. Make sure the agent works seamlessly in both cloud-native (Kubernetes) and traditional environments (bare metal, VM) without requiring significant reconfiguration.
  2. Investigate if any existing libraries or utilities can help simplify the DNS resolution and Kubernetes service discovery to reduce custom code.
@VictorCavichioli VictorCavichioli added enhancement New feature or request PoC/Agent Tasks related to new generation of ecchronos as an agent labels Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request PoC/Agent Tasks related to new generation of ecchronos as an agent
Projects
None yet
Development

No branches or pull requests

1 participant