115 lines
3.1 KiB
Markdown
115 lines
3.1 KiB
Markdown
|
---
|
||
|
theme: gaia
|
||
|
_class: lead
|
||
|
backgroundColor: #fff
|
||
|
backgroundImage: url('https://0.s3.envato.com/files/138380962/Preview%20Image%20White%20Low%20Poly%20Background2.jpg')
|
||
|
marp: true
|
||
|
---
|
||
|
|
||
|
![bg left:40% 80%](https://marcusnoble.co.uk/images/marcus.jpg)
|
||
|
|
||
|
# **Personal Infrastructure**
|
||
|
|
||
|
**Marcus Noble**
|
||
|
|
||
|
🔗 https://marcusnoble.co.uk
|
||
|
🐦 @Marcus_Noble_
|
||
|
✨ AverageMarcus
|
||
|
|
||
|
---
|
||
|
<!-- _class: lead -->
|
||
|
## 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
|
||
|
|
||
|
---
|
||
|
<!-- _class: lead -->
|
||
|
|
||
|
## Local Network setup
|
||
|
|
||
|
**FTTP** - Zen Internet
|
||
|
↯
|
||
|
**ISP Modem**
|
||
|
↯
|
||
|
**Powerline**
|
||
|
↯
|
||
|
**Router** - TP-Link Archer C7
|
||
|
↯
|
||
|
**Mesh WiFi beacons** - TP-Link Deco M4 (x3)
|
||
|
↯
|
||
|
**87 devices**
|
||
|
|
||
|
---
|
||
|
<!-- _class: lead -->
|
||
|
|
||
|
## 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
|
||
|
|
||
|
<style scoped>p, ul { font-size: 0.9em; }</style>
|
||
|
|
||
|
**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
|