inlets has both a client and a server, which connect to each other to build a tunnel.
When a client wants to expose a service publicly, or privately within a remote network, it connects to a server using its control-plane (a HTTPS websocket).
There is no need for your data plane to be exposed on the Internet, you can bind to a local LAN adapter, or a private ClusterIP. If you do want to expose your tunnelled services to the Internet, you can do with a NodePort, LoadBalancer or through Ingress.
Kubernetes v1.19+ is required for the helm charts provided in this repository, due to the various versions of the Ingress API, the minimum supported version will be networking.k8s.io/v1
.
-
Deploy an inlets TCP client - connect an internal service to a public inlets TCP server - use this to expose an IngressController like ingress-nginx, Istio, Traefik, or Kong.
-
Deploy an inlets TCP server - one or more inlets TCP tunnel servers in a Kubernetes cluster, instead of using multiple VMs.
-
Deploy an inlets HTTP server - one or more inlets HTTP tunnel servers in a Kubernetes cluster, instead of using multiple VMs.
See also: inlets-operator which automates both parts of the above for a set number of supported clouds, and integrates through Kubernetes services of type LoadBalancer.