Back to Blog

Releaseยท

Aptakube 1.4: Faster and smaller than ever before ๐Ÿ› ๏ธ

This release increases compatibility with different Kubernetes distributions, reduces binary size and improves overall app performance. And oh, there's a command palette too!

โŒจ๏ธ Command Palette

This release includes the first version of the Command Palette for Aptakube.

You may have used this before on other places like Slack, Discord or GitHub. It's a much quicker way to navigate between views via keyboard.

On Aptakube, you can start by pressing Ctrl/Cmd + k to enable the command palette. From there you can type the resource type you're looking for, e.g: pods, and hit enter.

You can also use the command palette to go back to the initial context selection screen, this action is named Switch Context.

I initially had a lot of improvements for keyboard navigation planned to version 1.4, as well as a much more flexible command palette, but unfortunately I had to postpone some of those to the next version.

๐Ÿ› ๏ธ Improved Compatibility (and Speed!)

Compatibility is something that I take very seriously. Aptakube has to work with all existing Kubeconfig, and if it doesn't, it's a bug that I need to fix. Over the last few weeks I found a couple of scenarios in which Aptakube did not work, mostly due to issues with TLS.

In this release we've switched from the OpenSSL stack to Rustls, a modern TLS library in Rust. This move not only means that Aptakube works with a larger number of clusters, but also comes with some pretty exciting performance improvements.

Aptakube does a lot of API calls to the Kubernetes API Server, so any improvements on the network stack will have a positive outcome on user experience. In general you can expect faster TLS connections, faster to send/receive bytes and less memory usage.

Note: This has been thoroughly tested by me in various different clusters, as well as by some beta testers. If this release breaks something on your setup, please downgrade to Aptakube 1.3.2 and open a GitHub issue or reach out to me on Discord.

๐Ÿ˜Ž Faster loading and reduced pressure on etcd

Aptakube uses the List + Watch operations of the API servers to populate the content you see on the app.

Up until now, Aptakube used the Most Recent semantics which meant that every API call would result in a query to etcd. When you consider all the operators running on the cluster, and add all the kubectl and Aptakube users who are constantly hitting etcd to get the list of objects, etcd can become slower to respond, impacting everyone.

Starting from this release, Aptakube uses the Any semantics which means that responses may be served from cache by the API Server, reducing the burden on etcd. This may reduce the time it takes for Aptakube to show you the list of objects.

๐Ÿ”ป Reduced Binary Size

Before and after binary size reduction

In this release we also made some tuning on the Rust compiler to further reduce the binary size, as well as runtime optimisation that may not be that apparent as Aptakube has always been pretty snappy.

These are the results on binary size reduction:

  • macOS: 45.7MB โ†’ 23.7MB (48% smaller ๐Ÿ”ฅ)
  • Windows: 21MB โ†’ 12.5MB (40% smaller)
  • Linux: (.deb): 13.8MB โ†’ 7.9MB (42% smaller)
  • Linux: (AppImage): 68MB โ†’ 66MB (2% smaller ๐Ÿคทโ€โ™‚๏ธ)

๐Ÿž Bugs Fixed

A surprisingly low number of bugs fixed on this release, but it's an important one!

  • Tabs was not working on the YAML Editor, it used to move the cursor out of the editor, but it now works just like in any other editor.