Home
About Us
Why Digitalis
Solutions
By business capability
Real-time streaming
Always-on platforms
Time-series data
Enterprise SaaS
Data for AI
By industry
Financial services
IoT & connected devices
Energy & utilities
Telecoms & media
Technology & SaaS
All solutions →
Services
Data Engineering Solutions
AI Services
Consulting Services
DevOps Services
Migration & Modernisation
Move to Open Source
Managed Services
Managed SIEM
All services →
Technologies
Apache Cassandra
Apache Kafka
PostgreSQL
Elasticsearch
ClickHouse
Kubernetes
Scaleway
Cloud Agnostic
All technologies →
insights
Case Studies
Blog
Contact
Let’s Talk
< ALL BLOG POSTS
Category:
DevOps
View all
Category one
Category two
Category three
Category four
Category
Should we be writing software for humans or models?
AI models now read our Ansible roles, Terraform modules and libraries more than we do. What they need is what we always needed: types, units, side effects and examples.
Read more
Category
Surviving 47-day certs: automate renewal
Public TLS certificates drop to 47 days by 2029. Where renewal on VMs breaks, and how to automate it safely for Kafka, Cassandra and web servers.
Read more
Category
Migrating Cassandra and Kafka off ingress-nginx: what ingress2gateway misses
ingress2gateway converts HTTP Ingress but misses the tcp-services ConfigMap behind Cassandra, Kafka and ClickHouse. Rebuild it with TCPRoute and TLSRoute.
Read more
Category
Monitoring TLS Certificates on Apache Cassandra with AxonOps
Turning TLS on is the easy part. Eight checks that catch the certificate failures that cause incidents: expiry, SAN drift, CA expiry and failed rotations.
Read more
Category
Why ClickHouse, and what it costs to run
ClickHouse is the fastest practical way to query high-volume event data, and it is not a general-purpose database.
Read more
Category
What Kubernetes can and cannot see about process death
When PID 1 in a container isn't your workload, Kubernetes only sees what the wrapper reports. Where that goes wrong and how to make process death visible.
Read more
Category
Understanding Racks and DCs
Racks and data centres decide where every copy of your Cassandra data lives. A practical guide to getting the topology right before the first node starts.
Read more
Category
Immutable virtual machine images, part deux
Turn one hardened golden image into a fully configured, environment-specific node on first boot with cloud-init, systemd and vals, with no configuration drift.
Read more
Category
Monitoring HTTPS Certificate Expiry with Prometheus and Blackbox Exporter
Catch TLS certificate expiry before it takes a service down. Build a Prometheus, Blackbox Exporter and Alertmanager stack and alert on expiring certificates.
Read more
Category
Why Europe Is Breaking Up with Big Tech: And What It Means for Your Business
Europe's shift away from US tech isn't ideology; it's risk management, and businesses face the same vendor dependency problem governments are now acting on.
Read more
Category
Kafka Clients Deep Dive: From Java to librdkafka to MassTransit
How Java, librdkafka and MassTransit Kafka clients handle acks, offsets, threading and errors, and what those differences mean for production systems.
Read more
Category
Hardening the Software Supply Chain
A practical guide to hardening your software supply chain using Cosign, Kyverno, Harbor, SHA digests, and SBOMs.
Read more
Category
From Astra DB to Self-Managed Cassandra: A Practical Migration Guide
Migrate from DataStax Astra DB to self‑managed Apache Cassandra with zero‑downtime
Read more
Category
A practical guide to post quantum encryption
A practical engineering guide to future-proofing server access by enabling ML-KEM hybrid post-quantum key exchange in OpenSSH 9.9 and 10.0.
Read more
Category
AI Assisted Programming
How We Mastered AI-Assisted Development: Planning, Agents, and the Power of CLAUDE.md
Read more
Category
Return To Basics: Python List, Append, Extend, Copy, Deepcopy, and Assignment
How Python list assignment, append, extend, copy and deepcopy behave under the hood, so you avoid subtle bugs and write more memory-efficient code.
Read more
Category
Immutable servers: security and repeatability all in one
Build immutable server images with Packer and Ansible instead of patching live boxes over SSH, for more secure, repeatable infrastructure.
Read more
Category
Plugging the Gaps: Achieving Cloud Sovereignty Through OpenBao’s Modular Architecture
In an era where proprietary licensing can threaten operational stability, OpenBao emerges as a vendor-neutral alternative for secrets management.
Read more
Category
How to run Kubernetes on premises for beginners
Moving Kubernetes to bare metal? Choose between bare metal and VMs, then deploy with Rancher, K3s, Kubespray, Kops or kubeadm. Tips for beginners.
Read more
Category
Collecting metrics, traces and logs
Our simpler standard for collecting metrics, traces and logs: why we moved away from the legacy model and what a lean observability setup looks like.
Read more
Category
Why and how we collect logs
Why log collection is more than a compliance checkbox, and how we collect logs to gain insight into security, performance and reliability.
Read more
Category
Scaling New Heights: Modernising Your Application with Kubernetes
Kubernetes is no longer just for tech giants. A step-by-step approach to modernising your application with Kubernetes, whatever your company size.
Read more
Category
How to mount a Google bucket to a Kubernetes pod
Mount a Google Cloud Storage bucket inside a Kubernetes pod to get scalable, durable storage and save on block storage costs. Step-by-step setup.
Read more
Category
Back to foundations: SSH
Back to basics with SSH: using SSH agent for key management, proxying connections through jump hosts, and security best practices.
Read more
Category
Tricks of the trade: working with environments
How a managed services team switches safely between many customer workloads and environments without running commands against the wrong one.
Read more
Category
Running containers without load balancers
Following our Kubernetes approach, how we run containers on AWS ECS without load balancers by using Cloudflare to route traffic.
Read more
Category
Terraform: keeping your code dry
Keep Terraform DRY across multiple environments: how we structure code for clouds, Cloudflare, Kubernetes and more without copy-pasting.
Read more
Category
Kubernetes: how do we do it
The core stack Digitalis uses to build and run Kubernetes for customers: Terraform, Rancher, Vault, ArgoCD, Traefik, Linkerd, OpenTelemetry and more.
Read more
Category
Simple Message Transforms with Kafka Connect
We have previously shown how easy it is to set up Kafka Connect to stream to and from external systems.
Read more
Category
Easy Stream Management with Kafka Connect
Kafka Connect saves you effort by providing a common framework to connect Kafka with external systems using Connectors.
Read more
Category
Using PGBouncer with Consul for Postgresql high availability
If you work with Postgresql you have most probably heard about PGBouncer. It’s a lightweight external connection pooler which allows…
Read more
Category
Rancher: break in case of emergency
Plan for losing Rancher: create an emergency service account and kubeconfig so you can still reach the Kubernetes API when Rancher is down.
Read more
Category
Kubernetes Security and Compliance in the Financial Sector
Want some security tips and context for cloud-native platforms in financial services?
Read more
Category
Amazon MSK autoscaling
I’ve been using Amazon MSK for some time and today I encountered an interesting problem with autoscaling. Read more to find out!
Read more
Category
SUSE Rancher: why?
At Digitalis we have embraced SUSE Rancher and became Gold partners with SUSE Rancher. Do you want to know why? Keep reading.
Read more
Category
Managing Terraform Code
Terraform is a brilliant tool to manage Infrastructure as Code we at Digitalis both love and hate in equal measure.
Read more
Category
Kubernetes Network Policies with Calico
We’re going to look at how to manage network policies in Kubernetes with Calico.
Read more
Category
Kubernetes Network Policies
An introduction to Kubernetes Network Policies: how to isolate workloads and control pod-to-pod traffic, with practical examples you can apply.
Read more
Category
Vals-Operator: Managing Kubernetes Secrets
Introducing vals-operator — an opensource tool for managing secrets in Kubernetes
Read more
Category
Kubernetes Capacity Planning with Vertical Pod Autoscaler
Learn about capacity planning in Kubernetes with Vertical Pod Autoscaler
Read more
Category
Securing Access to Kubernetes with Rancher
The built-in ones are good for most use cases. They are pretty granular covering access to Rancher itself down to individual projects or…
Read more
Category
Kafka Installation and Security with Ansible - Topics, SASL and ACLs
This blog shows you how and provides a fully working Ansible project on Github to install Kafka and manage its security.
Read more
Category
Getting started with Kafka Cassandra Connector
If you want to understand how to easily ingest data from Kafka topics into Cassandra than this blog can show you how with the DataStax Kafka Connector.
Read more
Category
Ansible Versioning
How to manage Ansible projects with version control: approaches to versioning playbooks and roles, and handling dependencies across projects.
Read more
Category
ECS Container monitoring using cAdvisor
How to monitor Docker containers on an AWS ECS cluster with cAdvisor when CloudWatch isn't enough, from deployment to collecting container metrics.
Read more
Category
Incremental backups with rsync and hard links
Build a simple incremental backup with rsync and hard links: the options that control what is copied, linked or deleted, with working examples.
Read more
Category
Prometheus Blackbox-Exporter - monitoring TLS certificates
A short blog on how to monitor SSL certificate expiry on databases such as Apache Cassandra using Prometheus and visualise on a Grafana dashboard.
Read more
Category
Ansible: Variables scope and precedence
Ansible variable scope and precedence can surprise you. A real scenario where a playbook picked an unexpected value, and how to predict which wins.
Read more
Category
Confirming Kafka Topic Time Based Retention Policies
Create a Kafka topic, change its retention policy with the command-line tools, and confirm messages are retained and deleted as expected.
Read more
Category
An Interesting Behaviour Observed with Cassandra Concurrent Compaction
Concurrent compaction behaved unexpectedly on a Cassandra IoT time series table with a short TTL. What we observed and why it happened.
Read more
Category
Using Molecule to Test Ansible Roles
This blog looks at how to use Molecule to test roles in isolation, as no one is perfect and we all make mistakes but many can be avoid with careful planning.
Read more
Category
Simple tips for securing Cassandra
This blog outlines some good practices that can help you secure your Apache Cassandra clusters.
Read more
Ready to Transform
Your Business?
Let’s Talk