DevOps and Kubernetes platforms
We build and run Kubernetes clusters on our own hardware, plus CI/CD pipelines. A server failure needs no night-time intervention, and new versions reach production on a working day — no maintenance windows, no overtime.
- 01Kubernetes (k3s) on bare metal and Proxmox
- 02GitLab CI, container registry, canary releases
- 03Ansible, Helm, cert-manager, MetalLB, Longhorn
- 04Monitoring and logs (Prometheus, Loki, Grafana, Zabbix)
For us DevOps is not a set of tools but the answer to one question: what does it cost to ship a change safely? If the answer is "a day of work and a lot of stress", there will be few changes, and each one will be risky.
Fewer on-call shifts: a server failure is no longer an emergency
Failures always happen — sometimes a disk or a power supply gives out, sometimes the software does. When an application runs on one specific server, every such failure means downtime and a call to whoever is on duty. Guaranteeing even minimal availability then takes on-call shifts, Sundays and holidays included — expensive and exhausting for the team.
In a redundant Kubernetes cluster, applications run as several copies spread across different servers. When one server goes down:
- traffic automatically moves to the copies on the remaining nodes,
- the cluster starts the missing copies elsewhere on its own,
- users notice nothing — only the monitoring systems see the failure.
Losing an entire server often needs no immediate action at all. Fixing the hardware becomes a task for the next working day rather than a middle-of-the-night intervention. Monitoring still watches everything, but far fewer alerts need a human to react right away — which directly lowers the cost of running the system.
Cheaper deployments: no weekend windows, no overtime
When deploying a new version means downtime, it gets scheduled for the night or the weekend — with overtime and the risk of something going wrong while everyone is tired. In a Kubernetes cluster with a CI/CD pipeline it works differently:
- Health checks hold back a faulty release. A new version gets traffic only once it responds fully correctly. If it never does, the previous version keeps serving users and only the team sees the problem.
- Canary deployments. A new version goes to a canary environment and a limited share of traffic first, so errors surface before they reach everyone.
- Fast rollback. The previous version is always at hand. Rolling back is one command and a few minutes, not restoring a server from backup.
- Deployments during working hours. Since a deployment does not interrupt service, there is no need to wait for a weekend maintenance window. New versions reach production when they are ready — on a working day, with no overtime costs.
The result: changes ship more often and in smaller batches, and each one is less risky and cheaper.
What we do
- Bare-metal Kubernetes clusters — designed and built from scratch: virtualisation on Proxmox, a highly available control plane, load balancers, distributed storage, overlay networking. We run clusters with hundreds of pods across several environments.
- CI/CD — from commit to production: build, tests, image, registry, deployment. Test, beta, canary and production environments with rolling updates and health checks.
- Legacy modernisation — moving applications from decade-old application servers into containers, step by step and backed by comparison tests.
- Infrastructure automation — Ansible for nodes, Helm for applications, certificates and DNS managed automatically.
- Observability — metrics, logs and alerts that tell you what happened before the customer calls.
Why our own clusters
Kubernetes platforms managed by third parties are convenient, but they do not always give you full flexibility:
- limited access to the scheduler — you cannot influence everything that decides where and how your applications run,
- scaling limits — the number of nodes, resources or machine types depends on the provider's offer and quotas,
- extra procedures — more storage or a higher resource quota can mean a separate request and waiting for approval.
Your own cluster means complete freedom: you decide on application placement, scaling and resources — and on what they cost. Under steady load, your own hardware can be several times cheaper, and your data stays where you want it.
That freedom does require more expertise: you need to know how such a cluster breaks and how to fix it. We have that expertise — we have been running a production bare-metal cluster since November 2023. We describe the details in our article on migrating to k3s.
Related reading
2026-09-25
Moving a dozen-plus applications to our own k3s cluster — problems and payoffs
Our third bare-metal Kubernetes cluster — the first in production for a client. Running since November 2023, it serves about 20 applications across four environments. The architecture, seven problems that surprised us, and what we actually gained.
2026-10-18
Kubernetes is not just a new way to deploy. It changes your operational habits
Moving applications from servers into containers is the smaller part of the job. The bigger part is dropping old habits — host monitoring, logs in /var/log, the assumption that the application runs as a single instance, and knowing which machine it runs on.
Does shipping a change still need a maintenance window?
We will help you move from manual deployments to a CI/CD pipeline and a Kubernetes cluster — on your hardware or in the cloud. We start by reviewing your current release process.