Setting OpenTelemetry to Send Metrics and Traces to Grafana Cloud
![Setting OpenTelemetry to Send Metrics and Traces to Grafana Cloud](/assets/diagrams/otel-grafana.png)
For my next few blogs, I'll focus on observability and in particular how the OpenTelemetry project can help us. 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
![Deploying Kube Resources with the Argo CD App of Apps Pattern](/assets/diagrams/argo-app-of-apps.png)
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
![Raspberry Pi 5, Argon NEO 5 case and NVMe SSD unboxing](/assets/posts/20240811-neo-5.jpg)
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
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
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
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
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
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
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
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
![Deploying Kubernetes on a Raspberry Pi cluster with k3s](/assets/diagrams/raspberry-pi-k3s.png)
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
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
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
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
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
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
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
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
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.