A Helm library chart that generates complete Kubernetes manifests from a concise configuration — no templates required in your application repo.
Add the Helm repository:
helm repo add helm-apps https://helm-apps.github.io/lib
helm repo update
Declare the dependency in your .helm/Chart.yaml:
apiVersion: v2
name: my-app
version: 1.0.0
dependencies:
- name: lib
version: "~1"
repository: "@helm-apps"
Update dependencies:
helm dependency update .helm
Create .helm/templates/init-helm-apps-library.yaml:
{{- /* Initialize the helm-apps library */}}
{{- include "apps-utils.init-library" $ }}
Declare your applications in .helm/values.yaml:
global:
env: prod
apps-stateless:
nginx:
enabled: true
replicas: 2
containers:
nginx:
image:
name: nginx
staticTag: "1.27"
ports: |
- name: http
containerPort: 80
service:
enabled: true
ports: |
- name: http
port: 80
apps-ingresses:
nginx:
enabled: true
host: "example.com"
paths: |
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
Render locally to verify:
helm template my-app .helm --namespace my-ns --set "global.env=prod"
Any field can carry environment-specific values resolved via global.env:
replicas:
_default: 1
prod: 3
Define shared configuration blocks once, reference them anywhere:
# helm-apps-defaults.yaml
my-defaults:
imagePullSecrets: |
- name: registry-secret
revisionHistoryLimit: 3
# values.yaml
apps-stateless:
my-app:
_include: ["my-defaults"]
replicas: 2 # overrides anything from _include
Field values support Go template expressions:
apps-stateless:
my-app:
service:
name: "{{ $.CurrentApp.name }}-svc"
GitHub repository · Usage guide · Full example values · Issues