Links

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.
Now, let's move on to our next section, and connect to a Kubernetes cluster.