Comparison between Helm and Kustomize for Kubernetes yaml management

Basic Comparison

Comparison in creating Helm and Kustomize

helm install helm-example — debug — dry-run ./helm-example
helm lint helm-example
helm install helm-example — debug ./helm-example
helm ls
helm test helm-example
helm package helm-example
helm repo index ./ — url https://nakamasato.github.io/helm-charts-repo
helm repo add nakamasato https://nakamasato.github.io/helm-charts-repo
helm repo update # update the repository info
helm search repo naka
helm install example-from-my-repo nakamasato/helm-example
helm upgrade -f values-prod.yaml helm-example nakamasato/helm-example -n helm-prod
mkdir -p kustomize-example/{base,overlays/dev,overlays/prod} && cd kustomize-example
tree
.
├── base
└── overlays
├── dev
└── prod
4 directories, 0 files
kubectl apply -k overlays/dev
kubectl apply -k overlays/prod

Continuous Delivery (CD)

Final Example: Deploy a sample application to multiple environments (dev and prod) with Helm and Kustomize using ArgoCD

kubectl create namespace argocd 
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.3/manifests/install.yaml
kubectl create ns database
kubectl -n database apply -f https://raw.githubusercontent.com/nakamasato/kubernetes-training/master/helm-vs-kustomize/dependencies/mysql/mysql.yaml
kubectl apply -f argocd/helm
kubectl apply -f argocd/kustomize
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath=’{.data.password}’ | base64 — decode
kubectl port-forward svc/argocd-server 8080:80 -n argocd

Personal Preference after comparison

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store