DEV Community

Cover image for HELM application chart on 2025

HELM application chart on 2025

Application Helm Chart

A universal Helm chart for streamlined Kubernetes deployments with simplified configuration.
Creates standard resources like Deployments, Ingress, PodMonitors (Prometheus), and more.

Introduction

Writing a Helm chart for even a small application can get really tedious, as it involves a lot of repetitive tasks and templating is not very user-friendly. However, with the Helm application, you can make the task much easier and fun to use!

We developed this unified chart because our applications share common deployment patterns. Managing multiple similar charts became time-consuming and maintenance-heavy.

This chart manages extended standard Kubernetes objects to simplify application deployment using only YAML configuration. While staying close to native Kubernetes syntax, it allows all settings to be overridden in sub-values YAML files using dictionaries with meaningful keys.

Features

  • Support for multiple workloads (Deployment, CronJob, Job, or StatefulSet)
  • Internal resource linking (Secret, ConfigMap, and ExternalSecret to env and volume, ...)
  • Environment variable management from various sources (values, ConfigMap, Secret, ExternalSecret)

Kubernetes Adaptations

While staying close to standard Kubernetes manifests, this chart implements these enhancements:

  • Converts lists to dictionaries for easier value overrides
  • Provides flexible environment variable definitions
  • Implements image configuration with hash pinning and metadata storage
  • Adds standard Kubernetes labels to all components:
    • app.kubernetes.io/name
    • app.kubernetes.io/instance
    • app.kubernetes.io/component
    • helm.sh/chart
    • app.kubernetes.io/version
    • app.kubernetes.io/managed-by
  • Links components using standard labels:
    • app.kubernetes.io/name
    • app.kubernetes.io/instance
    • app.kubernetes.io/component
  • Supports special selectors (self, self-metadata, self-external) for internal resources
  • Handles Docker registry secret configuration automatically
  • Supports metadata ConfigMap generation

Supported Resources

Kubernetes standard objects:

Common third-party objects:

Planned additions:

Examples

An example showing how to deploy a Deployment with an ExternalSecret and Docker registry configuration.

The example below demonstrates how to set up a simple deployment that:

  • Uses an external Docker registry (GitHub Container Registry)
  • Configures an ExternalSecret to manage sensitive data
  • Creates a basic deployment with service and ingress
application: dockerregistry: external: true content: ghcr_io: externalEmail: ghcr-email externalUsername: ghcr-username externalPassword: ghcr-password externalUrl: ghcr-url externalSecrets: app: enabled: true refreshInterval: 1h secretStoreRef: name: my-secret-store kind: SecretStore data: my-secret: remoteRef: key: my-secret services: my-deployment: enabled: true pdb: enabled: false ingress: enabled: true path: / service: type: ClusterIP servicePort: 8080 ports: - name: http port: 8080 protocol: TCP targetPort: http containers: my-container: image: repository: camptocamp/my-image tag: latest command: - sleep - '3600' env: SECRET: type: secret name: self-external-secret-app key: my-secret 
Enter fullscreen mode Exit fullscreen mode

Additional Resources

Conclusion

This chart is not perfect, but it can be used for major simple cases and some big applications.

Top comments (0)