Using Kubernetes Helm Charts for Increased DevOps Collaboration
Docker is a portable platform with independent modular designs for software that runs in a Docker container. Each Docker container has its own file system and networking.
A Docker image packages all the required resources to install a piece of software, including the .tar files to download, the environment variables to set, the commands to run, and the arguments to invoke the commands with. A Docker image also packages any dependencies a software might have.
A Docker image is usually designed for a baseline functionality. A user may inherit a Docker image and customize it to develop more complex applications.
However, resource definitions developed by end-users are typically not shared among other users who might have a similar application requirement. Those other users may not even be aware of a different user running the same application.
Collaboration is a major tenet of DevOps, yet this lack of visibility hinders collaboration and causes rework.
Here’s where Helm charts for Kubernetes offer opportunities for collaboration and can streamline the sharing of resources.
Many DevOps teams using Docker or other container tools use the popular open source container orchestration framework Kubernetes already. Helm is a tool that streamlines installing and managing Kubernetes applications. Helm is a package manager for Kubernetes just as yum is a package manager for RPM-based systems.
Helm charts are the packages managed by Helm, similar to the RPM packages. Helm charts are curated, reusable application definitions for Kubernetes Helm—basically, a collection of files within a root directory. The files describe the related set of Kubernetes resources for an application, such as a MySQL database.
The root directory name is typically the chart name. For example, the root directory for the mysql chart is mysql/. If a chart depends on other charts, those are packaged in the root directory in a directory called charts. Charts may be packaged into versioned archives.
One of the benefits of Helm charts is that they’re modular, reusable, preconfigured resources. Even the most complex Kubernetes applications may be packaged as Helm charts. They’re also easy to version, share, and publish on private or public servers, and they provide easy updates and rollbacks.
Several Helm chart repositories are available, including the Kubernetes Charts repository, Helm Charts repository, and the Bitnami Charts repository, all on GitHub. For example, for a MySQL database, use a MySQL database Helm chart from the Kubernetes Charts repository; the stable folder has the Helm charts that meet the minimum requirements.
It’s also fairly easy to deploy a Kubernetes application from a Helm chart:
- Install Helm
- Initialize Helm
- Search for the Helm chart to use
- Install Helm chart
- Use the Kubernetes application
Helm charts provide easy collaboration with reusable definition files for Kubernetes resources for a specific service or microservice. If you’re already using Kubernetes for automating deployment, scaling, and management of your application containers, either within Docker or another tool, consider using Helm charts for better collaboration—and reduced rework—on your DevOps team.