Helm 3: Advanced Package Management for Kubernetes Applications
Published: 2024-06-17 13:37:25

Helm 3 is a significant upgrade to the Helm package manager for Kubernetes applications. This version introduces several key features that enhance the management and deployment of applications on Kubernetes clusters. In this blog, we will delve into the technical details of Helm 3 and explore its capabilities.

### Package Management

Helm 3 uses a package manager called `helm` to manage and install applications on Kubernetes clusters. The `helm` command-line tool provides a simple and intuitive interface for users to manage their applications. The package manager is responsible for installing, upgrading, and uninstalling applications on the cluster.

### Charts

Helm 3 uses a concept called charts to define and manage applications. Charts are collections of YAML files that describe the application, its dependencies, and the resources required to deploy it. Charts can be stored in a chart repository, which is a centralized location for managing and sharing charts.

Here is an example of a simple chart:
```yaml
# Chart.yaml
name: my-app
version: 1.0.0
description: A simple web application
```

### Repositories

Helm 3 supports multiple chart repositories, which can be added and managed using the `helm repo` command. Repositories can be local or remote, allowing users to share and manage charts across different environments.

To add a repository:
```bash
helm repo add my-repo https://my-repo.com/charts
```

### Dependencies

Helm 3 introduces a new concept called dependencies, which allows charts to depend on other charts. This feature enables the creation of complex applications by combining multiple charts.

Here is an example of a chart with dependencies:
```yaml
# Chart.yaml
name: my-app
version: 1.0.0
description: A simple web application
dependencies:
  - name: mysql
    version: 1.0.0
    repository: https://my-repo.com/charts
```

### Releases

Helm 3 introduces a new concept called releases, which represents a specific deployment of an application on a Kubernetes cluster. Releases are managed using the `helm release` command.

To create a new release:
```bash
helm install my-app --set mysql.password=mysecretpassword
```

### Upgrades and Rollbacks

Helm 3 provides features for upgrading and rolling back releases. Upgrades can be performed using the `helm upgrade` command, and rollbacks can be performed using the `helm rollback` command.

To upgrade a release:
```bash
helm upgrade my-app --set mysql.password=newpassword
```

To rollback a release:
```bash
helm rollback my-app 1
```

### Security

Helm 3 introduces several security features, including support for SSL/TLS certificates and encryption of sensitive data.

To add an SSL/TLS certificate:
```bash
helm install my-app --set-file tls.crt=cert.pem --set-file tls.key=key.pem
```

Helm 3 is designed to integrate with [platform engineering](www.platformengineers.io) tools and workflows, providing a robust and scalable solution for managing Kubernetes applications.

### Conclusion

Helm 3 is a powerful tool for managing and deploying Kubernetes applications. Its advanced package management features, including charts, repositories, dependencies, releases, upgrades, and rollbacks, make it an ideal choice for complex application deployments. With its [robust security](https://platformengineers.io/blog/securing-kubernetes-beyond-rbac-and-pod-security-policies-psp/) features and integration with platform engineering tools, Helm 3 is a valuable addition to any Kubernetes environment.