Helm Chart
CloudDrove's helmchart repository provides a single, flexible Helm chart that can deploy any application to Kubernetes. Instead of writing separate charts per service, you maintain one common chart and supply a small override-values.yaml per application.
Repository: clouddrove/helmchart Chart registry: charts.clouddrove.com Artifact Hub: artifacthub.io/packages/helm/clouddrove/helmchart
Supported clusters: EKS, AKS, GKE, Minikube
Add the repository
helm repo add clouddrove https://charts.clouddrove.com/
helm repo update clouddrove
Deploy an application
1. Create an override-values file
# my-app-values.yaml
replicaCount: 2
image:
repository: myorg/myapp
tag: "1.2.3"
pullPolicy: IfNotPresent
service:
enabled: true
type: ClusterIP
port: 8080
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host: myapp.example.com
paths:
- path: /
pathType: Prefix
2. Install or upgrade
helm upgrade --install myapp clouddrove/helmchart \
-f my-app-values.yaml \
--namespace myapp \
--create-namespace
Supported Kubernetes resources
The chart can generate all of these from values.yaml:
| Resource | Enabled via |
|---|---|
| Deployment | (always created) |
| Service | service.enabled: true |
| Ingress | ingress.enabled: true |
| ConfigMap | configmap.enabled: true |
| Secret | secret.enabled: true |
| HorizontalPodAutoscaler | hpa.enabled: true |
| PodDisruptionBudget | pdb.enabled: true |
| ServiceAccount | serviceAccount.enabled: true |
| ServiceMonitor | serviceMonitor.enabled: true |
| CronJob | cronjob.enabled: true |
| PersistentVolumeClaim | pvc.enabled: true |
| PersistentVolume | pv.enabled: true |
| StorageClass | storageClass.enabled: true |
| Istio Gateway | gateway.enabled: true |
| Istio VirtualService | virtualservice.enabled: true |
Common configuration options
| Value | Default | Description |
|---|---|---|
replicaCount | 1 | Number of pod replicas |
image.repository | — | Container image (e.g., myorg/myapp) |
image.tag | — | Image tag |
image.pullPolicy | IfNotPresent | Pull policy |
service.enabled | true | Create a Service |
service.type | ClusterIP | ClusterIP, NodePort, or LoadBalancer |
service.port | 80 | Service port |
ingress.enabled | false | Create an Ingress |
resources.limits | — | CPU/memory limits |
resources.requests | — | CPU/memory requests |
autoscaling.enabled | false | Enable HPA |
autoscaling.minReplicas | 1 | HPA minimum replicas |
autoscaling.maxReplicas | 10 | HPA maximum replicas |
Example: full production deployment
# production-values.yaml
replicaCount: 3
image:
repository: 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp
tag: "v2.1.0"
service:
enabled: true
type: ClusterIP
port: 3000
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
hosts:
- host: api.mycompany.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: api-tls
hosts: [api.mycompany.com]
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
serviceAccount:
enabled: true
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/myapp-role
serviceMonitor:
enabled: true
interval: 30s
path: /metrics
helm upgrade --install myapp clouddrove/helmchart \
-f production-values.yaml \
--namespace production \
--create-namespace
Schema validation
The chart ships with values.schema.json. Helm validates your override-values.yaml against the schema before rendering, catching configuration errors before they reach the cluster.