2024: A new frontier for Kubernetes package management
Jake Page
Posted on August 19, 2024
2024 has been an action-packed year for Glasskube. In February, we launched a Kubernetes manager that was initially developed internally by our team following an unsuccessful product launch that failed to take off in part due to limitations in currently used package management tooling. After this lukewarm Kubernetes operator debut, Glasskube founders Philip and Louis shared their launch post-mortem on Hacker News. They discovered that many others were experiencing similar frustrations with the existing package management solutions for Kubernetes. Recognizing this shared pain, a product pivot became inevitable, and the Glasskube package manager began to take shape.
Now, it’s only mid-August of the same year, and we are already closing in on 1.5 million downloads, 2.6k GitHub stars, and 50+ contributors. We've witnessed significant growth in adoption, features, and use cases. As we continue to evolve, we wanted to take a moment to reflect on the work we've accomplished so far. This blog post serves as a comprehensive update, a flag in the road, to share everything you need to know about the current state of Glasskube, what’s on the horizon, and how you can help shape the future of Kubernetes package management.
Welcome to the new frontier of Kubernetes Package Management.
Introduction
Why Kubernetes needs better package management
Since its inception Kubernetes as a container orchestration system has never stopped growing in popularity and its adoption keeps increasing. In recent years, the number of available packages has grown from about 100 to over 800. This growth by all means is very impressive and shows the maturity of the Kubernetes ecosystem, but it has also shined a light on the problems with current package management tools. Developers often struggle with:
Complex and highly bespoke workflows
Time-consuming and many times manual processes
An over-reliance on current package manager tooling that leave a lot to be desired.
These issues can lead to:
More work for operations teams
Non-scalable workflows
Possible security risks
It's clear that Kubernetes needs a way to manage packages that evolve in the way that modern-day Kubernetes clusters are used, that is in a more automated and overall declarative way.
What is Glasskube?
Glasskube is an open-source package manager made for Kubernetes. It aims to make installing, updating, and setting up packages easier and faster. In fact, it can be up to 20 times quicker than tools like Helm or Kustomize.
Glasskube took ideas from easy-to-use package managers like Homebrew
and npm
. It offers two ways to manage packages:
A graphical user interface (GUI)
A command-line interface (CLI)
glasskube serve # to access the Glasskube UI
Current tools: Helm and Kustomize
Helm and Kustomize are two main tools for managing Kubernetes packages. They help set up and run applications in Kubernetes, but work differently.
Helm uses templates to create Kubernetes yaml files. It packages apps into "charts," which are sets of YAML files. Some of it’s benefits are:
Configuring complex apps
It shines at app installation
Rolling back changes is straightforward
It’s highly adopted
Kustomize takes a different approach and many times works in conjunction with Helm. It lets users:
Set up basic app configurations
Add changes for different environments
Avoid complex templating
Problems with existing tools
While Helm and Kustomize are useful, they can cause issues for developers.
Helm can be tricky:
Hard to learn due to complex templates
Customizing apps for different setups can be confusing
CRD updates are not possible
Updates are clunky
Helm is inherently one-sided, after installation its job is done.
Kustomize has its own problems:
No built-in way to manage packages
Users need other tools to share their setups
Handling complex dependencies can be hard
Less automated than Helm for managing app lifecycles
These issues show why a simpler package manager for Kubernetes is needed. This is where Glasskube comes in, aiming to make the whole process easier.
Care to support us?
If this is the first time you've heard of Glasskube, we are working to build the next-generation Package Manager for Kubernetes
.
If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.
⭐️ Star us on GitHub 🙏
Glasskube explained
How Glasskube works
Glasskube makes managing Kubernetes packages easier. It offers two ways to use it:
A graphical interface (GUI)
A command-line interface (CLI)
Glasskube uses a central package repository called the Glasskub Hub that:
Aware of package dependencies
Works well with GitOps
Updates packages automatically
Allows for multiple public and private package repositories to be referenced
Probably most importantly, Glasskube has client and server-side components. The server-side components constantly track the health status and desired state of the installed packages. The server-side components are the:
PackageController: communicates with the Kubernetes API to deploy and reconcile packages.
PackageInfoController: reads package manifests from the configured backend package repositories to determine the state of truth of the cluster packages.
Main features
Glasskube has several key features:
Solving common issues
Glasskube directly addressed gaps that other Kubernetes package managers have:
It's easier to use than Helm, which can be hard for new users
It handles dependencies better than Kustomize, which doesn't have built-in package management
-
It works well with GitOps, making it easier to:
- Roll back changes
- Upgrade apps
- Work together as a team
Package scopes help to be more efficient with package installation and package sharing. Ex. if multiple packages depend on cert-manager, one instance will be enough to serve more than one package.
Have easy access to packages with frontends without having to manually portforward
How to set up Glasskube
What you need to install
Before you start, make sure you have:
A working Kubernetes cluster, minikube is an easy alternative for a quick local setup.
kubectl installed on your computer
Step-by-step installation guide
Here's how to set up Glasskube:
Install Glasskube CLI: Open your terminal and run on MacOs:
brew install glasskube/tap/glasskube
For other installation methods click here.
Bootstrap Glasskube to install the server-side components by running:
glasskube bootstrap
Check the installation Run:
glasskube version
Make sure both Glasskube and the package-operator are installed and running the same version:
glasskube: v0.17.0
package-operator: v0.17.0
Using Glasskube: Key functions
Access the GUI
Glasskube makes it easy to add and remove packages in your Kubernetes cluster:
To add a package:
glasskube serve
Install packages
Any package available in the Glasskube hub is ready to be installed
glasskube install <package-name>
This command will then request confirmation on the package version before installing.
To remove a package:
glasskube uninstall <package-name>
Managing package dependencies
Glasskube takes care of package dependencies for you:
When you install a package, it automatically installs any required dependencies
This saves time and prevents errors from missing components
In the example below upon installing the
keptn
package, an instance of cert-manager will also be installed if not already present in the cluster.
Handling package configurations
You can easily change or view package settings with Glasskube, note that not all packages have custom value configurations:
In the example below, the caddy-ingress-controller has the automaticHTTPS
value exposed, where you can add an email address to enable HTTPS functionality.
Working with GitOps
Glasskube works well in GitOps workflows, letting users control their Kubernetes packages desired state in Git means:
Your Kubernetes package setup stays in sync with your files stored in Git
You can use tools like ArgoCD or Flux to apply the desired package state stored in Git
Changes are easy to track and undo if needed
Cluster setup can be achieved in minutes instead of hours.
We have a fully operational Glasskube GitOps template here. Follow the steps in the README.md file to get started.
Automatic updates with Renovate
Glasskube keeps packages in Glasskube hub always updated to the latest stable versions:
Enable
auto-updates
or get notified when new versions are availableShows package information including the current version and available versions for packages using
glasskube list
Running
glasskube update <packageName>
will install the newest available version of the packageAlso updating manually through the GUI is also an option.
Adding custom package repositories
You can now add multiple package repositories for Glasskube to read from, this is be useful for:
Companies that have their own private package lists
Teams who want to manage internal packages more easily
It allows following compliance rules for private packages that can’t be exposed publicly
Add a public repository by running:
glasskube repo add <name> <url>
Add private repositories
glasskube repo add <name> <url> --auth (none|basic|bearer)
Glasskube vs. other package managers
How it differs from Helm and Kustomize
Glasskube offers a new way to manage Kubernetes packages, addressing limitations found in older tools like Helm and Kustomize. It offers features such as two-way communication between the package and package manager, enhanced automation, and a more declarative approach to package management. Here's how Glasskube stands out:
Automatic Notifications: Glasskube keeps track of installed versions and can automatically notify users of new installations, if desired.
Seamless CRD Updates: It updates Custom Resource Definitions (CRDs) smoothly, ensuring everything remains in sync.
Full GitOps Integration: Glasskube enables a complete GitOps workflow, which wasn't possible before.
Efficient Control: The additional layer of abstraction through package scopes allows for more efficient and granular control over package configuration and usage.
Business service offerings
Companies that offer commercial tools with self-hosting options often leave money on the table. Custom self-hosting installations and management might not be within your company’s expertise or bandwidth. A Glasskube Native package can be the solution you need. We can collaborate with you to create standardized, customizable, and highly scalable packages tailored for a variety of self-hosted environments, all using Glasskube packaging. This approach ensures a seamless experience for your customers while maximizing your revenue potential.
If you think that Glasskube Native packages could benefit your business, book a free demo call with us. Our team would be delighted to assist you.
What's next for Glasskube
New features coming soon
Glasskube is adding new tools to make package management easier:
These new features will help users manage their Kubernetes packages better.
Wrap-up
Kubernetes package management has been stagnant and unable to keep up with the fast growth and evolution of the general Kubernetes ecosystem. Glasskube aims to make Kubernetes package management easier, more declarative, flexible and far less reliant on rigid templating processes that require multiple tools to get the job done.
As Glasskube grows, we will need help from users and developers to build in the right direction. What frustrates you the most about current Kubernetes package managers? How can we improve?
For teams using Kubernetes, we hope tools like Glasskube will be increasingly adopted and applied in complex environments.
2024 has been an incredible breakout year so far, but we have only just begun.
If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.
Posted on August 19, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
August 28, 2024