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.
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.
In a vain attempt to fix issues I am having on my Linux laptop, I wiped my drive and installed Fedora 40. I was using Debian 12 since it released but my laptop has issues related to the dedicated AMD GPU. Feel free to skip the summary of my issues as the rest of this post is about setting up Fedora 40.
Issues with Current system
When I attempt to launch an application on the dedicated GPU with the environment variable DRI_PRIME=1, there are graphical artifacts and then the system becomes completely unresponsive until you hold the power button for a reboot. There is also a bug where the HDMI and usb-c ports that are directly connected to the dedicated GPU do not work unless you log out and log back in. I wish I never purchased a system with multiple GPUs even though they are both AMD and should be supported by open-source mesa drivers. Usually people encounter issues with Nvidia GPUs on Linux and folks recommend Intel/AMD for Linux desktops. I also discovered that when I attempt to create a .xz archive with a lot of files, the CPU would overheat to over 95 Celsius and shut down the system. These are some pretty major issues that affect my ability to daily drive the system.