Analysis / Technology / Top Stories

Heptio Expands Ark Disaster Recovery for Azure Environments

7 Dec 2017 9:30am, by

Kubernetes services company Heptio has extended Heptio Ark disaster recovery software for Azure environments.

Heptio Ark manages disaster recovery for both Kubernetes cluster resources and persistent volumes, providing a configurable and operationally robust way to backup and restore applications and persistent volumes from a series of checkpoints.

“Multicloud is really happening. But for that to happen, we need strong conformance,” said Heptio co-founder and Kubernetes co-creator Craig McLuckie, discussing the new technologies at this year’s Kubecon.

Heptio and Microsoft will also work together to make the Ark project an efficient solution to move Kubernetes applications across in-house computing environments and Azure, and to ensure that Azure-hosted backups are secure.

With the Heptio-Microsoft collaboration, they will work to make sure that organizations can backup and restore content into Azure Container Service (AKS). In addition, system snapshots created using Ark are encrypted at rest and will be persisted in Azure.

“I’m excited to see Heptio and Microsoft deliver a compelling solution that satisfies an important and unmet need in the Kubernetes ecosystem,” said Brendan Burns, distinguished engineer at Microsoft, as one of the original founders of Kubernetes. “We’re working with Heptio to ensure that the integration of Ark and Azure is a best-of-breed solution for backing up on-premise Kubernetes clusters into the cloud.”

Upgrade to ksonnet

Started by two other Kubernetes creators, Joe Beda and McLuckie, Heptio came out of stealth mode in June. The company already launched several products to help engineers work with the cumbersome Kubernetes. One set was ksonnet, the Kubernetes configuration tool along with Jsonnet, a templating language for formatting JSON data. Jsonnet is “a purely-functional, Turing-complete language that is compatible with JSON,” explained Beda.

In August, the company launched, along with Heptio Ark, another tool called Heptio Sonobuoy, which inspects cluster state and configuration to ensure everything is configured and working. Both projects are publicly available on GitHub.

Kubernetes works great for a vanilla installation, Beda told me earlier this year, but no one uses it out of the box. Unfortunately, customizing Kubernetes has been complicated and usually involved what Beda referred to as “a wall of YAML.”

ksonnet simplifies the configuration needed to deploy to Kubernetes clusters. Beda said that the language and concepts behind ksonnet and Jsonnet can be intimidating for new and casual users. “We are fixing that today,” he wrote in a Heptio blog post.

The New Command Line

Most engineers launch Kubernetes using the kubectl run command. But because is an imperative command, changes made to users’ clusters cannot be stored in trackable configuration files, forcing team members to recreate their app configuration with YAML files.

“Users have to learn new concepts and a schema that was never meant to be authored by humans,” said Beda in a blog post launching the new ksonnet.

“We view ksonnet as not just the code that gets deployed,” he explained earlier this year, “but the entire experience of how I author it, how do I work with it, how do I work across teams.”

The new ksonnet command line tool, called ks, makes it easy to configure Kubernetes applications. ks provides a set of ways to generate and manage files on disk. Now users can easily define an application, specialize that app configuration for different clusters and environments, and add new components to it over time.

Beda broke down a quick overview of the new concepts from the whirlwind delivery of Heptio products:

  • Component. A component is a Jsonnet file that is often a single microservice within a larger application. It defines a set of Kubernetes resources (e.g., Deployments, Services, or ConfigMaps)
  • Prototype. A prototype allows users to generate fully-formed component without copying any YAML.
  • Environment. An environment is a combination of cluster and namespace and is the target for deploying your application (dev, staging or prod, typically).  For applications run distributed across multiple clusters users can create an environment per cluster.
  • Parameters to the prototype become parameters to the generated component,” he wrote.  “Those parameters can be changed and updated at any time.” In addition, Parameters can be specialized for each environment.

You can learn more by viewing the in-depth tutorial and documentation or by joining #ksonnet at the Kubernetes slack.

If you’re at KubeCon in Austin, Texas, you can meet with Heptio through Dec. 8 at its booth, #S14.


A digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.