In the real world, not all Amazon EKS clusters require autosclaing mechanism, some of them needs to be manually scaled. To reduce human errors, eks-managed-node-groups is here to solve this problem, eks-managed-node-groups provides an user friendly TUI (Text-based User Interface) allows users to easily jump between clusters with only a few options, without having to log into the Amazon EKS console and jump between configuration pages.
- An existing Amazon EKS cluster.
- An existing kubeconfig.
- Grant IAM users and roles access to Kubernetes APIs.
- An IAM Role/User with the following permissions:
- Network access to the AWS STS endpoint, credentials are verified with
sts:GetCallerIdentityon startup (allowed by default, no extra IAM permission required).
Run without any flag to walk through the interactive menus, or pass flags to skip the corresponding steps:
| Flag | Description |
|---|---|
--region, -r |
Region for the clusters (default: us-east-1) |
--profile, -p |
AWS shared config profile to use |
--cluster, -c |
Cluster name (skip interactive selection) |
--type, -t |
Node group type: managed or self-managed |
--nodegroup, -n |
Node group name (skip interactive selection) |
--desired/--min/--max |
Node group sizes, must be set together |
--dry-run |
Preview the change without applying it |
--yes, -y |
Apply without the confirmation prompt |
--output, -o |
Output format: text or json |
Each flag independently skips its own step, any step without a flag falls back to the interactive menu.
--output json is intended for fully non-interactive runs, pass all the flags (or --dry-run) so no interactive menu mixes into the piped output. Change previews and apply results are emitted as a full report object, other outcomes (nothing to change, aborted, nothing found) are emitted as {"message": ..., "applied": false}, check the applied field to tell them apart.
Shell completion is available via the built-in completion command:
eks-managed-node-groups completion zshFully non-interactive, preview the change first:
eks-managed-node-groups \
--region us-east-1 \
--profile myprofile \
--cluster my-cluster \
--type managed \
--nodegroup my-nodegroup \
--desired 3 \
--min 1 \
--max 5 \
--dry-runHint: You may drop --dry-run and pass --yes to apply without prompting.
Brand new install
brew tap guessi/tap && brew update && brew install eks-managed-node-groupsTo upgrade version
brew update && brew upgrade eks-managed-node-groupsClick to expand!
curl -fsSL https://github.com/guessi/eks-managed-node-groups/releases/latest/download/eks-managed-node-groups-Linux-$(uname -m).tar.gz -o - | tar zxvf -
mv -vf ./eks-managed-node-groups /usr/local/bin/eks-managed-node-groupscurl -fsSL https://github.com/guessi/eks-managed-node-groups/releases/latest/download/eks-managed-node-groups-Darwin-$(uname -m).tar.gz -o - | tar zxvf -
mv -vf ./eks-managed-node-groups /usr/local/bin/eks-managed-node-groups$SRC = 'https://github.com/guessi/eks-managed-node-groups/releases/latest/download/eks-managed-node-groups-Windows-x86_64.tar.gz'
$DST = 'C:\Temp\eks-managed-node-groups-Windows-x86_64.tar.gz'
Invoke-RestMethod -Uri $SRC -OutFile $DST


