This is a personal blog focused on computer software and hardware. Most
projects are implementing software and hardware for a homelab. What is a
homelab? I would say a homelab could be a single computer or dozens of
computers connected in a network. You can also integrate with computers
in the Cloud.
The openEBS project is simplified, easy to deploy and upgrade, open source, persistent block storage on the Kubernetes platform. If you are not familiar with Kubernetes (k8s), check out a previous post to get started. If you are using Kubernetes in a homelab which is what I focus on in this blog, you may notice that setting up apps that worked well in Docker are much more challenging in Kubernetes. It is very easy to set up static web apps in Kubernetes as the container image includes all the files you need. However there are a ton of open-source apps out there that obviously need some way to persist data, whether you want a simple to-do list or something complex like an app to access your personal documents, music, pictures, videos, etc.
As the foundation of my homelab takes shape, I’m ready to dive into the world of container orchestration with Kubernetes. In this blog post, I’ll outline my experience deploying software applications using Kubernetes, leveraging open-source projects to manage and access software running in the cluster.
Prerequisites
Network
Before deploying any software, I recommend having a Network setup so that computers can communicate with themselves and systems over the Internet. All Kubernetes related computers need to be connected to the same network.
Upgrading your Raspberry Pi’s operating system can be a breeze, and with Raspbian Bookworm being the latest and greatest version available, it’s definitely worth considering. To start, make sure you have a stable internet connection and a compatible Raspberry Pi running Raspbian Bullseye. I will be upgrading my Raspberry Pi 3 that serves as my primary DNS server.
Before the upgrade
Before running any upgrade operations, make sure your Pi system is up to date. Run apt upgrades on the system:
Large language models are artificial intelligence systems that use complex algorithms to process and analyze vast amounts of text data, allowing them to learn patterns, relationships, and context within language. These models typically consist of multiple layers of interconnected neural networks that are trained on massive datasets of text, often exceeding tens or even hundreds of millions of examples. As the model processes and learns from this input, it develops an ability to generate coherent and natural-sounding text, respond to prompts and questions, and even engage in creative tasks like writing stories or composing music. It is important to note that it does not “think” but will return responses that have the most probability of being correct related to the prompt that you gave it.
I will be using Caddy to serve as a reverse proxy for my network. With Caddy, I can manage my proxy configurations in a single file. Caddy is an easy to configure web server and can also function as a reverse proxy. Caddy is free and open-source software.
On a system where I want to securely expose services running on containers, Caddy is easy for me to pick a certificate and then define all of the proxy rules for each container in a single file. I can run Caddy as a container as well making the management of my proxy server easy and lightweight. The configuration syntax is much more simple than nginx which is what I typically use for a proxy server.
Renovate is an open-source tool that helps you automate dependency upgrades, vulnerability patching, and security compliance in your software projects. Dependencies can be software libraries like NPM packages for JavaScript or PyPi packages for Python or modules for Terraform or also container images from container registries. If you store your code and Infrastructure as Code in Git repositories, Renovate can help you keep all of your software up to date and open Pull requests automatically.