The buildenv image is used to create manifests and helm values files for different environments, for example test lab, different production sites etc.
It uses a combination of YAML merging and templates to do this.
It relies on four different directories to be mounted into the container under the root directory:
- base: This contains the base templates that will be used for all other operations. These can be organised in any directory structure desired
- environments: This contains the YAML files that will be used to render the templates in "env.yaml" files. Again the directory structure can be anything you like, except that the final directory name component of the path containing an "env.yaml" file will be used to to find a directory of the same name in the top-level of the env_templates directory, so these must match. Additionally the path under environments will be used to create the directory structure in dist
- env_templates: This contains the instructions for merging YAML files from the base (or locally) , using "merge.yaml" files. Any structure can be used, except that the top-level directories must match the final directory name of the "env.yaml" files.
- dist: The final destination for the rendered and merged files
To run in docker:
docker run -v /path/to/dist_dir:/dist -v /path/to/env_templates_dir:/env_templates -v /path/to/base_dir:/base -v /path/to/environments_dir:/environments powerdns/buildenv:1.0.0