Overview
Third-party applications are infrastructure components deployed via Helm charts, things like traefik, cert-manager, external-secrets, and ArgoCD itself. This page covers how to update their versions and configurations.Infrastructure Components
The kit includes these third-party components inkubernetes/src/infrastructure/:
| Component | Chart Source | Purpose |
|---|---|---|
| argocd | argoproj.github.io | GitOps controller |
| cert-manager | quay.io/jetstack | TLS certificate automation |
| cloudnative-pg | cloudnative-pg.github.io | PostgreSQL operator |
| external-dns | kubernetes-sigs.github.io | DNS record management |
| external-secrets | charts.external-secrets.io | Secret synchronization |
| traefik | ghcr.io/traefik/helm | Ingress controller |
| karpenter | public.ecr.aws/karpenter | Node autoscaling |
| reloader | stakater.github.io | Pod restart on config changes |
| signoz-k8s-infra | charts.signoz.io | Observability collectors |
Update Chart Versions
Each component uses a “wrapper chart” pattern: a local Helm chart that includes the upstream chart as a dependency.1
Find the current version
Check the current version in the component’s Look for the
values.yaml:chartVersions section:2
Check for new versions
Find the latest version from the chart repository:
3
Update the version
Edit the values file to update the version:For environment-specific versions, edit
values.staging.yaml or values.production.yaml. Setting these independently allows for testing upgrades in lower environments before rolling out to production.4
Update Chart.lock
Regenerate the lock file with the new dependency:
5
Render and commit
Update Configuration
To change component settings without upgrading versions:1
Edit the values file
Modify For example, increase controller replicas:
values.yaml for base configuration or values.{environment}.yaml for environment-specific settings:2
Render manifests
3
Review and commit
Add Additional Manifests
Many components need additional manifests beyond the upstream chart (ClusterIssuers, StorageClasses, etc.). Add these in the wrapper chart’stemplates/ directory:
Environment-Specific Configuration
Use values overlay files for environment differences:Enable/Disable Components
Components are enabled/disabled in the ArgoCD infrastructure app-of-apps:Upgrade Strategies
Minor/Patch Updates
For minor and patch version updates (e.g.,4.12.2 → 4.12.3):
- Update the version in values.yaml
- Run
helm dependency update - Render, commit, and push
- ArgoCD syncs automatically
Major Updates
For major version updates (e.g.,4.x → 5.x):
- Read the changelog for breaking changes
- Test in staging first before production
- Update values if configuration schema changed
- Have a rollback plan if the component is critical
CRD Updates
Some components (cert-manager, ArgoCD, Karpenter) use CRDs that may need manual updates:Best Practices
- Test in staging first - Always upgrade staging before production
- Read changelogs - Especially for major versions
- Update one component at a time - Easier to isolate issues
- Keep versions consistent - Use the same version across environments when possible
- Monitor after upgrades - Watch metrics and logs for regressions
Next Steps
- Adding K8s Infrastructure - Add new infrastructure components
- Managing Secrets - Configure External Secrets