Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
7 posts found #helm
What Is Helm and How Is It Different from Kustomize? Charts, Releases, Repositories and Installing Helm 4
DevOps PART 01

What Is Helm and How Is It Different from Kustomize? Charts, Releases, Repositories and Installing Helm 4

Helm templates Kubernetes manifests, packages them as charts and records each installation as a release with upgrade, rollback and history, while Kustomize only overlays plain YAML. We install Helm 4, install the Valkey chart from Artifact Hub, open the Secret where the release is stored, and use Bitnami's 2025 catalog change to examine, with real output, a release that shows 'deployed' but never starts.

15 Nov 2026 12 min 10
Your First Chart: Packaging Bookstore.Api with helm create, Chart.yaml, templates/ and values.yaml
DevOps PART 02

Your First Chart: Packaging Bookstore.Api with helm create, Chart.yaml, templates/ and values.yaml

A Helm chart consists of Chart.yaml (the chart's version and the application's appVersion), values.yaml (the chart's interface) and the Go templates in templates/. We trim the helm create skeleton, turn Bookstore.Api's Deployment, Service and ServiceAccount into templates, and look with real output at the built-in objects, the difference between helm template and --dry-run=server, and the pitfalls of fixed resource names and an image tag that ignores appVersion.

15 Nov 2026 13 min 9
The Helm Template Language: Go Templates, Functions, _helpers.tpl, include, Flow Control and Whitespace
DevOps PART 03

The Helm Template Language: Go Templates, Functions, _helpers.tpl, include, Flow Control and Whitespace

Helm templates are Go text/template plus Sprig and Helm functions; shared labels and names are defined in _helpers.tpl with define and called with include, and when the scope changes the root is reached through $. We add bookstore-web to the Bookstore chart as a second component and look with real output at the checksum annotation that restarts pods on config changes, whitespace and indentation errors, and how tpl and lookup behave in dry runs.

15 Nov 2026 13 min 11
Designing Values: Per-environment Values, --set, Validation with values.schema.json and Secrets
DevOps PART 04

Designing Values: Per-environment Values, --set, Validation with values.schema.json and Secrets

Helm merges values from the chart defaults, then the -f files in order and finally --set; values.schema.json validates the merged result, and secrets enter not through values but as a reference to an existing Secret. We build dev, staging and prod values files for Bookstore and look with real output at Helm 4's multi-document values and --set-json, the comma and dot pitfalls of --set, meaningful errors with required and fail, and an upgrade where --reuse-values swallows new defaults.

15 Nov 2026 12 min 9
Managing Releases: install, upgrade --install, rollback, history, --wait and Migrations with Hooks
DevOps PART 05

Managing Releases: install, upgrade --install, rollback, history, --wait and Migrations with Hooks

helm upgrade --install is the deploy command that leads to the same result on every run; a pre-upgrade hook runs the migration before the Deployment, but a rollback does not undo the database migration. We run Bookstore's EF Core migration bundle as a hook against SQL Server and look with real output at three real hook failures, Helm 4's kstatus-based --wait and --rollback-on-failure, recovering a release stuck in pending-upgrade, and server-side apply's field ownership conflicts.

15 Nov 2026 15 min 10
Dependencies, OCI Registries and Testing Charts: Chart.lock, helm push, lint, helm test and CI
DevOps PART 06

Dependencies, OCI Registries and Testing Charts: Chart.lock, helm push, lint, helm test and CI

Chart dependencies are declared with a range in Chart.yaml and pinned with Chart.lock; the chart is published to an OCI registry with helm package and helm push, but the registry does not stop you from pushing the same version again with different content. We add an optional Valkey subchart and global.imageRegistry to the Bookstore chart and look with real output at Helm 4's registry login and install-by-digest, kubeconform, helm test, chart-testing and a GitHub Actions workflow that runs them.

15 Nov 2026 15 min 9
From Helm 3 to Helm 4: What Changed, What Breaks and the Helm 3 EOL Timeline
DevOps PART 07

From Helm 3 to Helm 4: What Changed, What Breaks and the Helm 3 EOL Timeline

Helm 4 manages Helm 3 charts and releases unchanged; what breaks are scripts, plugins and post-renderers, and Helm 3's security support ends on February 10, 2027. We run Helm 3.22 and Helm 4.3 side by side and look with real output at server-side apply latching, how mixing the two versions undoes server-side apply, flag and log changes, post-renderers becoming plugins, the experimental Chart v3 and a Helm 2 era chart, and finish with a migration checklist.

15 Nov 2026 12 min 10
Blog Map