Garden is a developer tool that automates your workflows and makes developing and testing Kubernetes applications faster and easier than ever.
Keep your development environment up-to-date as you code, and get rapid feedback.
Develop and iterate as quickly with remote clusters as you do locally, and share development clusters with your team. With remote clusters you can even run Garden without Kubernetes or Docker installed on your machine!
Start simple and grow complexity gradually as your needs evolve. Use simplified abstractions to start, and move to raw Kubernetes YAML, Helm, etc. only when you have to.
Simplify your CI by running the same commands and configuration during development and testing—and use the same build and test caches!
If you’re using Garden or if you like the project, please ★ star this repository to show your support 💖
Spin up your whole stack with a single command, and (optionally) watch for changes. Only what’s needed gets re-built, re-deployed, and/or re-tested, so you get a much faster feedback loop.
Shared development clusters with fast in-cluster building and image caching for Kubernetes. This allows teams to easily share build and test results, and for CI to become much faster because it can use the same build and test caches as the team.
Get helpful information when your deployments fail. Garden collects events and logs and displays them prominently when issues come up, and strives to "fail fast", so that you don't need to wait for timeouts or dive into kubectl whenever something is wrong.
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 the above list, or create custom module types tailored to your needs (due summer 2019).
(Check out our documentation for more detailed instructions)
brew tap garden-io/gardenbrew install garden-cli
curl -sL https://get.garden.io/install.sh | bash
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/garden-io/garden/master/support/install.ps1'))
Note: This example assumes you have a local Kubernetes instance running.
Clone the repo and change into the
git clone https://github.com/garden-io/garden.gitcd garden/examples/demo-project
Set up your environment, build the services and deploy the project by running:
The services are now running on the Garden framework. You can see for yourself by querying the
/hello-backend endpoint of
backend’s running container:
garden call backend/hello-backend
To run tests for all modules:
And if you prefer an all-in-one command that watches your project for changes and re-builds, re-deploys, and re-tests automatically, try:
You can leave it running and change one of the files in the project, then watch it re-build and re-test as you edit your code!
You can find Garden’s full documentation at https://docs.garden.io.
Using Garden—short Guides on incrementally adding the main Garden constructs to your project.
Guides—development workflows, Garden configuration files, usage with remote Kubernetes clusters, and setting up hot reload.
Reference—glossary, commands reference, configuration files reference, and template strings reference.
The examples folder of our repository also shows a myriad of different ways to use Garden. Check out the README in each example for more information
Garden runs as a developer tool on your machine or in CI, that looks at your source code and configuration files, runs tests, and resolves your changes to update your development environment. Garden can watch your files and run continuously, or you can trigger it manually via the CLI.
For configuration, Garden 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 help you develop and test faster.
Until Garden reaches 1.0, APIs may still change between minor releases (0.x). Patch releases (0.x.y) are guaranteed not to include any breaking changes. We detail all breaking changes in our release notes.
Please join the #garden channel on the Kubernetes Slack to ask questions, discuss how Garden can fit into your workflow, or just chat about all things DevOps.
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.
When running Garden for the first time, we'll ask you to opt in to our analytics. We are trying to make Garden the best tool possible, and it's very useful for us to inform the future development of Garden with data on how it's being used.
When you opt-in we will collect information about the commands you run, the tasks getting executed, the project and operating system. We care about your privacy and we take special care to anonymize all the information. For example, we hash module names, and use randomly generated IDs to identify projects.
If you change your mind and would like to update your analytics settings, please run (from within a project):
garden config analytics-enabled true|false
Garden is licensed according to Mozilla Public License 2.0 (MPL-2.0).