parent
356c56138e
commit
ff17fff286
2
Makefile
2
Makefile
|
|
@ -11,7 +11,7 @@ DATE ?= $(shell TZ=UTC date -j -f "%s" ${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:
|
|||
else
|
||||
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
|
||||
endif
|
||||
VERSION ?= v0.31.4
|
||||
VERSION ?= v0.31.5
|
||||
IMG_NAME := derailed/k9s
|
||||
IMAGE := ${IMG_NAME}:${VERSION}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/>
|
||||
|
||||
# Release v0.31.5
|
||||
|
||||
## 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](https://github.com/sponsors/derailed) and/or make some noise on social! [@kitesurfer](https://twitter.com/kitesurfer)
|
||||
|
||||
On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM)
|
||||
|
||||
## Maintenance Release!
|
||||
|
||||
😱 More aftermath... 😱
|
||||
|
||||
Thank you all for pitching in and helping flesh out issues!!
|
||||
|
||||
Please make sure to add gory details to issues ie relevant configs, debug logs, etc...
|
||||
|
||||
Comments like: `same here!` or `me to!` doesn't really cut it for us to zero in ;(
|
||||
Everyone has slightly different settings/platforms so every little bits of info helps with the resolves even if seemingly irrelevant.
|
||||
Thank you!!
|
||||
|
||||
---
|
||||
|
||||
## Videos Are In The Can!
|
||||
|
||||
Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content...
|
||||
|
||||
* [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE)
|
||||
* [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4)
|
||||
* [Vulnerability Scans](https://youtu.be/ULkl0MsaidU)
|
||||
|
||||
---
|
||||
|
||||
## Resolved Issues
|
||||
|
||||
* [#2466](https://github.com/derailed/k9s/issues/2466) Panic: index out of range [0] with length 0
|
||||
* [#2465](https://github.com/derailed/k9s/issues/2465) v0.31.4 - panic; no client connection detected - with feelings!!
|
||||
|
||||
---
|
||||
|
||||
<img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||
11
cmd/root.go
11
cmd/root.go
|
|
@ -114,6 +114,12 @@ func loadConfiguration() (*config.Config, error) {
|
|||
|
||||
k8sCfg := client.NewConfig(k8sFlags)
|
||||
k9sCfg := config.NewConfig(k8sCfg)
|
||||
conn, err := client.InitConnection(k8sCfg)
|
||||
k9sCfg.SetConnection(conn)
|
||||
if err != nil {
|
||||
return k9sCfg, err
|
||||
}
|
||||
|
||||
if err := k9sCfg.Load(config.AppConfigFile); err != nil {
|
||||
return k9sCfg, err
|
||||
}
|
||||
|
|
@ -122,11 +128,6 @@ func loadConfiguration() (*config.Config, error) {
|
|||
log.Error().Err(err).Msgf("config refine failed")
|
||||
return k9sCfg, err
|
||||
}
|
||||
conn, err := client.InitConnection(k8sCfg)
|
||||
k9sCfg.SetConnection(conn)
|
||||
if err != nil {
|
||||
return k9sCfg, err
|
||||
}
|
||||
// Try to access server version if that fail. Connectivity issue?
|
||||
if !conn.CheckConnectivity() {
|
||||
return k9sCfg, fmt.Errorf("cannot connect to context: %s", k9sCfg.K9s.ActiveContextName())
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -13,7 +13,7 @@ require (
|
|||
github.com/cenkalti/backoff/v4 v4.2.1
|
||||
github.com/derailed/popeye v0.11.2
|
||||
github.com/derailed/tcell/v2 v2.3.1-rc.3
|
||||
github.com/derailed/tview v0.8.2
|
||||
github.com/derailed/tview v0.8.3
|
||||
github.com/fatih/color v1.16.0
|
||||
github.com/fsnotify/fsnotify v1.7.0
|
||||
github.com/fvbommel/sortorder v1.1.0
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -389,8 +389,8 @@ github.com/derailed/popeye v0.11.2 h1:8MKMjYBJdYNktTKeh98TeT127jZY6CFAsurrENoTZC
|
|||
github.com/derailed/popeye v0.11.2/go.mod h1:HygqX7A8BwidorJjJUnWDZ5AvbxHIU7uRwXgOtn9GwY=
|
||||
github.com/derailed/tcell/v2 v2.3.1-rc.3 h1:9s1fmyRcSPRlwr/C9tcpJKCujbrtmPpST6dcMUD2piY=
|
||||
github.com/derailed/tcell/v2 v2.3.1-rc.3/go.mod h1:nf68BEL8fjmXQHJT3xZjoZFs2uXOzyJcNAQqGUEMrFY=
|
||||
github.com/derailed/tview v0.8.2 h1:8b+QwVECV1lZ6VV7Vf1tergpJxJ+ReA/JhIBYyUVSFI=
|
||||
github.com/derailed/tview v0.8.2/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
|
||||
github.com/derailed/tview v0.8.3 h1:jhN7LW7pfCWf7Z6VC5Dpi/1usavOBZxz2mY90//TMsU=
|
||||
github.com/derailed/tview v0.8.3/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
|
||||
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
|
||||
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
|
||||
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ func NewConfig(ks data.KubeSettings) *Config {
|
|||
}
|
||||
}
|
||||
|
||||
// ContextHotKeysPath returns a context specific hotkeys file spec.
|
||||
// ContextHotkeysPath returns a context specific hotkeys file spec.
|
||||
func (c *Config) ContextHotkeysPath() string {
|
||||
ct, err := c.K9s.ActiveContext()
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ type KubeSettings interface {
|
|||
// CurrentClusterName returns the name of the current cluster.
|
||||
CurrentClusterName() (string, error)
|
||||
|
||||
// CurrentNamespace returns the name of the current namespace.
|
||||
// CurrentNamespaceName returns the name of the current namespace.
|
||||
CurrentNamespaceName() (string, error)
|
||||
|
||||
// ContextNames() returns all available context names.
|
||||
// ContextNames returns all available context names.
|
||||
ContextNames() (map[string]struct{}, error)
|
||||
|
||||
// CurrentContext returns the current context configuration.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ type Factory interface {
|
|||
// DeleteForwarder deletes a pod forwarder.
|
||||
DeleteForwarder(path string)
|
||||
|
||||
// Forwards returns all portforwards.
|
||||
// Forwarders returns all portforwards.
|
||||
Forwarders() watch.Forwarders
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ type NodeMaintainer interface {
|
|||
|
||||
// Loggable represents resources with logs.
|
||||
type Loggable interface {
|
||||
// TaiLogs streams resource logs.
|
||||
// TailLogs streams resource logs.
|
||||
TailLogs(ctx context.Context, opts *LogOptions) ([]LogChan, error)
|
||||
}
|
||||
|
||||
|
|
@ -158,10 +158,10 @@ type Logger interface {
|
|||
|
||||
// ContainsPodSpec represents a resource with a pod template.
|
||||
type ContainsPodSpec interface {
|
||||
// Get PodSpec of a resource
|
||||
// GetPodSpec returns a podspec for the resource.
|
||||
GetPodSpec(path string) (*v1.PodSpec, error)
|
||||
|
||||
// Set Images for a resource
|
||||
// SetImages sets container image.
|
||||
SetImages(ctx context.Context, path string, imageSpecs ImageSpecs) error
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
name: k9s
|
||||
base: core20
|
||||
version: 'v0.31.4'
|
||||
version: 'v0.31.5'
|
||||
summary: K9s is a CLI to view and manage your Kubernetes clusters.
|
||||
description: |
|
||||
K9s is a CLI to view and manage your Kubernetes clusters. By leveraging a terminal UI, you can easily traverse Kubernetes resources and view the state of your clusters in a single powerful session.
|
||||
|
|
|
|||
Loading…
Reference in New Issue