Migrate to Kustomize
Kustomize is a useful tool for customizing Kubernetes resources declaratively. With Kustomize you can specify patches or new resources that can be applied to a specific runtime environment.
To migrate from a default project to a Kustomize project you need to follow these steps:
Since Kustomize uses a folder structure that is different from the default project's one, you need to manually move resources in the git repository.
First of all, you need to move all of your environment folders (located at
configuration/%envId%
) to a new first-level directory calledoverlays
. Then, move thevariables/%envId%.env
files intooverlays/%envId%/variables.env
.Create the file
configuration/kustomization.yaml
with the following content:apiVersion: kustomize.config.k8s.io/v1beta1
kind: KustomizationAnd the
overlays/%envId%/kustomization.yaml
files with the following content:apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../configurationFor more information on how to fill the
kustomization.yaml
files, please refer to the official documentation.In practice, you should change the structure from this one:
.
├── configuration
│ ├── %resourceName%.yaml
│ └── %envId%
| └── %resourceName%.yaml
└── variables
└── %envId%.envTo this one:
.
├── configuration
│ ├── kustomization.yaml
│ └── %resourceName%.yaml
└── overlays
└── %envId%
├── kustomization.yaml
├── variables.env
├── %resourceName%.yaml
└── %patchName%.patch.yamlEnable the feature from the CMS. Go to the projects page, search for the project and select it. Inside the project drawer go to the
deploy
section and add the following property:"projectStructure": "kustomize"
to the deploy configuration JSON object.Configure the deploy pipeline. Add in the deploy pipeline the command to generate the customized resources with
mlp
:mlp hydrate "configuration" "overlays/${ENV_ID}"
mlp kustomize "overlays/${ENV_ID}" -o "${DESTINATION_FILE}"This command will generate the customized resources for the provided
${ENV_ID}
environment and store them into a single file at${DESTINATION_FILE}
. The generated file should then be provided as an argument to themlp deploy
command later in the pipeline.
Once you have migrated your project successfully, learn how to manage a Kustomize project here.