Kubernetes Helm Accelerates Production-Ready Deployments
Kubernetes Helm Accelerates Production-Ready Deployments
Not sure what Helm brings to your container orchestration? Here's an overview of how Helm can help with Kubernetes as a managed service.
Join the DZone community and get the full member experience.Join For Free
Learn how to migrate and modernize stateless applications and run them in a Kubernetes cluster.
“Kubernetes” is a Greek word refers to the pilot of a ship. The term “helm” refers to the wheel itself, the tool used by a pilot to steer and control the ship. In much the same way that the helm enables a pilot to steer a ship, Helm, in the context of container orchestration, enables a Kubernetes operator to have greater control of his/her Kubernetes cluster (i.e. the ship).
Helm fills the need to quickly and reliably provision Kubernetes-orchestrated container applications through easy installation, update, and removal. It provides a vehicle for developers to package their applications and share them with the Kubernetes community and for software vendors to offer their containerized applications at “the push of a button.”
Helm was jointly created by Google and Deis using code from both Helm Classic (since deprecated) and Google Cloud Services (GCS) Deployment Manager. The project is managed by Cloud Native Computing Foundation (CNCF), which also manages the Kubernetes project.
Through a single command or few mouse clicks, users can install Kubernetes apps for dev-test or production environments.
What Are Helm Charts?
The term “Helm” is used to refer to both the client-side and the server-side Kubernetes components: the Helm client and Tiller/Helm Server. The client interacts with the server to perform changes within a Kubernetes cluster.
As shown above, when a user executes the helm install command, a Tiller Server receives the incoming request and installs the appropriate package (which contains the resource definitions to install a Kubernetes application) into the Kubernetes cluster. Such packages are referred to as Charts and are similar to RPM and DEB packages for Linux: they provide a convenient way for developers to distribute applications and for end users to install those applications.
Among over a hundred available online, stable Helm Charts available officially include:
- MySQL and MariaDB: popular database servers used by Wikipedia, Facebook, and Google.
- MongoDB: cross-platform document oriented NoSQL database.
- Wordpress: a publishing platform to build blogs and websites.
Why Helm Benefits Kubernetes
The following table walks through a few problems that Kubernetes Helm alleviates.
|Challenge||Description||Kubernetes Helm Benefit|
|Impaired Developer productivity||Developer productivity can suffer due to the time spent on deploying test environments which help developers test code and replicate customer issues.||Developers can spend their time focusing on developing applications instead of spending it on deploying dev-test environments. Helm Charts such as MySQL, MongoDB, and Postgresql allow developers to get a working database quickly for their application. In addition, developers can author their own chart which automates deployment of their dev-test environment.|
|Deployment Complexity||The learning curve can be steep for those new to Kubernetes-orchestrated container apps. As a result, the lead time to deploy production-grade apps on Kubernetes can be high.||Helm Charts provide "push button" deployment and deletion of apps, thereby making adoption and development of Kubernetes apps easier in organizations which have little or no experience with containers or microservices. Apps deployed from Charts, as well as VM-based and other container apps, can then be leveraged together to meet a business need, such as CI/CD or blogging platforms.
|Kubernetes-orchestrated container applications can be complex to deploy. Deployers can use incorrect inputs for configuration files or not have the expertise to roll-out these apps from YAML templates.||Helm Charts are recipes for Kubernetes apps that can reduce deployment complexity in the following ways:
1. Helm Charts allow software vendors and developers to preconfigure their applications with sensible defaults.
2. Helm Charts allow users/deployers to change parameters (e.g. resource limits for CPU and memory) of the application/chart using a consistent interface.
3. A software vendor or developer may have already configured the chart to be HA out of the box---or the user can enable this by setting the correct configuration parameter (e.g. number of replicas).
Developers leveraging Helm Charts can incorporate production-ready packages while building applications in a Kubernetes environment. In doing so, they can eliminate deployment errors due to incorrect configuration file entries or mangled deployment recipes.
|Production Readiness||Kubernetes applications can consist of multiple components, including pods, namespaces, RBAC policies, and deployments. Deploying and maintaining these apps can be tedious and error prone.||
Helm Charts reduce complexity of maintaining an App Catalog in a Kubernetes environment. Operations teams do not have to maintain service tickets during Kubernetes orchestrated app deployments, or curate Kubernetes app catalogs that are part of a self-service portal. (see screenshot below)
Platform9 Managed Kubernetes App Catalog leveraging Helm Charts
App Deployment Compared: With and Without Helm Charts
Without Helm Charts
The procedure outlined in this example will deploy Wordpress and MySQL on Kubernetes without the use of Helm Charts. In order to follow through with these instructions, it is necessary to perform these steps manually:
- Download the necessary configuration files
- Create a Persistent Volume
- Create a Secret for the MySQL password
- Deploy MySQL using the copy-pasted “mysql-deployment.yaml” file
- Deploy Wordpress using the copy-pasted “wordpress-deployment.yaml” file
With Helm Charts
In contrast, deploying the Wordpress Chart using Helm can be done in a few seconds. On the Helm client, a deployer would execute the following command:
$ helm install --name my-release -f values.yaml stable/wordpress
The comparison above was meant to illustrate the value of Helm Charts in Kubernetes through a simple example. When we deploy multiple Helm Charts-based apps and have them serve a business need, the productivity gains can be more substantial.
Through the use of Charts, Helm provides the ability to leverage Kubernetes “packages” through the click of a button or a single CLI command while building and deploying applications. By making app deployment easy and standardized in a Kubernetes environment, Helm improves developer productivity, reduces operational complexity, and speeds up the adoption of cloud-native apps. Platform9 Managed Kubernetes is one such solution that is integrated with Helm and Helm Charts, and can be evaluated through a free trial.
Published at DZone with permission of Akshai Parthasarathy , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.