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.gitcd garden/examples/demo-project-start
This directory contains two directories, with one container service each,
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
This will create a basic boilerplate project configuration in the current directory, making it our project root. With the comments stripped out, it should look something like this:
kind: Projectname: demo-projectenvironments:- name: defaultproviders:- 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
cd backendgarden create modulecd ..
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
cd frontendgarden create modulecd ..
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. You'll find a number of commented-out fields, which reveal all the options available for the
container module type. One of the is the
services field. Just to keep things simple for now, go ahead and replace that block (or append to the file) the following:
services:- name: backendports:- name: httpcontainerPort: 8080servicePort: 80ingresses:- path: /hello-backendport: 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: frontendports:- name: httpcontainerPort: 8080ingresses:- path: /hello-frontendport: http- path: /call-backendport: httpdependencies:- backend
This does the same for the
frontend service, with the addition of declaring a runtime dependency on the
Now, let's move on to our next section, and connect to a Kubernetes cluster.