Have you ever wanted to learn Kubernetes? Infrastructure as code? DevOps practices?
Have you ever wanted to learn cloud native technologies, but don’t know how? Does the idea of spending lots of money on costly cloud subscriptions and cloud computing scare you away?
Have no fear! This is the series for you! In this series we will:
- Use Infrastructure as Code (IaC) to provision resources on our own hardware
- Deploy and manage a Kubernetes cluster
- Deploy applications to the Kubernetes cluster
- Use GitOps to manage applications deployed to a cluster
- Use Cloud Native technologies to simulate a environment, similar to what used by companies everyday
All without purchasing any cloud resources.
What does “Cloud Native” mean?
The Cloud Native Computing Foundations defines Cloud Native as:
Cloud native practices empower organizations to develop, build, and deploy workloads in computing environments (public, private, hybrid cloud) to meet their organizational needs at scale in a programmatic and repeatable manner. It is characterized by loosely coupled systems that interoperate in a manner that is secure, resilient, manageable, sustainable, and observable.
In plain english: cloud native applications are developed to be run in an easy to deploy/update/manage manner. While this often involves containers, kubernetes, and cloud vendors, that doesn’t mean it has to.
Cloud native is one of the latest trends in tech, and is sure to stay around for years to come.
What technologies we’ll be using
A non exhaustive list of technologies we’ll be working with in this series:
- Proxmox (virtualization/hypervisor)
- Ansible
- Terraform
- Containers
- Kubernetes
- ArgoCD
- Argo Workflows
- Keycloak
What you’ll need
To follow along with this series, you’ll need only a single physical system to act as a server. This can be as simple as an old laptop or an old desktop; just something with an X86 chipset, and a fair bit of storage and memory. I’d recommend at least 32GB of RAM (some of these VMs can get a bit memory hungry) and ~500 GBs of storage.
I personally use mini PC’s such as this Dell Optiplex in my homelab. Bump up the RAM and storage and you have a compenent little machine.
That being said, this hardware will be the only time you’re asked to pull out your wallet for this series; everything else we do will be free!
As an aside, while it’s possible to use many of these technologies in isolation with something as simple as a single Raspberry Pi, we’ll be using something a bit more powerful for series.
The Source
All source code for this series will be uploaded to this GitHub repository. Everything you’ll need to follow along will be right here.
What’s next
In the next post, we’ll be installing Proxmox on our server, and creating our first virtual machine.