3.1 KiB
theme | _class | backgroundColor | backgroundImage | marp |
---|---|---|---|---|
gaia | lead | url('https://0.s3.envato.com/files/138380962/Preview%20Image%20White%20Low%20Poly%20Background2.jpg') | true |
Personal Infrastructure
Marcus Noble
🔗 https://marcusnoble.co.uk 🐦 @Marcus_Noble_ ✨ AverageMarcus
A little about me and the past
- I work professionally as a "DevOps" engineer at Elsevier with a focus on Kubernetes and containers
- Previously a JavaScript developer, now a Go developer
- I've been running my own servers for as long back as I can recall (historically cheap VPS's with applications running either directly on the OS or using Dokku)
- I like to tinker with "Smart Home" stuff
Where things are at today...
- 87 uniquely identifiable devices connected to my home network
- A Zigbee network with 32 devices
- A single-node Kubernetes cluster running on a dedicated desktop machine hosting 14 applications
- An autoscaling 1-3 node Kubernetes cluster hosted on Scaleway running ~30 applications
- 1 Raspberry Pi running Home Assistant to control all smart devices in my home
- 1 Raspberry Pi running OctoPi to control my 3D printer
Local Network setup
FTTP - Zen Internet ↯ ISP Modem ↯ Powerline ↯ Router - TP-Link Archer C7 ↯ Mesh WiFi beacons - TP-Link Deco M4 (x3) ↯ 87 devices
Local Network setup
4 devices connected via ethernet
Everything else via WiFi
All devices have static IPs and assigned hostnames (based on the periodic table of elements)
Kubernetes - local
An old desktop machine repurposed as a single-node Kubernetes cluster
OS: Ubuntu Kubernetes Version: Microk8s v1.20.1 Specs: CPU - 4 core | Memory - 12Gb | HDD - Lots
Kubernetes - local
Primary Use: Hosting sensitive or local-specific applications that I want to keep off the internet. E.g.
- custom built CCTV monitoring application covering the 8 cameras I currently have set up
- automated download tools so I can kick off downloads remotely while I'm out
- DNS-based ad blocker (AdGuard)
Kubernetes - cloud
Hosted on Scaleway's managed Kubernetes platform, Kapsule. 1-3 DEV1_M instances, autoscaled based on load.
All defined in code using Terraform and stored in git.
Kubernetes Version: v1.20 Specs: CPU - 3 vCPUs | Memory - 4Gb | HDD - 40Gb + 14 PVCs of varying size
Kubernetes - cloud
Primary Use: Hosting internet facing services and providing a secure, authenticated tunnel to my local cluster E.g.
- My personal blog plus some related sites
- Self-hosted alternatives to cloud services: Gitea, Nextcloud, Harbor, Photoprism, etc.
- Tekton - handle all my CI/CD needs, triggered by webhooks from Gitea
- "Utility" applications to make my life easier:
- Convert SVG to DXF - used when creating 3D print designs from SVG
- website-to-remarkable - lets me send a webpage as a PDF to my reMarkable tablet for later reading