Client-Side Architecture
Client-Side Architecture defines how Helm clients manage Kubernetes deployments, enabling efficient, declarative control over containerized applications.
Client-Side Architecture refers to the structural design and operational components of the Helm client that run on the user’s local machine. It encompasses the tools, interfaces, and processes that enable users to interact with Helm, manage charts, and communicate with Kubernetes clusters. The client-side handles chart creation, templating, packaging, repository management, and sending deployment instructions to the server-side or directly to the Kubernetes API.
Core Components of Client-Side Architecture
Helm CLI (Command-Line Interface)
The Helm CLI is the primary user interface for interacting with Helm. It provides commands to create, manage, package, and deploy Helm charts. It translates user inputs into operations such as templating charts, installing or upgrading releases, and managing repositories.
Key features include:
- Chart scaffolding (
helm create) - Dependency management (
helm dependency) - Release lifecycle management (
helm install,helm upgrade,helm rollback) - Repository management (
helm repo add,helm repo update,helm repo list) - Template rendering and validation
The CLI is designed for ease of use, scripting, and automation, providing a consistent interface across platforms.
Local Chart Management
Charts are the fundamental packaging format in Helm, containing Kubernetes manifests and metadata. The client-side architecture manages charts locally, allowing users to:
- Create new charts with standardized structure
- Modify and test charts without requiring cluster access
- Package charts into compressed archives (
.tgz) for distribution - Validate charts for correctness before deployment
Local chart management promotes iteration and development before pushing changes to production environments.
Configuration and Environment Settings
Configuration files and environment variables on the client side control Helm behavior. These include:
helmconfiguration files stored in the user’s home directory (e.g.,~/.config/helm)- Repository cache and configuration files managing remote chart repositories
- Kubernetes context and configuration files (
kubeconfig) used by Helm to connect to clusters - Environment variables such as
HELM_NAMESPACEorHELM_DRIVERinfluencing command execution
This setup allows customization of Helm operations per user and environment, facilitating multi-cluster and multi-environment workflows.
Interaction with Kubernetes and Server-Side Components
Communication with Kubernetes API
The Helm client communicates directly with the Kubernetes API server to deploy, upgrade, or rollback releases. It uses the Kubernetes client libraries and the context provided by the user’s kubeconfig file to authenticate and execute API calls.
This direct communication allows the client to:
- Create, update, or delete Kubernetes resources defined in charts
- Fetch cluster state to perform dry runs and validations
- Monitor release status and resource health
This design ensures Helm operates as a Kubernetes-native tool, respecting cluster security and RBAC policies.
Optional Server-Side (Tiller) Interaction (Legacy)
In Helm v2, the client communicated with a server-side component called Tiller, installed inside the Kubernetes cluster, which managed release state and deployment operations. The client sent commands to Tiller via gRPC.
While Helm v3 removed Tiller, understanding this legacy architecture is essential:
- Client packaged and sent charts to Tiller
- Tiller performed deployment operations and stored release information in ConfigMaps or Secrets
- Client received status and logs from Tiller
The removal of Tiller simplified security and authorization, delegating all control to the client.
Internal Workflow of the Helm Client
Command Parsing and Validation
Upon invocation, the Helm CLI parses user commands and flags, performing syntactic and semantic validation. It ensures parameters are correct and compatible with the intended operation.
Chart Rendering and Templating
Before deployment, the client processes the chart’s templates using the Go templating engine. This involves:
- Merging values from defaults, user overrides, and environment variables
- Rendering Kubernetes manifests dynamically based on input values
- Validating the final manifests for syntactical correctness
This step enables parameterization and environment-specific customization without changing the chart source.
Release Management
The client manages release lifecycle by:
- Tracking installed releases locally and querying cluster state
- Calculating differences between current and desired states during upgrades
- Generating rollback manifests when needed
- Managing release versioning and metadata
Release management relies on local state and Kubernetes cluster information to provide robust deployment controls.
Security and Extensibility Aspects
Authentication and Authorization
The client inherits Kubernetes cluster authentication methods such as certificates, tokens, or cloud provider credentials configured in the user’s kubeconfig. It does not manage separate credentials but leverages existing Kubernetes security mechanisms.
Plugin System
Helm supports client-side extensibility through plugins. Users can add custom commands or extend existing functionalities by installing plugins that integrate seamlessly with the CLI.
Plugins are typically scripts or binaries placed in designated directories and can perform operations such as:
- Custom chart validation
- Integration with CI/CD pipelines
- Additional repository management tools
This extensibility enhances the client’s flexibility to fit diverse workflows.