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

Solo: Tool State should be stored in the K8S Cluster with the actual deployment #38

Closed
1 task done
Tracked by #47
nathanklick opened this issue Dec 4, 2023 · 3 comments
Closed
1 task done
Tracked by #47
Assignees
Labels
Epic Lv2 A body of work that can be broken down into specific tasks. P0 An issue impacting production environments or impacting multiple releases or multiple individuals.

Comments

@nathanklick
Copy link
Member

nathanklick commented Dec 4, 2023

Description

Solo currently stores all CLI argument values used to initialize the last network deployment in the user's home directory under the .solo/solo.config file.

This is brittle and does not scale across multiple engineers and staff members. Additionally, the current configuration file only stores the most recently used CLI options and values. This does not work well when managing multiple deployments which may be configured differently.

State

State of a given deployment should consist of the values which drive deployment decisions made by Solo. Also the state of a given deployment should describe critical properties of the actual deployment, such as the number of consensus nodes deployed and the features enabled.

Certain command line options and other values which should not be include in state are things like logging levels of the Solo tool or other user specific values. Additionally, values which can be directly derived from the actual K8S deployment and manifests such as Helm values files should not be included in the state.

Storage

The state of a given deployment should be stored in the Kubernetes cluster alongside the actual deployment and within the deployment's namespace. The state may be stored a K8S configmap, secrets, or instance of a CRD.

Locking

The operations for a given deployment must be limited to a single engineer/user at a time. Therefore, locking should be implemented using the K8S cluster and deployment namespace. The lock should be implemented as Custom Resource Definition (CRD) and actual locks created using versioned instances of the CRD.

Tasks

Preview Give feedback
  1. New Feature P1
    instamenta
@leninmehedy leninmehedy self-assigned this Jan 10, 2024
@nathanklick nathanklick transferred this issue from hashgraph/full-stack-testing Feb 20, 2024
@nathanklick nathanklick changed the title CLI: Tool State should be stored in the K8S Cluster with the actual deployment Tool State should be stored in the K8S Cluster with the actual deployment Feb 20, 2024
@nathanklick nathanklick removed this from FST Suite Feb 20, 2024
@nathanklick nathanklick added this to Solo Feb 20, 2024
@github-project-automation github-project-automation bot moved this to 🆕 New in Solo Feb 20, 2024
@leninmehedy leninmehedy added the Epic Lv2 A body of work that can be broken down into specific tasks. label Feb 21, 2024
@leninmehedy
Copy link
Member

leninmehedy commented Feb 29, 2024

  • solo should allow user to take a backup of the state. solo does not need to support other storage like S3 buckets now.
  • solo should store the state across all clusters
    • solo should acquire lease all cluster before taking action (only the majority lock owner wins, and others should release locks). Locks should have expiry (~180s) so that there is no dead-lock.
    • solo should provide useful details if it cannot acquire the locks and tell user to wait or retry again.

@leninmehedy leninmehedy added P3 Low priority issue. Will not impact the release schedule if not complete. P1 High priority issue. Required to be completed in the assigned milestone. and removed P3 Low priority issue. Will not impact the release schedule if not complete. labels Feb 29, 2024
@leninmehedy leninmehedy moved this from 🆕 New to 📋 Backlog in Solo Feb 29, 2024
@leninmehedy leninmehedy moved this from 📋 Backlog to 🔖 Ready in Solo Mar 13, 2024
@leninmehedy leninmehedy moved this from 🔖 Ready to 📋 Backlog in Solo Apr 22, 2024
@leninmehedy leninmehedy moved this from 📋 Backlog to 🔖 Ready in Solo May 8, 2024
@jeromy-cannon jeromy-cannon changed the title Tool State should be stored in the K8S Cluster with the actual deployment Solo: Tool State should be stored in the K8S Cluster with the actual deployment Oct 4, 2024
@jeromy-cannon jeromy-cannon added P0 An issue impacting production environments or impacting multiple releases or multiple individuals. and removed P1 High priority issue. Required to be completed in the assigned milestone. labels Oct 24, 2024
@jeromy-cannon
Copy link
Contributor

closed in #862

@github-project-automation github-project-automation bot moved this from 🔖 Ready to ✅ Done in Solo Dec 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic Lv2 A body of work that can be broken down into specific tasks. P0 An issue impacting production environments or impacting multiple releases or multiple individuals.
Projects
Status: ✅ Done
Development

No branches or pull requests

4 participants