Kustomize

Intro

Rok and Kubeflow use Kustomize to define, configure and deploy their manifests in a customizable and GitOps-friendly way. This document aims to familiarize you with the ways we use kustomize.

Installing multiple kustomizations

To ease the GitOps process, we have developed a Kustomize plugin that allows for combining different kustomizations together into a single-toplevel one. Currently our manifests ship two separate toplevel kustomizations: one for installing Rok standalone, and one for installing Kubeflow on top of Rok.

This plugin introduces a custom generator, KustomizeInflator, which takes multiple kustomization paths as input and emits the result of kustomize build --load_restrictor=none --enable_alpha_plugins as output. The example below is a snippet taken from Rok’s generator:

apiVersion: builtin kind: KustomizeInflator metadata: name: rok kustomizationPaths: # Rok Namespaces - ../../rok/rok-namespaces/overlays/deploy # Rok External Services - ../../rok/rok-external-services/etcd/overlays/deploy - ../../rok/rok-external-services/postgresql/overlays/deploy - ../../rok/rok-external-services/redis/overlays/deploy # Rok Components ...

The generator above is actually the plugin’s configuration file, which is the only thing declared in the kustomization.yaml.