Adaptive Kind

Exploring the new native env file support in Node.js

Oct 10, 2024

Section III on Config in The Twelve-Factor App from 2011 provided architectural principles guiding the benefits of separating configuration from the code. It set a gold standard that led the way for environment variable practices and in particular how environment variables can be bound to a running process. For example, this approach plays in an important part in ENV support in Dockerfiles.

Setting OpenTelemetry to Send Metrics and Traces to Grafana Cloud

Aug 22, 2024
Setting OpenTelemetry to Send Metrics and Traces to Grafana Cloud

Let's look into how OpenTelemetry project can help provide a open interface to collecting metrics and traces from our applications. The OpenTelemetry (a.k.a OTel) open source project is about "portable telemetry to enable effective observability". It provides a collection of APIs, SDKs, and tools for many languages. Many vendors support native integrations, including the likes of, Grafana Labs, Elastic, Datadog and New Relic.

Deploying Kube Resources with the Argo CD App of Apps Pattern

Aug 17, 2024
Deploying Kube Resources with the Argo CD App of Apps Pattern

Now that I have my local kube stack with K3s on a couple of Raspberry Pis, my next task I wanted to tackle was to set up an App of Apps structure so that I could (repeatedly) go from empty kube stack to my desired set of applications deployed into the cluster. The app of apps pattern in Argo CD helps define the apps that we want deployed, all driven from Git repository that describes a desired state.

Raspberry Pi 5, Argon NEO 5 case and NVMe SSD unboxing

Aug 11, 2024
Raspberry Pi 5, Argon NEO 5 case and NVMe SSD unboxing

The Pi 5 introduced a lovely little PCIe slot onto the Raspberry Pi board. Ideal for attaching an SSD drive, which is just what the Argon NEO 5 M.2 NVME connects to. Let's unbox the kit and get it up and running.

Mounting LUKS Encrypted Drive on Rasperry Pi on Boot

Aug 02, 2024
Mounting LUKS Encrypted Drive on Rasperry Pi on Boot

LUKS provides support for encrypted drives on Linux and we can provide password for decryption during the boot sequence over SSH with dropbear so that encrypted drive can mount on startup. I had an itch to set up an encrypted drive on a Raspberry Pi to give the data some protection in case the Raspberry Pi went missing. Given I was upgrading a Raspberry Pi I was using as a small media server, I thought it would be a good time to try out LUKS and dropbear SSH.

How to boot a Raspberry Pi from a local SSD drive

Aug 01, 2024
How to boot a Raspberry Pi from a local SSD drive

I've used a Raspberry Pi 4 in an Argon ONE M.2 case for a while. It allows me to attach an M.2 SATA SSD to my Pi, improving boot times and performance considerably. Let's go through how we can get the Pi booting from a SSD device.

Automate Let's Encrypt Certificates with the Caddy Web Server

Jun 16, 2024
Automate Let's Encrypt Certificates with the Caddy Web Server

I was setting up a small internal network with a few hosted services and I wanted these services to route through virtual hosts so I could start configuring so good semantic host names for each of these services. Naturally, these services also needed to be deliver over https with trusted certificates.

Under the Covers of SOPS for Codifying CI/CD and IaC Secrets

Jun 10, 2024

SOPS (Secrets OPerationS) is a command line tool that encrypts and decrypts files in a way that allows you to codify CI/CD and dev processes that require secrets. In an encrypted form, secrets can be stored in a Git repository, with appropriate access control, in the knowledge that it is hard to decrypt the secrets without the authorisation to decrypt. Codifying of secrets and SOPS tooling, helps make rotation of secrets easier, and hence encourages us to become better at timely rotations, in turn de-risking exposure of historical secrets.

Local Argo CD in k3d with Trusted HTTPS Routes

May 31, 2024

The non-trusted certificate warnings when I spun up Argo CD locally in a k3d cluster were bugging me. Let's fix them and get Argo CD spun up locally without these warnings, with trusted certificates and end-to-end encrypted flows.

Routing k3d Deployments with a Traefik Reverse Proxy

May 28, 2024

I started writing a blog that needed a clean way to expose two services from the cluster, and it got me wondering the best way to do this. I'm often aiming to write blogs on this site in a zero-to-goal manner, so they can be read in isolation. k3d by default uses traefik, which is pretty neat when it comes to low configuration, however it did lead me to experimenting with ways to expose services with a lightweight approach that I could use in future blogs. Let's have a look at some of the options.

Setting up Persistent Volumes for Storage in a k3d Cluster

May 26, 2024

To set up any service that needs to retain data, we're going to need to make sure the storage is persistent through pod and cluster restarts. In Kubernetes we can set up a PersitentVolume (PV) to define the storage resource, and a PersitentVolumeClaim (PVC) to use the PersitentVolume.

Deploying Kubernetes on a Raspberry Pi cluster with k3s

May 25, 2024
Deploying Kubernetes on a Raspberry Pi cluster with k3s

K3s is a fantastic lightweight Kubernetes distribution that is so quick to install on a collection of Raspberry Pis. I had a couple of Raspberry Pis sitting idle so had a go at spinning up a Kubernetes cluster on them. It's great way to get some deeper understanding and hone your Kubernetes skills.

Running local AI code assist to power your IDEs with Ollama

May 24, 2024

I'm intrigued in how effective it is to run code assist models locally. I'm keen to explore the available IDE extensions and AI models. Let's start with VSCode, the Code GPT extension and models run locally with Ollama.

Getting Started with GitOps with a Local Argo CD Stack

May 21, 2024

Argo CD creates and updates resources in a Kubernetes cluster to achieve the desired state that is defined in a Git repository. This allows us to declare the desired state of our resources and leave Argo CD to do the work of deploying and updating the cluster to achieve this state.

Spinning up a local Gitea service for GitOps practice

May 20, 2024

I wanted a quick throwaway git service for some GitOps practice. Gitea is an open source Git hosting service. It is powerful for self-hosting a GitHub-like service, but also lightweight and straightforward to spin up as needed for little experiments.

Comparing Local k8s stacks ; k3d, minikube and microK8s

May 19, 2024

I explored spinning up a local cluster with k3d recently, however I realised I should have compared k3d with other approaches. Let's compare kind, minikube and microk8s and see how these different k8s stacks help for local development.

Monitoring Kubernetes metrics with Grafana and Prometheus

May 17, 2024

Grafana is an open observability platform that gives your team a centralised view on the health and behaviour of your system. We'll use Kubernetes metrics to quickly spin up some dashboards and provide foundations to experiment and learn more about Grafana.

Locally Running GenAI and Large Language Models with Ollama

May 16, 2024

If you are interested in exploring Generative AI without relying on cloud services, Ollama can run open models entirely locally, giving you a chance to explore GenAI APIs and capabilities.

Installing k8s Resources with Helm Charts

May 10, 2024

Helm charts encapsulate and simplify deployments to Kubernetes. They allow us to deploy applications quickly in a consistent way. Let's deploy an application into our local cluster to help us get started with using Helm since I'll use them in following blogs.

Local Kubernetes Stack with k3d in Seconds

May 07, 2024

Kubernetes helps with the running of containerized applications at scale, however you don't need a complex infrastructure to test many of the aspects of a Kubernetes cluster. You can spin up a cluster with k3d on your local machine in seconds and start experimenting with Kubernetes.