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

Harden etcd subcommand usage and validation #4118

Merged
merged 2 commits into from
Mar 1, 2024

Conversation

twz123
Copy link
Member

@twz123 twz123 commented Feb 23, 2024

Description

The etcd leave subcommand can be used to remove k0s nodes from the etcd cluster. If no IP address is specified, the default is to remove the current node. The IP of the node to be removed can be specified with the --peer-address flag. However, it's quite tempting to just pass the IP as an argument, like this k0s etcd leave 192.168.0.0.3. This extra argument will simply be ignored, and the leave subcommand will use its defaults. This can be very confusing, and also quite dangerous, as it may remove different nodes than intended.

Improve the subcommand by making it fail if arguments are passed to it. Add validation to the --peer-address flag and improve the usage strings. While at it, make the etcd member-list subcommand reject any args as well.

Display etcd member IDs in hex. This is usually the way etcdctl displays member IDs. This makes it more intuitive and easier to correlate with etcdctl's output.

See:

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

How Has This Been Tested?

  • Manual test
  • Auto test added

Checklist:

  • My code follows the style guidelines of this project
  • My commit messages are signed-off
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules
  • I have checked my code and corrected any misspellings

This is usually the way etcdctl displays member IDs. This makes it more
intuitive and easier to correlate with etcdctl's output.

Signed-off-by: Tom Wieczorek <[email protected]>
@twz123 twz123 added bug Something isn't working component/etcd area/cli backport/release-1.29 PR that needs to be backported/cherrypicked to the release-1.29 branch labels Feb 23, 2024
The etcd leave subcommand can be used to remove k0s nodes from the etcd
cluster. If no IP address is specified, the default is to remove the
current node. The IP of the node to be removed can be specified with
the --peer-address flag. However, it's quite tempting to just pass the
IP as an argument, like this `k0s etcd drop 192.168.0.0.3`. This extra
argument will simply be ignored, and the leave subcommand will use its
defaults. This can be _very_ confusing, and also quite dangerous, as it
may remove _different_ nodes than intended.

Improve the subcommand by making it fail if arguments are passed to it.
Add validation to the --peer-address flag and improve the usage strings.
While at it, make the etcd member-list subcommand reject any args as
well.

Signed-off-by: Tom Wieczorek <[email protected]>
@twz123 twz123 marked this pull request as ready for review February 23, 2024 16:28
@twz123 twz123 requested a review from a team as a code owner February 23, 2024 16:28
@twz123 twz123 merged commit 9971b60 into k0sproject:main Mar 1, 2024
73 checks passed
@twz123 twz123 deleted the harden-etcd-cli branch March 1, 2024 09:09
@k0s-bot
Copy link

k0s-bot commented Mar 1, 2024

Successfully created backport PR for release-1.29:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cli backport/release-1.29 PR that needs to be backported/cherrypicked to the release-1.29 branch bug Something isn't working component/etcd
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants