Kustomize is an incredibly powerful tool for integrating existing Kubernetes manifests in your own cluster. You can write a configuration file in YAML that references the manifest you want to install. That manifest can include local files as well as remote repositories.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.6.2
This configuration will pull in the local deployment.yaml as well as the
CustomResourceDefinitions that are hosted in the Gateway API repository.
When you run kustomize build the combined YAML to configure your cluster
will be sent to stdout. This can be piped into a .yaml file if you
would like to examine or save the configuration.
However, Kustomize will only output the config as a single YAML file with
multiple “documents” concatenated together. If you want to split this output
across multiple files, the yq command line
utility provides a handy way of
doing just that.
kustomize build | yq --split-exp '.metadata.name + ".yaml"' --no-doc
Here, we pipe the output of kustomize build to yq. Passing the --split-exp flag
tells yq to split the input into separate documents. It takes an argument that
uses the yq expression language (which is the same as
jq) to name the files based on the value in the
YAML document’s metadata.name field. The --no-doc flag simply omits the --- used
to separate YAML documents from the output.
I hope you enjoy using this!