2021-02-05 21:40:11 +00:00
---
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
2021-02-07 20:14:41 +00:00
---
## Previously
* Raspberry Pi 4 running k3s Kubernetes cluster
- Only ARM arch support - required me to manually rebuild some images
- I had stability and performance issues
* Dokku running on a VPS server hosted on bHost (now Mythic Beasts)
2021-02-05 21:40:11 +00:00
---
<!-- _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.9 em ; } < / 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
2021-02-07 20:14:41 +00:00
---
<!-- _class: lead -->
## Time for a quick break
☕️
Questions so far?
---
<!-- _class: lead -->
## Smart Home