Skip to main content

Overview

This guide covers adding new Kubernetes infrastructure components and managing configurations across environments. Infrastructure components are third-party tools deployed via Helm that provide platform capabilities.

Add a New Infrastructure Component

1

Create the wrapper chart directory

2

Create Chart.yaml.tmpl

The template allows environment-specific chart versions:
3

Create values.yaml

Define base configuration and chart versions:
4

Create environment-specific values

values.staging.yaml:
values.production.yaml:
values.local.yaml:
5

Add custom resources (optional)

Create templates in templates/ for resources not provided by the upstream chart:
6

Create mise.toml for rendering

Register with ArgoCD

1

Add to infrastructure values

Edit kubernetes/src/argocd/infrastructure/values.yaml:
2

Render all manifests

3

Commit and push

Environment-Specific Configuration

Values Hierarchy

Values are merged in order (later files override earlier):
  1. values.yaml - Base configuration
  2. values.{cluster}.yaml - Environment-specific overrides

Common Patterns

Different resource limits per environment:
Different hostnames:
Feature flags:

Add to Local Development

1

Create local values

Create values.local.yaml with local-specific settings:
2

Add to infrastructure Tiltfile

Edit kubernetes/src/infrastructure/Tiltfile:

Update the Render Pipeline

If your component needs to be rendered as part of the main render task: Edit kubernetes/mise.toml to include your component:

Namespace Management

Components typically run in their own namespace. Create it in your templates:
Or include it in the Helm install:

Troubleshooting

Helm dependency errors

Template rendering errors

ArgoCD not detecting the new Application

  1. Verify the Application manifest was generated:
  2. Check the infrastructure app-of-apps is synced:
  3. Force a sync:

Best Practices

  1. Use the wrapper chart pattern - Never modify upstream charts directly
  2. Version pin dependencies - Always specify exact versions in chartVersions
  3. Minimize environment differences - Keep staging similar to production
  4. Document custom resources - Explain why custom templates are needed
  5. Test locally first - Use Tilt before deploying to staging

Next Steps