Introduction

CircleCI

Garden is a development orchestrator for Kubernetes, containers and functions, designed to make it easy to rapidly develop and test multi-service systems.

It is centered around the Stack Graph, which allows you to fully codify how each part of your stack is built, deployed and tested—making your workflow reproducible and portable.

With the Stack Graph, each part of your stack can describe itself using simple, intuitive declarations, without changing any of your code. Garden collects all of your declarations—even across multiple repositories—into a full graph of your stack, and leverages that information to dramatically improve your developer experience.

If you’re using Garden or if you like the project, please ★ star this repository to show your support 💖

Key features

  • Spin up your whole stack with a single command, and (optionally) watch for changes. Because of the Stack Graph, only what's needed gets re-built, re-deployed, and/or re-tested, so you get a much faster feedback loop.

  • Easily write integration test suites that have runtime dependencies. Run tests before pushing your code to CI, and avoid having to mock or stub your own services.

  • Define tasks that run as part of your deployment process—e.g. database migrations or scaffolding.

  • Hot reload lets you near-instantaneously update code and static files in containers as they run, for services that support in-place reloading.

  • Remote sources support allows your project to automatically pull code from different repositories.

  • The built-in web dashboard gives you a full overview of your stack (and many more UI features are planned to further aid with development).

  • Build, test and deploy Docker containers, Helm charts, OpenFaaS functions and more.

  • An extensible plug-in system ensures you'll later be able add anything that's not on this list, or create custom module types tailored to your needs (due in April 2019).

  • Enterprise version only: In-cluster building and image caching for Kubernetes. Please reach out to learn more!

Note: The project is in beta. APIs may still change slightly across versions, and some features are still experimental.

Dashboard

Quick start

Head over to the Basics section in our documentation for details on how to set up and use Garden, or look through our Demo Project guide for a brief introduction to how it works.

Documentation

You can find Garden's full documentation at https://docs.garden.io.

Overview:

  • Basics—installation instructions, our quick start guide, and an overview of the main concepts around Garden.

  • Using Garden—features and usage, Garden configuration files, usage with remote clusters, and setting up hot reload.

  • Example Projects—guides based on some of the examples.

  • Reference—glossary, commands reference, configuration files reference, and template strings reference.

  • FAQs.

Examples

The examples folder of our repository shows a myriad of different ways to use Garden.

For written guides based on some of these examples, check out the examples section of our documentation.

Here are a few simple examples of Garden configuration files:

kind: Module
type: helm
name: redis
description: Redis service for message queueing
chart: stable/redis
version: 6.4.3
kind: Module
type: openfaas
name: hello-function
description: My OpenFaaS function
lang: node
kind: Module
type: container
name: backend
description: Go service container
services:
- name: backend
ports:
- name: http
containerPort: 80
ingresses:
- path: /backend
port: http
tests:
- name: integ
command: [./test]
dependencies: [my-other-service]

Please browse our examples directory for full project configurations and further context.

Support

Please join the Garden Slack workspace to ask questions, discuss how Garden might fit into your workflow, or just chat about all things DevOps.

Acknowledgements

Garden would not be possible without an amazing ecosystem of open-source projects. Here are some of the projects that Garden uses, either directly or indirectly:

Garden, as a company, is also a proud member of the CNCF.

License

Garden is licensed according to Mozilla Public License 2.0 (MPL-2.0).