Managing Multi-Service Deployments with Helm Chart Dependencies
Learn how to use Helm umbrella charts and dependencies to manage multi-service Kubernetes deployments, centralize configuration, and ensure version consistency.
08 Jan 2026, 09:23 UTC

The Problem: Configuration Drift in Multi-Service Apps
Deploying a suite of interconnected microservices often leads to "configuration drift," where different services use inconsistent versions of shared libraries or disparate environment settings. Manually managing five separate Helm releases for one application increases the risk of deployment failure and complicates rollback procedures.
The solution is an Umbrella Chart. By defining services as dependencies, you can treat a complex application as a single release unit, ensuring version synchronization and centralized configuration.
Prerequisites
- Helm 3.x installed on your local workstation.
- Access to a Kubernetes cluster (e.g., via
kubectl) with permissions to create namespaces and deployments. - Existing Helm charts for your sub-services, either hosted in a remote repository or stored locally.
Defining the Dependency Structure
The Chart.yaml file in your umbrella chart acts as the manifest for your application's architecture. Instead of defining templates for every service, you list them under the dependencies section.
# Chart.yaml
apiVersion: v2
name: my-app-umbrella
version: 1.0.0
dependencies:
- name: auth-service
version: "1.2.0"
repository: "https://charts.example.com"
- name: payment-gateway
version: "^2.1.0"
repository: "https://charts.example.com"
condition: paymentEnabled
Key Configuration Details:
- Version Constraints: Using
^2.1.0allows Helm to pull the latest minor version. For production environments, use exact versions (e.g.,"1.2.0") to prevent unexpected breaking changes during updates. - Conditions: The
condition: paymentEnabledfield makes the sub-chart optional. It will only be deployed ifpaymentEnabled: trueis set in the parent'svalues.yaml.
Resolving and Syncing Dependencies
Defining the dependencies is not enough; you must fetch the actual chart packages into the charts/ directory of your umbrella chart.
Run this command from the root of your umbrella chart directory:
helm dependency update ./my-app-umbrella
Expected Result: Helm creates a Chart.lock file and downloads the .tgz archives of the sub-charts into the charts/ folder. The Chart.lock file ensures that every team member and CI/CD pipeline uses the exact same version of the dependencies.
Centralizing Configuration via Value Overrides
One of the primary benefits of an umbrella chart is the ability to override sub-chart settings from a single values.yaml file. Helm uses a hierarchical naming convention: to override a value in a sub-chart, use the sub-chart's name as the top-level key.
# values.yaml (Umbrella Chart)
# Global values shared across ALL sub-charts
global:
environment: production
registry: registry.example.com
# Specific overrides for the auth-service sub-chart
auth-service:
replicaCount: 3
service:
port: 8080
# Toggle the conditional dependency
paymentEnabled: true
Verification and Diagnostics
Before deploying to a live cluster, verify that the dependency tree is resolved and the manifests are rendering correctly.
- Check Dependency Status: Run
helm dependency list ./my-app-umbrellato ensure all charts are present and versions match theChart.yaml. - Dry-Run Manifests: Use the template command to see the final Kubernetes YAML without installing it:
Check the output for the presence of resources from bothhelm template my-release ./my-app-umbrellaauth-serviceandpayment-gateway. - Deployment: Install the release using
helm install my-app ./my-app-umbrella -n my-namespace.
Limitations and Risks
- Circular Dependencies: Helm cannot resolve loops (e.g., Chart A depends on B, and B depends on A). This will result in a resolution error during
dependency update. - Manifest Size: Extremely large dependency trees can lead to massive rendered manifests, which may slow down the Kubernetes API server during installation.
- Value Collisions: Ensure sub-chart values are properly nested. Placing a sub-chart configuration at the root of the umbrella
values.yamlwill not affect the sub-chart.
Rollback Procedure
Because the umbrella chart treats all dependencies as a single release, you can revert the entire application state—including all sub-services—with one command:
helm rollback my-app [REVISION_NUMBER] -n my-namespace
This restores the previous version of the umbrella chart and all associated sub-chart versions as they existed in that specific release revision.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.