Skip to main content

Helm Chart

Helm

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:

ResourceEnabled via
Deployment(always created)
Serviceservice.enabled: true
Ingressingress.enabled: true
ConfigMapconfigmap.enabled: true
Secretsecret.enabled: true
HorizontalPodAutoscalerhpa.enabled: true
PodDisruptionBudgetpdb.enabled: true
ServiceAccountserviceAccount.enabled: true
ServiceMonitorserviceMonitor.enabled: true
CronJobcronjob.enabled: true
PersistentVolumeClaimpvc.enabled: true
PersistentVolumepv.enabled: true
StorageClassstorageClass.enabled: true
Istio Gatewaygateway.enabled: true
Istio VirtualServicevirtualservice.enabled: true

Common configuration options

ValueDefaultDescription
replicaCount1Number of pod replicas
image.repositoryContainer image (e.g., myorg/myapp)
image.tagImage tag
image.pullPolicyIfNotPresentPull policy
service.enabledtrueCreate a Service
service.typeClusterIPClusterIP, NodePort, or LoadBalancer
service.port80Service port
ingress.enabledfalseCreate an Ingress
resources.limitsCPU/memory limits
resources.requestsCPU/memory requests
autoscaling.enabledfalseEnable HPA
autoscaling.minReplicas1HPA minimum replicas
autoscaling.maxReplicas10HPA 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.