CNFs are becoming the dominant way to deploy traditional telecommunications functions. Anatomy of a CNF - Part 1 and Part 2 of the series discuss the term CNF and the key subcomponent of a CNF, the container image. Part 3 of Anatomy of a CNF focuses on where we store the container images, and Part 4 in the CNF series discusses supporting resources for a CNF. Since CNF setup requires many resources, a tool to help set everything up would be excellent. A Helm is a powerful tool for managing Kubernetes applications and allows you to package, configure, and deploy your applications and services easily and efficiently.
What is Helm?
A Helm is a package manager for Kubernetes. A Helm is similar to APT or YUM for Linux systems, but instead of installing software packages, it installs charts. Charts are YAML file collections describing the Kubernetes resources needed to run an application, service, or CNF. Charts can also include templates, variables, dependencies, and hooks to customize and automate the deployment process.
Kubernetes is a powerful platform for orchestrating containerized applications, but it can also be complex and tedious to manage. For example, you must write multiple YAML manifest files for each resource type (such as pods, services, deployments, etc.), keep track of their versions and dependencies, apply them to your cluster with kubectl commands or scripts, and monitor their status.
Helm simplifies this process by providing a standard way to package, distribute, install, configure, and update your Kubernetes applications. With Helm, you can define your application as a single chart that contains all the necessary resources. Helm uses templates and variables to customize your chart for different environments. Helm stores the charts in repositories to share them with others. Charts can be installed into a Kubernetes cluster using a single Helm install command.
Helm Charts
If Helm is a package manager used to install a Helm chart in Kubernetes, what exactly is a Helm chart? A Helm chart is a directory containing files describing a related set of Kubernetes resources. Most Helm charts have a few essential files, but many options exist. The chart.yaml file includes information on the chart itself, including the chart name, version number, description, keywords, dependencies, and API version. The values.yaml file has a default set of configuration values that could be overridden at instantiation time. The values.yaml file is optional but recommended for every chart. Finally, templates are a set of files used to generate valid Kubernetes manifest files when combined with values.yaml. These files use Go templating syntax and have access to built-in functions and variables provided by Helm.
As we think about deploying a CNF, we’ve seen two key things a vendor of a CNF needs to provide to an operator wanting to deploy the CNF.
1) Container Images – the deployed software of the CNF
2) Helm Chart (or set) - defines all the other deployed resources
Last, the CNF vendor needs to provide a Network Function Descriptor (NFD), which we explore in Anatomy of a CNF - Part 6.
Chris Reece, Technologist, Award Solutions, Inc.
Chris Reece works with leading global service providers, transforming networks and empowering individuals in 5G, Virtualization/Containerization, and Machine Learning/Artificial Intelligence. Service providers rely on Chris to paint both the big picture and the business impact of technology and appreciate his enthusiasm for getting into deep, detailed discussions when needed. You may have seen Chris on Award Solutions' YouTube Channel. In addition, Chris is featured at leading telecom conferences worldwide, including MWC, and in publications like IEEE Spectrum and DZONE.
Chris holds a master's degree in Computer Science Telecommunications from the University of Missouri at Kansas City and a bachelor's degree in Computer Science and Mathematics from Cameron University. He also holds four patents in wireless technologies.