Release v0.30.0
Notes
Thank you to all that contributed with flushing out issues and enhancements for K9s!
I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev
and see if we're happier with some of the fixes!
If you've filed an issue please help me verify and close.
Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated!
Also big thanks to all that have allocated their own time to help others on both slack and on this repo!!
As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey,
please consider joining our sponsorship program and/or make some noise on social! @kitesurfer
On Slack? Please join us K9slackers
♫ Sounds Behind The Release ♭
Going back to the classics...
- Home For Christmas - Fats Domino
- Our Love - Al Jarreau
- Body And Soul - Louis Armstrong
- On The Dunes - Donald Fagen
- Ciao - Lucio Dalla
- Basin Street Blues - Louis Prima
A Word From Our Sponsors...
To all the good folks below that opted to pay it forward
and join our sponsorship program, I salute you!!
Sponsorship cancellations since the last release: 5! 🥹
🎄 Feature Release! 🎄
🎅 Merry Christmas to all and Best wishes for the new year!!🧑🎄
Videos Are In The Can!
Please dial K9s Channel for up coming content...
Breaking Bad!
☢️ !!Prior to installing v0.30.0!! Please be sure to backup your k9s configs directories or move them somewhere safe!!
☢️ Please watch the v0.30.0 Sneak peek series (links below) for detailed information.
☢️ Most K9s configuration files have either split or changed location or names on this drop!!
We recommend moving your current k9s config dirs to another location and start k9s from scratch and let it create and initialize the various configs
to their new spec and location. You can then use your existing setup and patch with the new layout/spec.
As of v0.30.0 all config files now use the*.yaml
extension. We did our best to update all the docs to match the new version.
If you find doc issues either file an issue or better yet submit a PR!
Some of you might say: You're on the roll their bud! Two breaking changes drops in a row!!
Per the wise words of my beloved Grand mama! One can't cook a decent meal without creating a mess!
Not to mention we're still at v0.x.y so Open season on breaking changes
is very much in full effect.
Tho I have tested this drop quite a bit, there is a strong chance that I've broken some stuff.
The key here is to walk the fine line of improving k9s code base and features set with minimal impact to you.
As you know by now, I am committed to ease the pain and resolve issues quickly to get you all back up and running.
From the scope changes in this release, I would caution that this drop will likely break you!
If so, worry not! We will fix the duds so we are Happy as a Hippo
once again.
There was a few issues with the way K9s persists it's configuration and various artifacts. So we rewrote it!
First and foremost all k9s related YAML resources, will now use the standard ".yaml" extension.
I think we've bloated the code checking for both extensions with no real actionable value!
As it stands the main K9s configuration config.yml
will now be static. These settings are now readonly! All the dynamic configurations that K9s manages now live in a new directory aka clusters
. The clusters directory manages your k8s cluster/context configurations. So things like active view, namespace, favorites, etc... now live in this directory. K9s configurations are still managed using either xdg XDG_CONFIG_HOME
or you can set K9S_CONFIG_DIR
to specify a your preferred k9s configs location. Also all config files will now use the ".yaml" extension vs ".yml"!!
So the main k9s configuration (static) now looks like this:
# $XDG_CONFIG_HOME/k9s/config.yaml
# File will be autogenerated will all the default fixins if not found in the config specification.
k9s:
liveViewAutoRefresh: false
refreshRate: 2
maxConnRetry: 5
readOnly: false
noExitOnCtrlC: false
ui: # NOTE! New level!!
enableMouse: false
headless: false
logoless: false
crumbsless: false
noIcons: false
skipLatestRevCheck: false
disablePodCounting: false
# ShellPod configuration applies to all your clusters
shellPod:
image: busybox:1.35.0
namespace: default
limits:
cpu: 100m
memory: 100Mi
# ImageScan config changed from v0.29.0!
imageScans:
enable: false
# Now figures exclusions ie blacklist namespaces or specific workload labels
blackList:
# Exclude the following namespaces for image vulscans!
namespaces:
- kube-system
- fred
# Exclude the following labels from image vulscans!
labels:
k8s-app:
- kindnet
- bozo
env:
- dev
logger:
tail: 100
buffer: 5000
sinceSeconds: -1
fullScreenLogs: false
textWrap: false
showTime: false
thresholds:
cpu:
critical: 90
warn: 70
memory:
critical: 90
warn: 70
Next context specific configurations that are managed by you and k9s live in the XDG data directory
i.e $XDG_DATA_HOME/k9s/clusters
or $K9S_CONFIG_DIR/clusters
if the env var is set.
$XDG_DATA_HOME/k9s
// Clusters tracks visited kubeconfig cluster/contexts
├── clusters
│ ├── fred
│ │ └── bozo
│ │ └── config.yaml
│ ├── bozorg
│ │ ├── kind-bozo-1
│ │ │ └── config.yaml
│ │ ├── kind-bozo-2
│ │ │ └── config.yaml
│ │ └── kind-bozo-3
│ │ └── config.yaml
│ └── bumblebeetuna
│ └── blee
│ └── config.yaml
└── skins
├── black_and_wtf.yaml
├── dracula.yaml
├── in_the_navy.yml
├── ...
Now looking at a given context configuration i.e cluster-1/context-1/config.yaml
# $XDG_DATA_HOME/k9s/clusters/bumblebeetuna/blee/config.yaml
k9s:
cluster: bumblebeetuna
readOnly: false # [New!] you can now single out a given context and make it readonly. Woof!
skin: in_the_navy # [NEW!] you can also skin individual contexts. Woof Woof!
namespace:
active: all
lockFavorites: false
favorites:
- all
- kube-system
- default
view:
active: dp
featureGates:
nodeShell: false
portForwardAddress: localhost
Transient artifacts ie k9s logs, screen-dumps, benchmarks etc now live in the state config dir.
$XDG_STATE_HOME/k9s
├── k9s.log # K9s log files
└── screen-dumps
└── bumblebeetuna # Screen dumps location for context blee
└── blee
└── deployments-kube-system-1703018199222861000.csv
If you get stuck or if my instructions are just clear as mud
... k9s info
is always your friend!!
I feel this is an improvement (tho I might be unanimous on this!) especially for folks dealing with multi-clusters or swapping out there kubeconfigs...
NOTE! Paint is still fresh on this deal. Proceed with caution and please help us flush this feature out!
Got Prompt?
In this drop, we've also gave the k9s command prompt aka :xxx
some love.
You have the ability to specify filter directly in the prompt.
So for example, you can now run something like :po /fred
to run pod view with a filter to just show pods containing fred
. Likewise :po k8s-app=fred,env=blee
to filter by labels.
And now for theKrampus
special... you can see pods in a different context all together via :pod @ctx-2
.
Finally you can combo and send the whole enchilada
via :po k8s-app=fred /blee ns-1 @ctx-x
Did I mention with completion where applicable? Yes Please!!
Compliments of Jayson Wang. Be sure to thank him!!
Put these frequent flyers command in an alias and now you can nav your clusters with even more style
!
All Is Love?
🎵 On The twentieth day of Christmas my true love gave to me... Ten worklords a-leaping??...
🎵
This is a feature reported by many of you and its (finally!) here. As of this drop, we intro the workload
view aka wk
which is similar to kubetcl get all
. I was reluctant to intro it given the potential hazards on larger clusters but figured why not? YOLO. I think using it in combo with the prompt updates it could pack a serious punch to observe workload related artifacts.
The Black List...
As it seems customary with all k9s new features, folks want to turn them off ;(
The Vulscan
feature did not get out unscaped ;(
As it was rightfully so pointed out, you may want to opted out scans for images that you do not control.
Tho I think it might be a good idea to run wide open once in a while to see if your cluster has any holes??
For this reason, we've opted to intro a blacklist section under the image scan configuration to exclude certain images from the scans.
Here is a sample configuration:
k9s:
liveViewAutoRefresh: false
refreshRate: 2
ui:
enableMouse: false
headless: false
logoless: false
crumbsless: false
noIcons: false
imageScans:
enable: true
blackList:
# Skip scans on these namespaces
namespaces:
- ns-1
- ns-2
# Skip scans for pods matching these labels
labels:
- app:
- fred
- blee
- duh
- env:
- dev
This is a bit of a blur now, but I think that it! We hope you guys will dig this drop or at least the concepts as likely this is going to be Open Season
on bugs ;(
🎵 On The second day of Christmas my true love gave to me... Eleven buggers bugging??...
🎵
Lastly looks like the sponsorship stream is down to an alarming trickle so if you dig this project and find it useful be sure to give til it hurts!
🎅 Best wishes to you and yours for good health and happiness this holiday season!! 🎉
AndJoy!
Fernand
Resolved Issues
- #2346 k9s should not write state to config.yaml
- #2335 Restore 0.28 column order on pod view bug
- #2331 Set a shortcut key to run Vuln Scanning on a resource. Don't scan every resource at every startup.
- #2283 Adding auto complete in search bar
Contributed PRs
Please be sure to give Big Thanks!
and ATTA Girls/Boys!
to all the fine contributors for making K9s better for all of us!!
- #2357 Added ln check for snap
- #2350 Add symlink into snap
- #2348 Fix(misc plugins): split up multiline commands, use less -K everywhere
- #2343 Passing on the correct suggestion parameters
- #2341 Adding value, yaml and describe views to helm-history
- #2340 Add pkgx to installation section
© 2023 Imhotep Software LLC. All materials licensed under Apache v2.0