Skip to content

larakube/larakube

ArtifactHUB GitHub License GitHub Release GitHub Actions Workflow Status - Lint

LaraKube

LaraKube is a Helm chart to run Laravel applications on Kubernetes (K8S).



Docs Badge ArtifactHUB Badge

Features

  • Horizontal autoscaling
  • Multiple queue workers
  • K8S-native Laravel scheduler
  • Ingress configuration for Traefik
  • Useful middlewares for Traefik
    • Redirect to HTTPS
    • Compression
  • Certificates management with Cert-Manager

Values

Key Type Default Description
affinity object {} Affinity rules for scheduling the pod.
databaseMigration.enabled bool false Enable or disable database migrations.
databaseMigration.env object {} Environment variables specific to the database migration container.
databaseMigration.resources object {} Resource requests and limits for the database migration container.
databaseMigration.retry int 0 The number of times to retry the database migration.
env object {} Environment variables to set in the container.
fullnameOverride string "" Overrides the full name of the chart.
image.pullPolicy string "IfNotPresent" The policy for pulling the Docker image (e.g., IfNotPresent, Always).
image.repository string ""
image.tag string "" Overrides the image tag whose default is the chart appVersion.
imagePullSecrets list [] List of secrets to use for pulling the Docker image.
ingress.annotations object {} Annotations to add to the ingress resource.
ingress.className string "" The ingress class name.
ingress.enabled bool false Enable or disable the ingress resource.
ingress.hosts list [{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}] The hostname to use for the ingress.
ingress.hosts[0].paths list [{"path":"/","pathType":"ImplementationSpecific"}] The path to use for the ingress.
ingress.hosts[0].paths[0].pathType string "ImplementationSpecific" The type of path (e.g., ImplementationSpecific, Exact, Prefix).
ingress.tls list [] TLS configuration for the ingress.
nameOverride string "" Overrides the name of the chart.
nodeSelector object {} Node selector for scheduling the pod.
podAnnotations object {} Annotations to add to the pod.
podLabels object {} Labels to add to the pod.
podSecurityContext object {} Security context for the pod.
revisionHistoryLimit int 2 The number of old ReplicaSets to retain.
scheduler.command list ["/bin/sh","-c","php artisan schedule:run"] The command to run the scheduler.
scheduler.enabled bool true Enable or disable the scheduler.
scheduler.env object {} Environment variables specific to the scheduler container.
scheduler.resources object {} Resource requests and limits for the scheduler container.
scheduler.schedule string "* * * * *" The schedule for the scheduler (e.g., every minute).
secretEnvs list [] Secret environment variables to set in the container.
securityContext object {} Security context for the container.
service.containerPort int 8000 The port on which the container will listen.
service.port int 80 The port on which the service will be exposed.
service.type string "ClusterIP" The type of service (e.g., ClusterIP, NodePort, LoadBalancer).
serviceAccount.annotations object {} Annotations to add to the service account.
serviceAccount.automount bool true Automatically mount a ServiceAccount's API credentials?
serviceAccount.create bool true Specifies whether a service account should be created.
serviceAccount.name string "" The name of the service account to use. If not set and create is true, a name is generated using the fullname template.
tolerations list [] Tolerations for scheduling the pod.
topologySpreadConstraints list [] Topology spread constraints for scheduling the pod.
volumeMounts list [] Additional volumeMounts on the output Deployment definition.
volumes list [] Additional volumes on the output Deployment definition.
web.affinity object {} Affinity rules for the web deployment.
web.autoscaling object {"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80} Autoscaling configuration for the web deployment.
web.autoscaling.enabled bool false Enable or disable autoscaling for the web deployment.
web.autoscaling.maxReplicas int 100 The maximum number of replicas for autoscaling.
web.autoscaling.minReplicas int 1 The minimum number of replicas for autoscaling.
web.autoscaling.targetCPUUtilizationPercentage int 80 The target CPU utilization percentage for autoscaling.
web.certManager object {"domains":[],"enabled":false,"issuer":""} Cert-Manager configuration for managing TLS certificates.
web.certManager.domains list [] The domains to use for Cert-Manager.
web.certManager.enabled bool false Enable or disable Cert-Manager.
web.certManager.issuer string "" The issuer to use for Cert-Manager.
web.env object {} Environment variables specific to the web container.
web.livenessProbe object {} Liveness probe configuration for the web container.
web.pdb object {"enabled":false,"maxUnavailable":0} PodDisruptionBudget configuration for the web deployment.
web.pdb.enabled bool false Enable or disable the PodDisruptionBudget for the web deployment.
web.pdb.maxUnavailable int 0 The maximum number of pods that can be unavailable during a disruption. minAvailable: 1
web.readinessProbe object {} Readiness probe configuration for the web container.
web.replicaCount int 1 The number of replicas for the web deployment.
web.resources object {} Resource requests and limits for the web container.
web.startupProbe object {} Startup probe configuration for the web container.
web.tolerations list [] Tolerations for the web deployment.
web.topologySpreadConstraints list [] Topology spread constraints for the web deployment.
web.traefik.basicAuth object {"enabled":false,"realm":"","secret":""} Configuration for basic authentication
web.traefik.basicAuth.enabled bool false Enable or disable basic authentication for Traefik.
web.traefik.basicAuth.realm string "" Basic auth realm (f.e. name of the site that you are restricting access to)
web.traefik.basicAuth.secret string "" Name of the secret that contains the user credentials. See https://doc.traefik.io/traefik/middlewares/http/basicauth/#users for more info
web.traefik.compress bool true Enable or disable compression for Traefik.
web.traefik.customRequestHeaders object {} Custom request headers to use for Traefik.
web.traefik.customResponseHeaders object {} Custom response headers to use for Traefik.
web.traefik.domain string "" The domain to use for Traefik.
web.traefik.domainRedirects list [] Domains that redirect to the main domain (f.e. redirect www to non-www) Please keep in mind that the certificate need include this domain as well. Example: - domain: www.some-site.test
web.traefik.enabled bool false Enable or disable Traefik ingress.
web.traefik.extraMiddlewares list [] Extra middlewares to use for Traefik.
web.updateStrategy object {"rollingUpdate":{"maxSurge":1,"maxUnavailable":0},"type":"RollingUpdate"} Update strategy for the web deployment.
web.updateStrategy.rollingUpdate object {"maxSurge":1,"maxUnavailable":0} Rolling update configuration.
web.updateStrategy.rollingUpdate.maxSurge int 1 The maximum number of pods that can be created above the desired number of pods during an update.
web.updateStrategy.rollingUpdate.maxUnavailable int 0 The maximum number of pods that can be unavailable during an update.
web.updateStrategy.type string "RollingUpdate" The update strategy for the web deployment (e.g., RollingUpdate, Recreate).
worker.default.autoscaling object {"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80} Autoscaling configuration for the worker deployment.
worker.default.autoscaling.enabled bool false Enable or disable autoscaling for the worker deployment.
worker.default.autoscaling.maxReplicas int 100 The maximum number of replicas for autoscaling.
worker.default.autoscaling.minReplicas int 1 The minimum number of replicas for autoscaling.
worker.default.autoscaling.targetCPUUtilizationPercentage int 80 The target CPU utilization percentage for autoscaling.
worker.default.env object {} Environment variables specific to the worker container.
worker.default.livenessProbe object {} Liveness probe configuration for the worker container.
worker.default.pdb.enabled bool false Enable or disable the PodDisruptionBudget for the worker deployment.
worker.default.pdb.maxUnavailable int 0 The maximum number of pods that can be unavailable during a disruption. minAvailable: 1
worker.default.readinessProbe object {} Readiness probe configuration for the worker container.
worker.default.replicaCount int 1 The number of replicas for the worker deployment.
worker.default.resources object {} Resource requests and limits for the worker container.
worker.default.startupProbe object {} Startup probe configuration for the worker container.
worker.default.updateStrategy.type string "Recreate" The update strategy for the worker deployment (e.g., RollingUpdate, Recreate).

Contributing

Contributions are welcome.

License

This project is licensed under the Apache License 2.0. Please see license file for more information.

Credits

Thanks to mrbenosborne for donating the "larakube" GitHub organization name.

About

Laravel Helm Chart - Deploy Laravel applications on Kubernetes (K8S)

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks