🚀 HomeRun Helm Charts

Production-ready Helm charts for Spring Boot and Next.js applications

📦 Quick Start

Add the HomeRun Helm repository:

helm repo add homerun https://charts.sty.ovh
helm repo update

Springboot Chart

Version: 0.1.0

Description: Spring Boot Kotlin application Helm chart

Installation

helm repo add homerun https://charts.sty.ovh
helm install my-springboot homerun/springboot

Configuration Values

Key Default Value Description
replicaCount 2 Default value for replicaCount
image.repository openjdk Default value for repository
image.pullPolicy IfNotPresent Default value for pullPolicy
image.tag 17-jre-alpine Default value for tag
imageCredentials.registry registry.gitlab.com Default value for registry
imageCredentials.username Default value for username
imageCredentials.password Default value for password
imageCredentials.email Default value for email
imagePullSecrets [{"name": "gitlab-registry"}] Default value for imagePullSecrets
nameOverride Default value for nameOverride
fullnameOverride Default value for fullnameOverride
serviceAccount.create True Default value for create
serviceAccount.name Default value for name
podSecurityContext.fsGroup 1001 Default value for fsGroup
securityContext.allowPrivilegeEscalation False Default value for allowPrivilegeEscalation
securityContext.runAsNonRoot True Default value for runAsNonRoot
securityContext.runAsUser 1001 Default value for runAsUser
securityContext.capabilities.drop ["ALL"] Default value for drop
service.type ClusterIP Default value for type
service.port 8080 Default value for port
ingress.enabled True Default value for enabled
ingress.className traefik Default value for className
ingress.annotations.traefik.ingress.kubernetes.io/router.entrypoints web,websecure Default value for traefik.ingress.kubernetes.io/router.entrypoints
ingress.annotations.traefik.ingress.kubernetes.io/router.tls.certresolver letsencrypt Default value for traefik.ingress.kubernetes.io/router.tls.certresolver
ingress.annotations.traefik.ingress.kubernetes.io/router.middlewares default-redirect-https@kubernetescrd Default value for traefik.ingress.kubernetes.io/router.middlewares
ingress.hosts [{"host": "api.sty.ovh", "paths": [{"path": "/", "pathType": "Prefix"}]}] Default value for hosts
ingress.tls [{"secretName": "springboot-tls", "hosts": ["api.sty.ovh"]}] Default value for tls
resources.limits.cpu 1000m Default value for cpu
resources.limits.memory 1Gi Default value for memory
resources.requests.cpu 200m Default value for cpu
resources.requests.memory 512Mi Default value for memory
tolerations [] Default value for tolerations
springboot.profiles.active prod Default value for active
springboot.server.port 8080 Default value for port
springboot.management.endpoints.web.exposure.include health,info,prometheus Default value for include
springboot.management.endpoint.health.show-details when-authorized Default value for show-details
probes.liveness.httpGet.path /actuator/health/liveness Default value for path
probes.liveness.httpGet.port 8080 Default value for port
probes.liveness.initialDelaySeconds 60 Default value for initialDelaySeconds
probes.liveness.periodSeconds 10 Default value for periodSeconds
probes.liveness.timeoutSeconds 5 Default value for timeoutSeconds
probes.liveness.failureThreshold 3 Default value for failureThreshold
probes.readiness.httpGet.path /actuator/health/readiness Default value for path
probes.readiness.httpGet.port 8080 Default value for port
probes.readiness.initialDelaySeconds 30 Default value for initialDelaySeconds
probes.readiness.periodSeconds 5 Default value for periodSeconds
probes.readiness.timeoutSeconds 3 Default value for timeoutSeconds
probes.readiness.failureThreshold 3 Default value for failureThreshold
env [{"name": "SPRING_PROFILES_ACTIVE", "value": "prod"}, {"name": "SERVER_PORT", "value": "8080"}, {"name": "JAVA_OPTS", "value": "-Xms256m -Xmx512m"}] Default value for env
configMap.enabled True Default value for enabled
configMap.data.application.yml server: port: 8080 spring: application: name: springboot-app profiles: active: prod management: endpoints: web: exposure: include: health,info,prometheus endpoint: health: show-details: when-authorized Default value for application.yml
secrets.enabled True Default value for enabled
secrets.data None Default value for data
persistence.enabled False Default value for enabled
persistence.accessMode ReadWriteOnce Default value for accessMode
persistence.size 1Gi Default value for size
persistence.storageClass local-path Default value for storageClass
persistence.mountPath /app/logs Default value for mountPath
autoscaling.enabled False Default value for enabled
autoscaling.minReplicas 1 Default value for minReplicas
autoscaling.maxReplicas 100 Default value for maxReplicas
autoscaling.targetCPUUtilizationPercentage 80 Default value for targetCPUUtilizationPercentage

Private Registry Configuration

To use images from private GitLab registry:

imageCredentials:
  registry: registry.gitlab.com
  username: "your-username"
  password: "your-access-token"
  email: "your-email@example.com"

Nextjs Chart

Version: 0.1.0

Description: Next.js application Helm chart

Installation

helm repo add homerun https://charts.sty.ovh
helm install my-nextjs homerun/nextjs

Configuration Values

Key Default Value Description
replicaCount 2 Default value for replicaCount
image.repository node Default value for repository
image.pullPolicy IfNotPresent Default value for pullPolicy
image.tag 18-alpine Default value for tag
imageCredentials.registry registry.gitlab.com Default value for registry
imageCredentials.username Default value for username
imageCredentials.password Default value for password
imageCredentials.email Default value for email
imagePullSecrets [{"name": "gitlab-registry"}] Default value for imagePullSecrets
nameOverride Default value for nameOverride
fullnameOverride Default value for fullnameOverride
serviceAccount.create True Default value for create
serviceAccount.name Default value for name
podSecurityContext.fsGroup 1001 Default value for fsGroup
securityContext.allowPrivilegeEscalation False Default value for allowPrivilegeEscalation
securityContext.runAsNonRoot True Default value for runAsNonRoot
securityContext.runAsUser 1001 Default value for runAsUser
securityContext.capabilities.drop ["ALL"] Default value for drop
service.type ClusterIP Default value for type
service.port 3000 Default value for port
ingress.enabled True Default value for enabled
ingress.className traefik Default value for className
ingress.annotations.traefik.ingress.kubernetes.io/router.entrypoints web,websecure Default value for traefik.ingress.kubernetes.io/router.entrypoints
ingress.annotations.traefik.ingress.kubernetes.io/router.tls.certresolver letsencrypt Default value for traefik.ingress.kubernetes.io/router.tls.certresolver
ingress.annotations.traefik.ingress.kubernetes.io/router.middlewares default-redirect-https@kubernetescrd Default value for traefik.ingress.kubernetes.io/router.middlewares
ingress.hosts [{"host": "app.sty.ovh", "paths": [{"path": "/", "pathType": "Prefix"}]}] Default value for hosts
ingress.tls [{"secretName": "nextjs-tls", "hosts": ["app.sty.ovh"]}] Default value for tls
resources.limits.cpu 500m Default value for cpu
resources.limits.memory 512Mi Default value for memory
resources.requests.cpu 100m Default value for cpu
resources.requests.memory 128Mi Default value for memory
tolerations [] Default value for tolerations
env [{"name": "NODE_ENV", "value": "production"}, {"name": "PORT", "value": "3000"}] Default value for env
configMap.enabled False Default value for enabled
secrets.enabled False Default value for enabled
persistence.enabled False Default value for enabled
persistence.accessMode ReadWriteOnce Default value for accessMode
persistence.size 1Gi Default value for size
persistence.storageClass local-path Default value for storageClass
autoscaling.enabled False Default value for enabled
autoscaling.minReplicas 1 Default value for minReplicas
autoscaling.maxReplicas 100 Default value for maxReplicas
autoscaling.targetCPUUtilizationPercentage 80 Default value for targetCPUUtilizationPercentage

Private Registry Configuration

To use images from private GitLab registry:

imageCredentials:
  registry: registry.gitlab.com
  username: "your-username"
  password: "your-access-token"
  email: "your-email@example.com"

🔐 Private Registry Setup

All charts support private GitLab Container Registry. Configure your credentials:

# Method 1: Via values.yaml
imageCredentials:
  registry: registry.gitlab.com
  username: "gitlab-username"
  password: "gitlab-access-token"
  email: "your-email@example.com"

# Method 2: Via Helm CLI
helm install my-app homerun/springboot \
  --set imageCredentials.registry=registry.gitlab.com \
  --set imageCredentials.username=myuser \
  --set imageCredentials.password=mytoken

🛠️ Development

Charts are automatically built and published via GitLab CI/CD.

View on GitLab