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
|
else
|
||||||
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
|
DATE ?= $(shell date -u -d @${SOURCE_DATE_EPOCH} +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
endif
|
endif
|
||||||
VERSION ?= v0.31.4
|
VERSION ?= v0.31.5
|
||||||
IMG_NAME := derailed/k9s
|
IMG_NAME := derailed/k9s
|
||||||
IMAGE := ${IMG_NAME}:${VERSION}
|
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)
|
k8sCfg := client.NewConfig(k8sFlags)
|
||||||
k9sCfg := config.NewConfig(k8sCfg)
|
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 {
|
if err := k9sCfg.Load(config.AppConfigFile); err != nil {
|
||||||
return k9sCfg, err
|
return k9sCfg, err
|
||||||
}
|
}
|
||||||
|
|
@ -122,11 +128,6 @@ func loadConfiguration() (*config.Config, error) {
|
||||||
log.Error().Err(err).Msgf("config refine failed")
|
log.Error().Err(err).Msgf("config refine failed")
|
||||||
return k9sCfg, err
|
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?
|
// Try to access server version if that fail. Connectivity issue?
|
||||||
if !conn.CheckConnectivity() {
|
if !conn.CheckConnectivity() {
|
||||||
return k9sCfg, fmt.Errorf("cannot connect to context: %s", k9sCfg.K9s.ActiveContextName())
|
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/cenkalti/backoff/v4 v4.2.1
|
||||||
github.com/derailed/popeye v0.11.2
|
github.com/derailed/popeye v0.11.2
|
||||||
github.com/derailed/tcell/v2 v2.3.1-rc.3
|
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/fatih/color v1.16.0
|
||||||
github.com/fsnotify/fsnotify v1.7.0
|
github.com/fsnotify/fsnotify v1.7.0
|
||||||
github.com/fvbommel/sortorder v1.1.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/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 h1:9s1fmyRcSPRlwr/C9tcpJKCujbrtmPpST6dcMUD2piY=
|
||||||
github.com/derailed/tcell/v2 v2.3.1-rc.3/go.mod h1:nf68BEL8fjmXQHJT3xZjoZFs2uXOzyJcNAQqGUEMrFY=
|
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.3 h1:jhN7LW7pfCWf7Z6VC5Dpi/1usavOBZxz2mY90//TMsU=
|
||||||
github.com/derailed/tview v0.8.2/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
|
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/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 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
|
||||||
github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2/go.mod h1:WHNsWjnIn2V1LYOrME7e8KxSeKunYHsxEm4am0BUtcI=
|
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 {
|
func (c *Config) ContextHotkeysPath() string {
|
||||||
ct, err := c.K9s.ActiveContext()
|
ct, err := c.K9s.ActiveContext()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ type KubeSettings interface {
|
||||||
// CurrentClusterName returns the name of the current cluster.
|
// CurrentClusterName returns the name of the current cluster.
|
||||||
CurrentClusterName() (string, error)
|
CurrentClusterName() (string, error)
|
||||||
|
|
||||||
// CurrentNamespace returns the name of the current namespace.
|
// CurrentNamespaceName returns the name of the current namespace.
|
||||||
CurrentNamespaceName() (string, error)
|
CurrentNamespaceName() (string, error)
|
||||||
|
|
||||||
// ContextNames() returns all available context names.
|
// ContextNames returns all available context names.
|
||||||
ContextNames() (map[string]struct{}, error)
|
ContextNames() (map[string]struct{}, error)
|
||||||
|
|
||||||
// CurrentContext returns the current context configuration.
|
// CurrentContext returns the current context configuration.
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ type Factory interface {
|
||||||
// DeleteForwarder deletes a pod forwarder.
|
// DeleteForwarder deletes a pod forwarder.
|
||||||
DeleteForwarder(path string)
|
DeleteForwarder(path string)
|
||||||
|
|
||||||
// Forwards returns all portforwards.
|
// Forwarders returns all portforwards.
|
||||||
Forwarders() watch.Forwarders
|
Forwarders() watch.Forwarders
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -101,7 +101,7 @@ type NodeMaintainer interface {
|
||||||
|
|
||||||
// Loggable represents resources with logs.
|
// Loggable represents resources with logs.
|
||||||
type Loggable interface {
|
type Loggable interface {
|
||||||
// TaiLogs streams resource logs.
|
// TailLogs streams resource logs.
|
||||||
TailLogs(ctx context.Context, opts *LogOptions) ([]LogChan, error)
|
TailLogs(ctx context.Context, opts *LogOptions) ([]LogChan, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -158,10 +158,10 @@ type Logger interface {
|
||||||
|
|
||||||
// ContainsPodSpec represents a resource with a pod template.
|
// ContainsPodSpec represents a resource with a pod template.
|
||||||
type ContainsPodSpec interface {
|
type ContainsPodSpec interface {
|
||||||
// Get PodSpec of a resource
|
// GetPodSpec returns a podspec for the resource.
|
||||||
GetPodSpec(path string) (*v1.PodSpec, error)
|
GetPodSpec(path string) (*v1.PodSpec, error)
|
||||||
|
|
||||||
// Set Images for a resource
|
// SetImages sets container image.
|
||||||
SetImages(ctx context.Context, path string, imageSpecs ImageSpecs) error
|
SetImages(ctx context.Context, path string, imageSpecs ImageSpecs) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: k9s
|
name: k9s
|
||||||
base: core20
|
base: core20
|
||||||
version: 'v0.31.4'
|
version: 'v0.31.5'
|
||||||
summary: K9s is a CLI to view and manage your Kubernetes clusters.
|
summary: K9s is a CLI to view and manage your Kubernetes clusters.
|
||||||
description: |
|
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.
|
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