Multiple Environments with Layering
You can use Kubes to easily create multiple environments with the same YAML configs. This is thanks to Kubes Layering. We’ll walk through an example to help understand how it works.
Creating Multiple Environments
To create multiple environments like dev and prod just change KUBES_ENV. Example:
KUBES_ENV=dev kubes deploy KUBES_ENV=prod kubes deploy
Different env files will be layered and merged to produce YAML files specific to each environment.
Here’s an example structure, so we can understand how layering works to create multiple environments.
.kubes/resources/ ├── base │ ├── all.yaml │ └── deployment.yaml └── web ├── deployment │ ├── dev.yaml │ └── prod.yaml ├── deployment.yaml └── service.yaml
Let’s look at a concrete web/deployment.yaml.
Here are the files that get layered when
.kubes/resources/base/all.yaml .kubes/resources/base/deployment.yaml .kubes/resources/web/deployment.yaml .kubes/resources/web/deployment/dev.yaml
.kubes/resources/base/all.yaml .kubes/resources/base/deployment.yaml .kubes/resources/web/deployment.yaml .kubes/resources/web/deployment/prod.yaml
Layering allows us to have common settings that are processed before your main
.kubes/resources/web/deployment.yaml YAML manifest. And then add environment specific YAML files that get merged.
Variables and Helpers
Additional, you can use variables and helpers to provide environment specific values.