The Kubernetes Helm Architecture

Helm is a tool for managing Kubernetes packages called charts. Helmcan do the following:

  • Create new charts from scratch
  • Package charts into chart archive (tgz) files
  • Install and uninstall charts into an existing Kubernetes cluster
  • Manage the release cycle of charts that have been installed with HelmFor Helm, there are three important concepts:

  • The chart is a bundle of information necessary to create aninstance of a Kubernetes application.

  • The config contains configuration information that can be mergedinto a packaged chart to create a releasable object.
  • A release is a running instance of a chart, combined with aspecific config.

The Helm Client is a command-line client for end users. The clientis responsible for the following domains:

  • Local chart development
  • Interacting with the Tiller server

    • Sending charts to be installed
    • Asking for information about releases
    • Requesting upgrading or uninstalling of existing releasesThe Tiller Server is an in-cluster server that interacts with theHelm client, and interfaces with the Kubernetes API server. The serveris responsible for the following:
  • Listening for incoming requests from the Helm client

  • Combining a chart and configuration to build a release
  • Upgrading and uninstalling charts by interacting with KubernetesIn a nutshell, the client is responsible for managing charts, and theserver is responsible for managing releases.

The Tiller server is also written in Go. It provides a gRPC server toconnect with the client, and it uses the Kubernetes client library tocommunicate with Kubernetes. Currently, that library uses REST+JSON.

The Tiller server stores information in ConfigMaps located inside ofKubernetes. It does not need its own database.

Configuration files are, when possible, written in YAML.