eks-node-viewer-for-windows

module
v1.0.0-windows Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 8, 2025 License: Apache-2.0

README ΒΆ

GitHub License contributions welcome Go code tests Windows Tests

EKS Node Viewer for Windows πŸͺŸ

This is a Windows-optimized fork of the original AWS Labs EKS Node Viewer with enhanced Windows support, PowerShell scripts, and comprehensive Windows documentation.

πŸ†• Windows Enhancements

  • βœ… PowerShell Build Scripts - Native Windows build experience
  • βœ… Windows Terminal Support - Optimized for modern Windows terminals
  • βœ… Comprehensive Windows Documentation - Step-by-step Windows setup guide
  • βœ… Cross-Platform Configuration - Smart platform detection and path handling
  • βœ… Windows CI/CD - GitHub Actions for Windows testing
  • βœ… Enhanced Error Handling - Windows-specific troubleshooting

πŸš€ Quick Start for Windows

git clone https://github.com/brunokktro/eks-node-viewer-for-windows.git
cd eks-node-viewer-for-windows
.\build.ps1
Option 2: Go Install
go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest
Option 3: Download Binary

Download the latest Windows binary from Releases

πŸ“– For detailed Windows instructions, see WINDOWS.md

About

eks-node-viewer is a tool for visualizing dynamic node usage within a cluster. It was originally developed as an internal tool at AWS for demonstrating consolidation with Karpenter. It displays the scheduled pod resource requests vs the allocatable capacity on the node. It does not look at the actual pod resource usage.

This Windows-optimized fork adds comprehensive Windows support while maintaining full compatibility with Linux and macOS.

πŸͺŸ Windows-Specific Features

  • PowerShell Integration: Native PowerShell build and deployment scripts
  • Windows Terminal Optimization: Enhanced color support and Unicode rendering
  • Smart Path Handling: Automatic Windows path normalization and detection
  • Terminal Detection: Automatic detection of Command Prompt, PowerShell, and Windows Terminal
  • Windows CI/CD: Dedicated GitHub Actions for Windows testing and builds
Talks Using eks-node-viewer
Installation
Windows (Enhanced Support) πŸͺŸ
git clone https://github.com/brunokktro/eks-node-viewer-for-windows.git
cd eks-node-viewer-for-windows
.\build.ps1 -Generate -Test
Pre-built Binary
  1. Download the latest Windows binary from GitHub Releases
  2. Extract eks-node-viewer.exe to a directory in your PATH
  3. Verify installation:
    eks-node-viewer --version
    
Go Install
go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest

πŸ“– For comprehensive Windows setup instructions, see WINDOWS.md

Homebrew (macOS/Linux)
# Note: Use original repository for Homebrew
brew tap aws/tap
brew install eks-node-viewer
Manual (All Platforms)

Please either fetch the latest release or install manually using:

go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest

Note: This will install it to your GOBIN directory, typically ~/go/bin on Unix systems or %USERPROFILE%\go\bin on Windows if it is unconfigured.

Usage

Usage of ./eks-node-viewer:
  -attribution
    	Show the Open Source Attribution
  -context string
    	Name of the kubernetes context to use
  -disable-pricing
    	Disable pricing lookups
  -extra-labels string
    	A comma separated set of extra node labels to display
  -kubeconfig string
    	Absolute path to the kubeconfig file (default "~/.kube/config")
  -node-selector string
    	Node label selector used to filter nodes, if empty all nodes are selected
  -node-sort string
    	Sort order for the nodes, either 'creation' or a label name. The sort order can be controlled by appending =asc or =dsc to the value. (default "creation")
  -resources string
    	List of comma separated resources to monitor (default "cpu")
  -style string
    	Three color to use for styling 'good','ok' and 'bad' values. These are also used in the gradients displayed from bad -> good. (default "#04B575,#FFFF00,#FF0000")
  -v	Display eks-node-viewer version
  -version
    	Display eks-node-viewer version
Examples
# Standard usage
eks-node-viewer

# Windows PowerShell with environment variables
$env:AWS_PROFILE = "myprofile"
$env:AWS_REGION = "us-west-2"
eks-node-viewer

# Karpenter nodes only
eks-node-viewer --node-selector karpenter.sh/nodepool

# Display both CPU and Memory Usage
eks-node-viewer --resources cpu,memory

# Display extra labels, i.e. AZ
eks-node-viewer --extra-labels topology.kubernetes.io/zone

# Sort by CPU usage in descending order
eks-node-viewer --node-sort=eks-node-viewer/node-cpu-usage=dsc

# Windows-specific: Disable pricing for faster startup
eks-node-viewer --disable-pricing
Computed Labels

eks-node-viewer supports some custom label names that can be passed to the --extra-labels to display additional node information.

  • eks-node-viewer/node-age - Age of the node
  • eks-node-viewer/node-cpu-usage - CPU usage (requests)
  • eks-node-viewer/node-memory-usage - Memory usage (requests)
  • eks-node-viewer/node-pods-usage - Pod usage (requests)
  • eks-node-viewer/node-ephemeral-storage-usage - Ephemeral Storage usage (requests)
Default Options

You can supply default options to eks-node-viewer by creating a file named .eks-node-viewer in your home directory and specifying options there. The format is option-name=value where the option names are the command line flags:

Unix/Linux/macOS:

# select only Karpenter managed nodes
node-selector=karpenter.sh/nodepool

# display both CPU and memory
resources=cpu,memory

# show the zone and nodepool name by default
extra-labels=topology.kubernetes.io/zone,karpenter.sh/nodepool

# sort so that the newest nodes are first
node-sort=creation=asc

# change default color style
style=#2E91D2,#ffff00,#D55E00

Windows: The config file is located at %USERPROFILE%\.eks-node-viewer with the same format as above.

Troubleshooting
NoCredentialProviders: no valid providers in chain. Deprecated.

This CLI relies on AWS credentials to access pricing data if you don't use the --disable-pricing option. You must have credentials configured via ~/aws/credentials, ~/.aws/config, environment variables, or some other credential provider chain.

See credential provider documentation for more.

I get an error of creating client, exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1"

Updating your AWS cli to the latest version and updating your kubeconfig should resolve this issue.

Development

Building

Unix/Linux/macOS:

$ make build

Windows (PowerShell):

.\build.ps1

Cross-platform with GoReleaser:

$ make goreleaser
Windows Development
# Full development build with tests
.\build.ps1 -Generate -Test

# Clean build
.\build.ps1 -Clean

# Release build
.\build.ps1 -Release

🀝 Contributing

This fork welcomes contributions, especially those that improve Windows compatibility and user experience.

Areas for Contribution:
  • Windows-specific bug fixes
  • PowerShell script improvements
  • Windows Terminal enhancements
  • Documentation improvements
  • Cross-platform testing

πŸ“„ License

This project maintains the same Apache 2.0 license as the original AWS Labs project.

πŸ™ Acknowledgments

  • Original project by AWS Labs
  • Windows enhancements by brunokktro
  • All contributors to the original project

Directories ΒΆ

Path Synopsis
cmd
eks-node-viewer command
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
pkg
aws
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
client
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
config
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
model
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL