Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
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.
Inside an Image: Layers, Tags, Digests, Registries and Multi-platform Manifests
An image is made of read-only layers, a config and a manifest listing them; for multi-platform images the tag points to an index with one manifest per architecture. Tags move, digests do not: on a local registry we repoint a tag to another image and see what a digest pin buys, read Docker Hub's rate-limit header, and look at the containerd image store and a semver plus SHA tag strategy instead of latest.
What Is a Container? How It Differs from a VM, Namespaces, cgroups and the OCI Standard
A container is an ordinary Linux process that shares the host's kernel, with namespaces limiting what it can see and cgroups limiting how much it can use. We watch nginx from inside and outside and compare PIDs, find the docker CLI → dockerd → containerd → runc chain in the process tree, run the same image with Podman and discuss when a container is unnecessary.