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

Allow setting node taints and custom resource definitions #44

Open
Tracked by #47
leninmehedy opened this issue Nov 10, 2023 · 5 comments
Open
Tracked by #47

Allow setting node taints and custom resource definitions #44

leninmehedy opened this issue Nov 10, 2023 · 5 comments
Labels
Feature Enhancement Enhancing an existing feature driven by business requirements. Typically backwards compatible. Pending Triage New issue that needs to be triaged by the team

Comments

@leninmehedy
Copy link
Member

No description provided.

@leninmehedy
Copy link
Member Author

leninmehedy commented Feb 7, 2024

Currently it is possible for a user to set custom values using a values file solo network deploy --values-file values-deployment.yaml:

deployment:
  podAnnotations: {}
  podLabels: {}
  nodeSelector: {}
  tolerations:

So it is not super critical to have custom flags for all those options.

@leninmehedy leninmehedy added the Backlog Work that needs to be done sometime in the future. No milestone assigned or not yet available. label Feb 7, 2024
@leninmehedy
Copy link
Member Author

leninmehedy commented Feb 7, 2024

Ok, found an issue with how tolerations are set currently and we need a better solution.

Problem

Currently tolerations are hardcoded at 8 places for various resources in the values.yaml file, see below:

Proposal

solo could offer custom flags as below for solo network deploy command:

  • --tolerations
  • --pod-annotations
  • --pod-labels
  • --node-selector

If these flags are set, solo may do either of the below to apply those values across the network resources:

  1. Generate a new values file duplicating those values for all resource (8 types of resources as of now)
  2. Add new values using --set

Warning: remember to apply these for all third party resources as currently hardcoded in the values.yaml so that all full-stack-network resources are scheduled on the nodes expected.

Complexity

For each of those flags, user would have to enter a complex YAML data structure. So we need to support adding Yaml in the console. However, this is not too crazy to have since other CLI tools like curl provides --data-binary flag for user to enter multi-line JSON data input like below

curl -0 -v -X POST http://www.example.com/api/users \
  -H "Expect:" \
  -H 'Content-Type: application/json; charset=utf-8' \
  --data-binary @- << EOF
{
  "field1": "test",
  "field2": {
    "foo": "bar"
  }
}

Solution options

  1. Values file: User provide a custom values file (e.g. values-deployment.yaml) using the --values-file switch containing the deployment section that solo duplicates for all network resources (at 8 locations as of now) . In this case, solo needs to handle the deployment section in the provided values file differently and user can be relieved from typing multi-line yaml in the console.

  2. "Have-it-all": Have both options (values file and command flags supporting multiline yaml)

@jeromy-cannon
Copy link
Contributor

jeromy-cannon commented Feb 7, 2024

Another option is that the user could enter the toleration in json format. definitely would probably have to use --set-json when adding it to the command line option of the helm install call.

@nathanklick nathanklick transferred this issue from hashgraph/full-stack-testing Feb 20, 2024
@nathanklick nathanklick changed the title CLI[Chart]: Allow setting node taints and custom resource definitions Allow setting node taints and custom resource definitions 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 Feature Enhancement Enhancing an existing feature driven by business requirements. Typically backwards compatible. and removed Backlog Work that needs to be done sometime in the future. No milestone assigned or not yet available. labels Feb 21, 2024
@leninmehedy
Copy link
Member Author

We are going to follow gsutil pattern to set node-taints and labels etc: https://cloud.google.com/sdk/gcloud/reference/container/node-pools/update#--node-taints

@leninmehedy
Copy link
Member Author

  • We need separate taints and labels for for mirror-node.
  • We also need node affinity and anti-affinity, it could be specified with a file. However this should be least preferable option.

@leninmehedy leninmehedy added the P1 High priority issue. Required to be completed in the assigned milestone. label Feb 29, 2024
@leninmehedy leninmehedy moved this from 🆕 New to 🔖 Ready in Solo Feb 29, 2024
@leninmehedy leninmehedy moved this from 🔖 Ready to 📋 Backlog in Solo Feb 29, 2024
@leninmehedy leninmehedy moved this from 📋 Backlog to 🔖 Ready in Solo Mar 5, 2024
@leninmehedy leninmehedy moved this from 🔖 Ready to 🏗 In progress in Solo Mar 13, 2024
@leninmehedy leninmehedy moved this from 🏗 In progress to 🔖 Ready in Solo Mar 13, 2024
@leninmehedy leninmehedy moved this from 🔖 Ready to 📋 Backlog in Solo Apr 22, 2024
@jeromy-cannon jeromy-cannon added Pending Triage New issue that needs to be triaged by the team and removed P1 High priority issue. Required to be completed in the assigned milestone. labels Sep 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Enhancement Enhancing an existing feature driven by business requirements. Typically backwards compatible. Pending Triage New issue that needs to be triaged by the team
Projects
Status: 📋 Backlog
Development

No branches or pull requests

2 participants