Kustomize Lab💣
Lab Overview💣
In this lab we use
kustomize
CLI tool for templating kubernetes.yaml
files, but first we will build out the directory structure and populate the necessary files.
Finally we will compare the files that thekustomize
tool generated to understand howkustomize
is implemented
Kustomize💣
Lab💣
- Verify kustomize is installed
kustomize version
which kustomize
NOTE for Ubuntu users (if kustomize was installed via snap you’ll see errors, so let’s verify
The which command tells you the path where the kustomize cli tool is installed, if you see snap in the path, uninstall it and reinstall using the directions on this page
- Create the file structure
cd ~/Desktop/configlabs
mkdir -p sample-app/base
mkdir -p sample-app/overlays/development
mkdir -p sample-app/overlays/production
- Create the base deployment yaml and open to edit
vi sample-app/base/deployment.yaml
- Add base pod to the file and save
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: nginx
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 80
- Create the base kustomization.yaml and open to edit
vi sample-app/base/kustomization.yaml
- Add the following contents and save
# Specifies the files to include when kustomize builds the application
resources:
- deployment.yaml
Create an overlay file and open to edit
vi sample-app/overlays/development/replica_count.yaml
- Add the following contents and save
# Overlay to increase the replicaCount
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 3
- Create an overlay kustomization file and open to edit
vi sample-app/overlays/development/kustomization.yaml
- Add the following contents
# Specifies the base files
bases:
- ../../base
# Specifies overrides to the base files
patches:
- replica_count.yaml
-
Generate Kustomize output
kustomize build sample-app/overlays/development cat sample-app/base/deployment.yaml
Compare the 2 outputs and notice the replicaCount of 3 was overlaid onto the base file
Bonus round!💣
-
Generate a production deployment with kustomize
Create the
kustomization.yaml
andreplica_count.yaml
for production environmentvi sample-app/overlays/production/kustomization.yaml
Add the following contents
bases: - ../../base patches: - replica_count.yaml
vi sample-app/overlays/production/replica_count.yaml
Add the following contents
apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: replicas: 200
Now create the deployment file for our production environment💣
- ```bash
kustomize build sample-app/overlays/production
This should spit the following out to the terminal: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: replicas: 200 selector: matchLabels: app: hello-world template: metadata: labels: app: hello-world spec: containers: - image: nginx name: hello-world ports: - containerPort: 80 resources: limits: cpu: 500m memory: 128Mi