Gravity 5.5 gives superpowers to Helm: package Kubernetes apps as self-contained tarballs

Mar 18, 2019 by Ev Kontsevoy

What’s new in this release?

With the release of Gravity v5.5, the open source image-based Kubernetes packaging solution, we added support for Helm charts. This allows developers to use Helm to package entire Kubernetes clusters, pre-loaded with applications into downloadable image files. Earlier versions of Gravity relied on a proprietary application manifest format. With Helm support, developers can leverage their existing tooling and skills.

For those that like to learn by doing, we have prepared a Quickstart Guide that runs through how to build a cluster image and install it across multiple nodes. Below is a further explanation of Gravity and the how the new features in v5.5 work.

What is Gravity?

Gravity enables true application portability for complex, cloud-native applications that require multi-node clusters. It is an open source solution for application developers. This release makes it possible for organizations to deliver application catalogs across public and private clouds to do things like:

How does building a cluster image work?

Gravity includes a command line package builder, which allows developers to point at their Helm charts and produce a standalone, downloadable cluster image file. Such image files have no dependencies and can be used to distribute complex, cloud-native applications to end users.

Developers use tele, the Gravity command line tool for building cluster images:

gravity tele build diagram

Developers can simply execute:

$ tele build [helm-chart.yaml]

And the cluster image will be built and saved as .tar file. The resulting image can be quite large because it includes:

  1. All container images
  2. All of the Kubernetes binaries (and their dependencies)
  3. Gravity’s installer to easily provision new clusters using the image.
  4. Gravity’s Kubernetes “hypervisor” used to provide automatic cluster management to reduce operational overhead.

How does creating a cluster work?

The end users can download a cluster image from either Gravity Enterprise or from another medium, such as cloud storage or even a USB stick for air-gapped servers. The cluster image uses a simple archive file format, i.e. it can be extracted and installed by executing a simple installer command.

# We are executing this on the node named 'host' with IP address of 10.5.5.28 
# and creating a token for other nodes to join securely.

$ sudo ./gravity install \ \
        --advertise-addr=10.5.5.28 \ \
        --token=secret

The built-in installer is capable of provisioning Kubernetes clusters pre-loaded with the applications from a cluster image. Kubernetes clusters provisioned by Gravity are managed by a Gravity cluster hypervisor which takes care of etcd and K8s monitoring and management. Gravity clusters are highly-available, do not require proactive management and include a built-in authentication gateway for both Kubernetes and SSH.

installing on-premises and air-gapped clusters

As the diagram shows, the cluster image file is all you need to create a Kubernetes cluster from scratch. Even access to the Internet is not necessary.

How do Kubernetes Appliances work?

Below is a diagram of a Kubernetes virtual appliance created from a Gravity image file:

using gravity to create a kubernetes cluster image

Each cluster consists of:

Low-level commands like kubeadm or etcdctl/etcdadm are no longer necessary to manage a cluster. Gravity high-level commands allow users to expand/shrink clusters, perform in-place Kubernetes upgrades or application upgrades using automatic or image-based methods.

Cluster Image Catalog

Gravity Enterprise includes an application catalog - a place where developers can publish cluster images. Typical use cases for the application catalog include:

Multi-cluster authentication gateway

Gravity Enterprise also includes Teleport, privileged access management (PAM) solution which allows developers to:

The centralized application catalog and the central authentication gateway allow organizations to manage access and compliance of their Kubernetes deployments across multiple cloud providers and even 3rd party infrastructure, while simultaneously reducing operational overhead of running cloud-native applications globally.

How to start using Gravity?

Gravity is open sourced and available under an Apache 2.0 license on Github. We have prepared a Quickstart Guide that runs through most of what we have described above. You can also review the full documentation online and reach out to us through the Gravity community forum with any questions. If you are interested in the Enterprise version, feel free to schedule a demo on our website.

P.S., If you’d like to work with us on Gravity, we are hiring!

Get Gravity

Deploy and remotely manage cloud-native applications on premises with Gravity.

Learn More About Gravity