I have recently started a project of deploying kubernetes cluster at home and hosting some personal projects there. My top findings are:
1) bare metal is dramatically faster than most cloud instances. Many of us might have collection of old hardware that, by performance, would be equivalent to >$1,000 in monthly cloud fees.
2) If from the start of your career you have only dealt with modern cloud/Azure/AWS, there is a whole body of knowledge you are missing. Acquiring it from scratch is time consuming, and you are never quite sure you are doing the right thing. As a developer, I don't pay the AWS bill, so it would be more rational to spend my time on learning ML or something else that will be reflected in my paycheck.
So how do you do routing? I have an old Linux machine that I haven’t been using and don’t know how I can securely and efficient route that into the internet (don’t want to use my ip for connecting to Redis for example) which is why I as thinking of using some vpn hosted on gcp.
Any advice would be greatly appreciated. Can’t handle the monthly payments to gcp only to get a raspberry pi level of compute.
I host a Plex instance on a server on my home network, and struggled with setting up external access because my ISP at the time had a double NAT. What I ended up doing was renting a super cheap VPS from TINYKVM (https://tinykvm.com/) which I pay $15 a year for.
I point my DNS at the VPS, then I use the Zerotier VPN to tunnel traffic to my home server (Zerotier is embarrassingly easy to set up - I struggled for a while with OpenVPN but gave up). I use iptables packet forwarding to route traffic on port 443 or 80 from the VPS over the VPN to my local server, which is running an Nginx instance to serve the traffic.
This works perfectly for me 99% of the time. Main pain points have been the unreliability of hosting a server locally where Internet can die and power drop off, and a small amount of sysadmining on the VPS, which is so tiny that I have to be mindful of disk space (e.g. removing old Linux upgrade images every so often, etc). All told though, it works surprisingly seamlessly, and there's a certain smugness to knowing traffic from my smart TV goes all the way round the world and back through a VPN just to talk to my server sitting one foot below the TV.
I am not entirely clear on your question, but I am avoiding reliance on any third-party service to keep it a clean experiment.
I have it easy for external access -> static IP and a Gigabit connection without NAT, so all I have to do is setup ports on my router.
For my services like databases and Redit, I expose them only on Cluster-IP, and them you use kubeDNS and get something like 'redis.default.svc.cluster.local'.
If I need to access them for development purposes, I use kubectl-proxy, but a VPN is also an option.
If your DNS service has an API, you can just have your home server update it’s own record when it detects a change. It may be down for a little while while DNS propagates though.
Edit: I think I misunderstood, but will leave this up anyway.
> started a project of deploying kubernetes cluster at home and hosting
I am also thinking along these lines but not sure about reasonable paths to try. Care to share some pointers on your setup? Basically looking to serve web pages from a server cluster at home.
1) bare metal is dramatically faster than most cloud instances. Many of us might have collection of old hardware that, by performance, would be equivalent to >$1,000 in monthly cloud fees.
2) If from the start of your career you have only dealt with modern cloud/Azure/AWS, there is a whole body of knowledge you are missing. Acquiring it from scratch is time consuming, and you are never quite sure you are doing the right thing. As a developer, I don't pay the AWS bill, so it would be more rational to spend my time on learning ML or something else that will be reflected in my paycheck.