So yeah, it's a model that can work. It's straightforward for us because we have a lot of granular control over what can get addressed where. It might be trickier if your network model is chaotic.
I long for the day where Kubernetes services, virtual machines, dedicated servers and developer machines can all securely talk to eachother in some kind of service mesh, where security and firewalls can be implemented with "tags".
Tailscale seems to be pretty much this, but while it seems great for the dev/user facing side of things (developer machine connectivity), it doesn't seem like it's suited for the service to service communication side? It would be nice to have one unified connectivity solution with identity based security rather than e.g Consul Connect for services, Tailscale / Wireguard for dev machine connectivity, etc.
That's exactly what Scalable Group Tags (SGTs) are -
https://tools.ietf.org/id/draft-smith-kandula-sxp-07.html
Cisco implements this as a part of TrustSec
In addition it can also be used to enforce based on service specific keys/certificates as well.
There's earlier projects like CJDNS which provide pubkey-addressed networking, but they're limited in usability as they route based on a DHT.
Disclosure: founder of company which sells SaaS on top of Ziti FOSS.
* https://ziti.dev/blog/bootstrapping-trust-part-5-bootstrappi...
Kinda semi-offtopic but I am curious to know if anyone has used identity part of a WireGuard setup for this purpose.
So say you have a bunch of machines all connected in a WireGuard VPN. And then instead of your application knowing host names or IP addresses as the primary identifier of other nodes, your application refers to other nodes by their WireGuard public key?
I use WireGuard but haven’t tried anything like that. Don’t know if it would be possible or sensible. Just thinking and wondering.