Skip to main content

Helm Charts

Helm Charts

Kubernetes package management for the Control Plane

Helm is used for packaging, versioning, and deploying the Control Plane components to Kubernetes clusters.

Kubernetes package manager

Helm provides a standardized way to package and deploy Control Plane components, handling complex dependencies and configurations through a template-based approach.

Overview​

Helm is the package manager for Kubernetes. The Control Plane uses Helm to:

đŸ“Ļ Package Components

Bundle applications, dependencies, and configurations as reusable charts.

âš™ī¸ Manage Configuration

Centralize and parameterize application settings through values files.

🚀 Simplify Deployment

Streamline the process of deploying complex applications to Kubernetes.

🔄 Version Control

Track application versions and changes through chart versioning.

â†Šī¸ Handle Rollbacks

Quickly revert to previous versions if issues arise during updates.

🔌 Manage Dependencies

Handle relationships between components and third-party services.

Helm Logo

Chart Structure​

Standardized structure

The Control Plane follows a consistent Helm chart structure across all components, making maintenance and updates more predictable.

The Control Plane components follow a standard Helm chart structure:

common-server/helm
├── Chart.yaml # Chart metadata
├── values.yaml # Default values
└── templates/ # Kubernetes manifests templates
├── _helpers.tpl # Template helpers
├── deployment.yaml # Deployment template
├── service.yaml # Service template
├── configmap.yaml # ConfigMap template
├── ingress.yaml # Ingress template
├── servicemonitor.yaml # Prometheus ServiceMonitor
└── rbac/ # RBAC templates
├── binding.yaml
├── clusterrole.yaml
└── serviceaccount.yaml

Directory Structure Explained​

Chart.yaml

Contains metadata about the chart including:

  • Chart name and version
  • Application version
  • Description and maintainer information
  • Dependencies on other charts
  • Keywords for searchability

values.yaml

Default configuration values for the chart:

  • Image references and versions
  • Resource limits and requests
  • Service and ingress configurations
  • Feature flags and toggles
  • Environment-specific settings

templates/

Directory containing template files:

  • Kubernetes resource definitions
  • Dynamic templates with Go templating
  • Helper functions in _helpers.tpl
  • NOTES.txt for post-install instructions
  • Tests for chart validation

Additional Files

Other important files in Control Plane charts:

  • README.md for documentation
  • NOTES.txt for usage instructions
  • LICENSE for license information
  • requirements.yaml (for v2 charts)
  • values.schema.json for value validation

Chart Versioning Strategy​

Semantic versioning

The Control Plane uses semantic versioning (MAJOR.MINOR.PATCH) for all Helm charts, with careful separation of chart version and app version.

Chart Version

The version field in Chart.yaml follows these principles:

  • MAJOR: Breaking changes to values schema or templates
  • MINOR: New features and backwards-compatible changes
  • PATCH: Bug fixes and minor template improvements
  • Always incremented when chart contents change

App Version

The appVersion field in Chart.yaml follows these principles:

  • Represents the version of the application being deployed
  • Independent of the chart version
  • May change without chart version change (for image updates)
  • Used as the default tag for container images

Configuration Categories​

đŸ“Ļ Deployment Configuration

Settings for the Deployment resource, including replica count, update strategy, and pod specifications.

đŸ–ŧī¸ Container Images

Image repository, tag, and pull policy settings for consistency across environments.

🔌 Networking

Service, ingress, and network policy configurations for connectivity.

âš™ī¸ Resources

CPU, memory, and storage resource requests and limits to ensure proper scheduling.

🧩 Dependencies

Configuration for dependent services like databases and message queues.

🔍 Observability

Settings for monitoring, logging, and tracing integration.

Best Practices​

Helm best practices

The Control Plane follows these best practices for Helm charts to ensure maintainability and reliability.

Configuration

Best practices for values and configuration:

  • Parameterize all configurable values
  • Provide sensible defaults for all parameters
  • Document each value in values.yaml
  • Group related values logically
  • Use consistent naming conventions

Templates

Best practices for templates:

  • Use conditionals for optional features
  • Leverage helper functions for common patterns
  • Maintain consistent indentation
  • Validate templates with helm lint
  • Add comments for complex logic

Documentation

Best practices for chart documentation:

  • Include NOTES.txt with usage instructions
  • Maintain a comprehensive README.md
  • Document all values with descriptions
  • Provide usage examples
  • Include upgrade notes for breaking changes

Versioning and Distribution

Best practices for chart release:

  • Follow semantic versioning
  • Include a changelog
  • Sign charts for verification
  • Use a chart repository for distribution
  • Test charts in CI/CD pipeline

Control Plane Specific Practices​

Control Plane standards

Beyond general Helm best practices, the Control Plane follows specific standards for consistency across all components.

đŸˇī¸ Standardized Labels

All resources use consistent labeling for improved organization and filtering.

🔒 Security Context

Non-root users and read-only file systems are used wherever possible.

🔍 Monitoring Integration

ServiceMonitor resources for automatic Prometheus integration.

📊 Resource Management

All containers have explicit resource requests and limits.

đŸŠē Health Checks

Comprehensive readiness and liveness probes for all services.

🔐 Secret Management

Secure handling of secrets with external references where appropriate.

Kustomize

Learn about Kustomize for managing Kubernetes configurations.

Infrastructure

Explore the overall infrastructure components of the Control Plane.