ArgoCD with Helm on Kubernetes

Motivation

Most of the CI/CD pipelines I’ve met so far were following this very known pattern: build the code using Docker, push the images to the managed private container registry, package the images in a Helm chart, connect to the kubernetes cluster and deploy the application using helm cli.

While this approach is okay for many small-mid projects consisting of just few microservices deployed on kubernetes, it get’s harder to maintain and keep track of all the pipeline files and chart repos once the number of them grows. I’ve usually seen this situation in projects where lots of self hosted stuff is being used: HCP Vault, Keycloak, RabbitMQ etc.

Recently by the request from one of the clients I was involved in migration from traditional deployment pipelines to GitOps, and thus I stumbled upon the ArgoCD world. Before migrating that, I’ve made my own little bit of testing with dummy examples on my homelab cluster:

Continue reading “ArgoCD with Helm on Kubernetes”

All about Jenkins architecture

Motivation

Recently, I’ve delved deeper into self-hosted CI/CD systems. Throughout my career, I’ve primarily used managed CI/CD solutions such as GitHub Actions, Azure Pipelines, and AWS CodePipeline.

I’ve also noticed a trend where many companies are transitioning to managed solutions and now inquire about Jenkins during interviews.

While I’m familiar with the CI/CD philosophy, which is a broad topic that can be discussed at length, I’ve previously utilized Jenkins pipelines: writing a Jenkinsfile, storing it in version control, and running the pipeline via the GUI either manually or through webhooks. However, I’m interested in delving deeper into the architecture of Jenkins itself and understanding how it handles pipeline processes. Plus I’ve decided to spice it up because everything will be running as containers on my WSL2, so I wanted to explore a bit more of WSL2 this time as well.

You can find my project here:
https://github.com/ptisma/jenkins-agents/

Continue reading “All about Jenkins architecture”

Self-hosted VPN server (Wireguard)

Motivation

While I was abroad I needed to have the European IP address to access some of the streaming services so instead of paying the VPN services from other, I’ve decided to self-host my own and learn about VPN-s.

Since I already have my Docker Swarm cluster set up on my cloud VM-s, I’ve decided to deploy the VPN server on Docker Swarm as opposed to just spinning it up on one of the VM-s through Docker.

I’ve chosen the Wireguard as my solution: it’s free, open-source, very easy to setup and requires minimal configuration.

Continue reading “Self-hosted VPN server (Wireguard)”

Docker Swarm cluster

Motivation

I have wanted to setup my own cluster of VM-s to run my home lab stuff, including this WordPress server as well.

Prior to this I have used only one single beefy Hetzner Cloud VM but I wanted to spice some things up, why not just use a farm of many low cost VM-s which can serve as hosts for docker containers.

First idea was to setup the small custom Kubernetes cluster (k3 anyone??), but this seemed like a overkill, so I naturally pivoted to the Docker Swarm cluster. It’s easy to setup, it works great and its free and open-source, what’s not to like here!?


Docker Swarm
In the following picture you can see the architecture of typical Docker Swarm cluster setup:

Continue reading “Docker Swarm cluster”