diff --git a/Makefile b/Makefile index cd6a6b69..e9e7f73a 100644 --- a/Makefile +++ b/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} diff --git a/change_logs/release_v0.31.5.md b/change_logs/release_v0.31.5.md new file mode 100644 index 00000000..f73584c8 --- /dev/null +++ b/change_logs/release_v0.31.5.md @@ -0,0 +1,51 @@ + + +# 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!! + +--- + + © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/cmd/root.go b/cmd/root.go index 883f5de6..2beadb4f 100644 --- a/cmd/root.go +++ b/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()) diff --git a/go.mod b/go.mod index 759b0632..747bf6ee 100644 --- a/go.mod +++ b/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 diff --git a/go.sum b/go.sum index 311b0788..c1b9add3 100644 --- a/go.sum +++ b/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= diff --git a/internal/config/config.go b/internal/config/config.go index c4d5109b..a3fa3bef 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -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 { diff --git a/internal/config/data/types.go b/internal/config/data/types.go index 5d7c0214..4981be38 100644 --- a/internal/config/data/types.go +++ b/internal/config/data/types.go @@ -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. diff --git a/internal/dao/types.go b/internal/dao/types.go index d51d25e8..da6fc7ff 100644 --- a/internal/dao/types.go +++ b/internal/dao/types.go @@ -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 } diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 00a04f56..e9caf609 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -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.