๐ท๏ธ Use Helm and Kustomize to install cluster components#
Helm
Helm charts are a package format for Kubernetes that bundle related resources into a versioned, distributable unit, serving as blueprints for deploying applications or services to Kubernetes clusters.
They encapsulate pre-configured Kubernetes manifests, dependencies, and documentation, allowing for standardized, reproducible, and configurable deployments across different environments.
A Helm chart is essentially a directory containing a Chart.yaml file for metadata, a values.yaml file for default configuration values, and a templates/ directory with Kubernetes manifest templates written in YAML and Go templating syntax.
This templating enables dynamic generation of valid Kubernetes manifests by combining templates with user-provided values, facilitating easy customization for various environments like development, staging, or production.
Charts can be versioned, shared via repositories, and managed through Helmโs client, which handles installation, upgrades, and rollbacks, significantly simplifying the management of complex Kubernetes applications.
foo/
โโโ .helmignore # Contains patterns to ignore when packaging Helm charts.
โโโ Chart.yaml # Information about your chart
โโโ values.yaml # The default values for your templates
โโโ charts/ # Charts that this chart depends on
โโโ templates/ # The template files
โโโ tests/ # The test files
Install Helm#
แ
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
แ
chmod +x get_helm.sh
แ
./get_helm.sh && rm get_helm.sh
แ
which helm
/usr/local/bin/helm
Helm usage#
Add, list, search repo.#
แ
helm repo add cilium https://helm.cilium.io/
แ
helm repo update
แ
helm repo list
แ
helm search repo cilium
แ
helm search hub nginx
Template, install.#
แ
helm template cilium cilium/cilium \
--version 1.18.2 --namespace kube-system \
| tee cilium-cni.yaml
แ
helm upgrade cilium cilium/cilium --version 1.18.2 \
--set hubble.relay.enabled=true -n kube-system \
--install -n kube-system
List, uninstall.#
แ
helm list
แ
helm unistall my-app
Manage chart.#
แ
helm show chart ingress-nginx/ingress-nginx --version 4.13.4
แ
helm show values metrics-server/metrics-server
แ
helm status cilium -n kube-system
แ
helm upgrade metrics-server metrics-server/metrics-server -n kube-system --set 'args={--bad-option}'
แ
k get po -n kube-system -l app.kubernetes.io/name=metrics-server
NAME READY STATUS RESTARTS AGE
metrics-server-5dd7b49d79-z6mjg 1/1 Running 3 (129m ago) 4d22h
metrics-server-7444fdc647-krhd4 0/1 CrashLoopBackOff 4 (30s ago) 2m13s
แ
helm -n kube-system history metrics-server
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Fri Oct 31 18:17:51 2025 superseded metrics-server-3.13.0 0.8.0 Install complete
2 Wed Nov 5 16:57:28 2025 deployed metrics-server-3.13.0 0.8.0 Upgrade complete
แ
helm -n kube-system rollback metrics-server 1
Rollback was a success! Happy Helming!
แ
helm -n kube-system history metrics-server
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Fri Oct 31 18:17:51 2025 superseded metrics-server-3.13.0 0.8.0 Install complete
2 Wed Nov 5 16:57:28 2025 superseded metrics-server-3.13.0 0.8.0 Upgrade complete
3 Wed Nov 5 17:00:35 2025 deployed metrics-server-3.13.0 0.8.0 Rollback to 1
แ
k get po -n kube-system -l app.kubernetes.io/name=metrics-server
NAME READY STATUS RESTARTS AGE
metrics-server-5dd7b49d79-z6mjg 1/1 Running 3 (130m ago) 4d22h
แ
helm get manifest
แ
helm get values
Fetch a package.#
แ
helm fetch metrics-server/metrics-server --version 3.13.0 --untar
แ
tree -L 1 --noreport metrics-server
metrics-server
โโโ CHANGELOG.md
โโโ Chart.yaml
โโโ README.md
โโโ RELEASE.md
โโโ ci
โโโ templates
โโโ values.yaml
Or
แ
tar tzf .cache/helm/repository/metrics-server-3.13.0.tgz
metrics-server/Chart.yaml
metrics-server/values.yaml
[...]
Kustomize#
Kustomize is a tool for customizing Kubernetes configurations.
แ
tree --noreport
.
โโโ base
โย ย โโโ deployment.yaml
โย ย โโโ hpa.yaml
โย ย โโโ kustomization.yaml
โย ย โโโ service.yaml
โโโ dev
โย ย โโโ kustomization.yaml
โโโ prod
โโโ kustomization.yaml
แ
find . -name kustomization.yaml | \
while read f; do echo ---;echo "$f";cat "$f";done
---
./dev/kustomization.yaml
resources:
- ../base
namePrefix: dev-
generแ
atorOptions:
labels:
env: dev
---
./base/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
- hpa.yaml
---
./prod/kustomization.yaml
resources:
- ../base
namePrefix: prod-
generatorOptions:
labels:
env: prod
แ
k kustomize ./prod
แ
k kustomize ./dev