1. Initialize a Project
With the Garden CLI installed, we'll kick off by configuring a simple example project for use with Garden.
Start by cloning our repo and finding the example project:
git clone https://github.com/garden-io/garden.git
cd garden/examples/demo-project-start
This directory contains two directories, with one container service each,
backend
and frontend
. We'll first define a boilerplate Garden project, and then a Garden module for each of the services.To initialize the project, we can use a helper command:
garden create project --skip-comments
This will create a basic boilerplate project configuration in the current directory, making it our project root.
kind: Project
name: demo-project
environments:
- name: default
providers:
- name: local-kubernetes
We have one environment (
default
) and a single provider. We'll get back to this later.Next, let's create module configs for each of our two modules, starting with
backend
. You can omit the --skip-comments
flag to create a module with commented-out fields, which reveal all the options available.cd backend
garden create module --skip-comments
cd ..
You'll get a suggestion to make it a
container
module. Pick that, and give it the default name as well. Then do the same for the frontend
module:cd frontend
garden create module --skip-comments
cd ..
This is now enough configuration to build the project. Before we can deploy, we need to configure
services
in each module configuration, as well as set up a local cluster or connect to a remote cluster.Starting with the former, go ahead and open the newly created
backend/garden.yml
file. Just to keep things simple for now, go ahead and append to the file the following:services:
- name: backend
ports:
- name: http
containerPort: 8080
servicePort: 80
ingresses:
- path: /hello-backend
port: http
This is enough information for Garden to be able to deploy and expose the
backend
service. Now do the same for the frontend
service, with the following block:services:
- name: frontend
ports:
- name: http
containerPort: 8080
ingresses:
- path: /hello-frontend
port: http
- path: /call-backend
port: http
dependencies:
- backend
This does the same for the
frontend
service, with the addition of declaring a runtime dependency on the backend
service.Last modified 1mo ago