Deploy Local Charts
DevSpace can deploy Helm charts located on the same filesystem as the devspace.yaml
file.
Local Charts vs Dependencies
If you have multiple services located in the same git repository (monorepo), you may be tempted to have a single devspace.yaml
at the root of the git repository and then specify one deployment for each service using a local path to each service's chart folder, for example. However, ideally you want to encapsule the build, deployment and development logic for each service inside a separate devspace.yaml that is located very closely to the actual code.
Instead of creating one giant devspace.yaml
at the root of a monorepo, it's recommended to create separate devspace.yaml
files in each sub-project contained in the monorepo because this has several benefits:
- It keeps the
devspace.yaml
for each microservice small and bundled with the actual microservice itself. - It allows you work on microservices independenctly (start a
devspace dev
session for each service if needed) - It only pulls in and deploys other microservices if they are actually needed.
Dependencies: DevSpace provides a feature called dependencies
which allows you to define relationships between devspace.yaml
files to allow users to start working on a service while DevSpace stands up and maintains dependent microservices if needed.
Chart Sources
To deploy a local Helm chart, you need to tell DevSpace where to locate the chart.
From Folder
A common structure is to have a folder in your git repository which contains the Helm chart for this service. In this case, use the path
field to specify the path to the Helm chart folder relative to the devspace.yaml
file.
version: v2beta1
deployments:
payments:
helm:
chart:
path: ./payments/chart/
values:
key: value
...
valuesFiles:
- ./payments/helm-values-dev.yaml
From Tar Archive
In case you want to deploy a Helm chart that has been archived to a tar
file (or a compressed .tar.gz
for example), you can use the path
field to specify the path to the archive file relative to the devspace.yaml
file.
version: v2beta1
deployments:
payments:
helm:
chart:
path: ./payments/chart.tar.gz
values:
key: value
...
valuesFiles:
- ./payments/helm-values-dev.yaml