Skip to content

Commit

Permalink
docs(website): improve comparision documentation
Browse files Browse the repository at this point in the history
Signed-off-by: Philip Miglinci <[email protected]>
  • Loading branch information
pmig committed Feb 13, 2024
1 parent d184784 commit 0bbc986
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 19 deletions.
27 changes: 27 additions & 0 deletions website/docs/04_comparisons/01_helm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
slug: helm
sidebar_label: With Helm
title: Glasskube vs Helm Comparison
description: Discover Glasskube, a fresh Kubernetes package manager challenging Helm's shortcomings. Explore automatic updates, dependency management and much more.
---

# Glasskube vs Helm Comparison

In late 2023, we published a [blog post](https://glasskube.eu/en/r/knowledge/5-helm-shortcomings/) about, what we thought, were the biggest shortcomings of [Helm](https://helm.sh/)—undoubtedly the most popular package manager for Kubernetes.
After receiving *TONS* of feedback from the community we realized that we were not alone in being unsatisfied with the status quo.
That is why we started thinking about and prototyping Glasskube—a *new* vision of what a package manager for Kubernetes could look like.

We take a new approach on multiple features, but want to highlight the 5 most important differences that got either just released, are in development right now or are on our roadmap and will be started soon:

1. **Package updates**<br/>Glasskube provides the possibility to install packages in `@latest` version which leads to automatic updates or install a package in specific version and explore new versions via the `outdated` command and upgrade them with the `upgrade` command.
2. **Dependency management**<br/>Glasskube offers—as you would expect—dependency management out of the box. Multiple packages can require a specific package (e.g. `cert-manager`) being installed and updated in the Kubernetes cluster and its preferred namespace.
3. **Custom Resources Definition (CRD) changes**<br/>Upgrading CRDs will be taken care of by Glasskube to ensure CRs and its operators don't get out-of-sync.
4. **Cloud-Native architecture**<br/>As Helm's architecture is purely client side, it renders the templates and applies them via the Kubernetes API. Although releases are stored in Kubernetes Secrets there is no first party server-side component for helm making it harder to install packages via the GitOps approach.
5. **Kubernetes version upgrade compatibility**<br/>Glasskube tries to make Kubernetes version upgrades as smooth as possible by automatically testing all package (combinations) across multiple Kubernetes versions.

We acknowledge that Helm, with its flexibility and extensibility, has its place in a seasoned DevOps engineer's tool belt, and it's status as one of the most popular methods to deploy applications in Kubernetes is not without merit.
However, Helm's extensive flexibility comes, at least in part, at the cost of the user, which is especially true for junior and novice Kubernetes administrators.
That is why Glasskube is laser focused on delivering a tool for administrators who need to only manage a couple of applications, but who also need to make sure that a multitude of infrastructure components are kept up-to-date and secure throughout multiple Kubernetes version upgrades while also adapting to inevitable breaking changes.

With that being said, **Glasskube is not a full replacement of Helm**, neither do we aspire for it to become one in the future.
Rather, Glasskube is designed to integrate with established workflows and work in synergy with existing tools, such as Helm, Flux, ArgoCD and many more.
21 changes: 21 additions & 0 deletions website/docs/04_comparisons/02_timoni.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
slug: timoni
sidebar_label: With Timoni
title: Glasskube vs Timoni Comparison
description: Timoni installs and updates cloud-native applications as bundles (OCI images) with a great support for configuration, but it requires users to create its own bundles.
---

# Glasskube vs Timoni Comparison

[Timoni](https://helm.sh/) was created by [Stefan Prodman](https://github.com/stefanprodan) to improve bundling cloud native applications and their lifecycle management.

Timoni is closer related to Helm than Glasskube, but brings some features and new approaches to the table Helm doesn't offer.
Its bundles are OCI images, so the only way to install these bundles is to publish them first to an OCI registry,
which makes additional security features like image (co-)singing possible.
Similar to Glasskube it performs garbage collection of orphan resources after an uninstallation operation.

Timoni is generally more mature than Glasskube. However, it doesn't prioritize making standard package installation and upgrades easy.
As of now, there's no plan for GUI support either. Users have to bundle their own applications and provide their registry for images.

Glasskube is not yet compatible with Timoni or its bundles, but in a similar way how Glasskube supports helm charts, Timoni bundles can be supported.
There is currently an [open discussion](https://github.com/glasskube/glasskube/discussions/242) to provide Timoni support. Let us know what you think!
30 changes: 30 additions & 0 deletions website/docs/04_comparisons/03_olm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
slug: olm
sidebar_label: With OLM
title: Glasskube vs OLM Comparison
description: The Operator Lifecycle Manager (OLM) was introduced by Red Hat to manage operators. Glasskube supports all kinds of cloud-native packages and a GUI.
---

# Glasskube vs Operator Lifecycle Manager (OLM) Comparison

The operator framework was [introduced by RedHat in 2018](https://www.redhat.com/en/blog/introducing-operator-framework-building-apps-kubernetes) based on a concept from 2016.

The two most popular projects are the Operator SDK and the Operator Lifecycle Management.

The [Operator SDK](https://github.com/operator-framework/operator-sdk) is a wrapper for Kubernetes SIGS project [Kubebuilder](https://github.com/kubernetes-sigs/kubebuilder).
An SDK for building Kubernetes APIs using Custom Resource Definitions (CRDs).
The Operator SDK also supports writing Operators with Go, Ansible, Helm and even JVM based languages with the [`java-operator-sdk`](https://github.com/operator-framework/java-operator-sdk)
which Glasskube uses for its [`apps-operator`](https://github.com/glasskube/operator).

The [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager) is part of the operator framework and a toolkit to provide automatic updates for Kubernetes operators.
Although it is not directly part of OpenShift, it is loosely coupled as the related GUI is not open-source and only part of OpenShift, a commercial product.
Using the OLM is very complex and consists of multiple CRDs and concepts, but you could achieve something similar to `glasskube install cert-manager` with
`kubectl operator install cert-manager -n cert-manager --channel stable --approval Automatic --create-operator-group`, but still lacking a GUI and the simple bootstrap of `glasskube bootstrap`.

OLMs [operatorhub.io](https://operatorhub.io/) lists currently more packages than Glasskube, but [Glasskube packages](https://glasskube.dev/packages/) will rapidly increase over time.

Another difference between Glasskube and OLM is that **OLM only supports operators while Glasskube supports all kinds of cloud-native applications**.

If you are already an OpenShift customer or only want to install operators, OLM might be a good fit for you,
but you will enjoy using Glasskube if you work with Kubernetes clusters and are looking for a package manager that supports all kind of packages.

18 changes: 0 additions & 18 deletions website/docs/04_comparisons/helm.md

This file was deleted.

19 changes: 18 additions & 1 deletion website/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const config: Config = {
sidebarPath: './sidebar-guides.ts',
showLastUpdateAuthor: true,
showLastUpdateTime: true,
} satisfies DocsOptions,
},
],
],
presets: [
Expand Down Expand Up @@ -168,6 +168,23 @@ const config: Config = {
},
],
},
{
title: 'Comparisons',
items: [
{
label: 'Glasskube vs Helm',
to: '/docs/comparisons/helm',
},
{
label: 'Glasskube vs Timoni',
to: '/docs/comparisons/timoni',
},
{
label: 'Glasskube vs OLM',
to: '/docs/comparisons/olm',
},
],
},
{
title: 'Community',
items: [
Expand Down

0 comments on commit 0bbc986

Please sign in to comment.