入口处的PRO发射日

·  阅读 102
入口处的PRO发射日

inlets PRO launch day

inlets PRO是一个安全的、商业化的TCP隧道,为以云原生方式连接服务而构建。了解它能为你做什么,以及它是如何从开放源码软件的根基上建立的。在文章的最后,你可以查看新的登陆页面,包括个人和商业价格,以及与其他网络解决方案的比较。

inlets PRO launch day

什么是inlets?

inlets是一个开源的网络隧道项目,是我在2018/2019年底建立出来的。在长期为企业公司工作后,面对路上麻烦的网络条件(俘虏式门户),以及限制性的防火墙,我坐下来写了一些代码,试图解决这个问题。

首先,这段代码(用Go写的)很简陋,它通过电线将原始的HTTP请求和响应对象序列化。我决定选择网络套接字作为传输方式,因为我知道网络套接字可以穿透几乎所有的网络条件,从客户端向外调用HTTP服务器上的一个知名端口--80或443。

在该项目获得牵引力之后,概念验证已经达到了目的,我重写了代码,以使用Gorilla的websocket库等现成的库。

简单地说,如果你在笔记本电脑、树莓派、虚拟机、Docker镜像、Windows PC、Mac或Kubernetes集群上有一个HTTP服务,使用inlets你可以将其暴露在另一个网络上,而这个网络通常是互联网。

inlets 1.0和2.0发布后,在Hacker News上吸引了许多评论,该项目获得了自己的个人和商业用户社区。到今天为止,它在GitHub上有6.5万颗星,可以通过Docker镜像或静态二进制文件使用。

inlets获得自动化工具化

尽管在像Ngrok这样的工具被完全禁止或无法使用的情况下运行,但对一些用户来说,进入的门槛仍然太高。他们习惯于简单地运行一个命令并连接到一个SaaS隧道。

SaaS隧道是出了名的难以从企业网络中访问,并且受到愚蠢的限制,比如只能活动7小时,或者限制每分钟的连接,甚至对那些为服务付费的人也是如此。

我所采取的方法是创建inletsctl--一个可以在你最喜欢的云端在短时间内启动一个隧道服务器或(退出服务器)的工具。

inletsctl有一个供应包,可以在DigitalOcean、Packet、Civo、Scaleway、AWS EC2、GCE、Azure、Linode和Hetzner上设置新主机。这个代码有五个不同的贡献者,你可以认为它有点像Terraform的基本版本。

下面是它的工作原理:

inletsctl create --provider digitalocean \
 --region lon1 \
 --access-token-file ~/do-access-token
复制代码

然后过了一会儿,你会得到一个你的服务器的 "连接字符串":

Using provider: digitalocean
Requesting host: relaxed-brahmagupta1 in lon1, from digitalocean
2020/08/13 10:02:19 Provisioning host with DigitalOcean
Host: 203721867, status: 
[1/500] Host: 203721867, status: new

[31/500] Host: 203721867, status: active
Inlets OSS exit-node summary:
  IP: 206.189.124.232
  Auth-token: sO7tIBsy7FaVXb0HiVKXejsBvt6GEUGiSHbcMlrEo6d928cUIIjgPj7nJxnwFvM6

Command:
  export UPSTREAM=http://127.0.0.1:8000
  inlets client --remote "ws://206.189.124.232:8080" \
	--token "sO7tIBsy7FaVXb0HiVKXejsBvt6GEUGiSHbcMlrEo6d928cUIIjgPj7nJxnwFvM6" \
	--upstream $UPSTREAM

To Delete:
	inletsctl delete --provider digitalocean --id "203721867"
复制代码

它的成本是多少?尽可能少,大约5美元/月,当然,如果你愿意,你可以在那里运行一个以上的隧道服务器。

inlets直接与Kubernetes集成

对现有SaaS隧道的另一个普遍抱怨是,他们没有与Kubernetes原生集成,而且当他们这样做时,他们仍然受到我们上面谈到的同样限制。

进入inlets-operator--其口号是 "从你的私人网络中获得Kubernetes负载均衡器"。

它的工作原理是检测集群中任何类型的 "LoadBalancer "服务,然后像inletsctl一样,在你喜欢的云上设置一个退出服务器。然而,这一次,不是你在命令行中运行 "inlets client",而是在集群中部署一个Pod,将集群中的一个私有服务连接到具有公共IP的新服务器。

这样做效果非常好,而且比在亚马逊管理的Kubernetes产品EKS上获得ALB要快得多。

inlets PRO launch day

请看该教程。暴露你的IngressController并从LetsEncrypt获得TLS

你甚至可以带上你自己的IngressController,因为inlets PRO在TCP层面上工作。

演练一下。为你的私人IngressController获取LetsEncrypt证书和公共IP

像一个专业的

在介绍了inlets、inletsctl和inlets-operator之后不久,我就发现需要的不仅仅是一个HTTP隧道,并开始计划和思考如何去做这件事。我还想确保websocket本身已经自动配置了TLS,在inlets的OSS版本中,它是由操作者通过反向代理来添加的。

我想部署cert-manager、ingress-nginx,然后从LetsEncrypt获取TLS证书,就像我在公共集群上做的那样。这并不可行,因为OSS版本的inlets在出口服务器上终止了TLS。我需要一个可以通过TCP流量的隧道。

inlets PRO launch day

我对inlets PRO做了一些不同的事情。我没有把它开源,我在私下里工作,和社区里几个值得信赖的朋友一起测试,然后只发布了一个二进制文件。

这个二进制文件需要一个JWT许可证代码才能工作,所以我设置了一个 "开始试用页面",然后坐等。

作为其他开源项目(如OpenFaaS)的创始人,我习惯于与公司进行如下对话:"我们将在我们的生产应用中使用你的东西,并免费向你寻求帮助,不,我们不会赞助、贡献给项目,或雇用你提供支持"。

有了inlet PRO,对话发生了变化。"我们认为我们需要你的东西,我们几乎可以肯定。它的成本是多少?一个概念证明,听起来不错,那要花多少钱?"

正如我在本周谷歌Kubernetes播客中提到的,公司不会免费付钱。只有当定价门到位时,才能为软件的维护者或供应商获取价值。

已经有几十项试验发布了,还有几家大公司表示有兴趣,但不是我所期望的那样。

这里有几个例子说明如何使用inlets PRO:

事实证明,大多数企业公司都有一些部署在企业内部的遗产,还有一些部署在公共云上。他们需要将服务从私有集群安全地传输到公共集群,但他们不想将这些服务暴露在互联网上。有时这些服务也是在没有加密的情况下运行的,想想一个古老的MSSQL服务,它充满了API的关键数据。

inlets PRO launch day

inlets PRO为他们提供了一种取代VPN的方法,因为VPN的设置和管理都很复杂。它还提供了一种方法,让数据在电线上加密,并只通过隧道传输到远程网络,而不是暴露出来。可以把它看作是一个私人或无头隧道,也许是一个 "混合服务网"。

inlets PRO的工作方式与最初的开源版本很相似,并共享一些代码。inletsctl和inlets-operator项目都有开关来使用inlets的专业版本。

启动日

这个旅程一开始是建立一个开源的隧道,以帮助开发者摆脱使用严重受限的SaaS隧道的僵局。在社区的帮助下,随后开发的工具使inlets更加有用,更加容易使用。

今天,我们要做的是让inlet作为一种选择在长期内更加可持续。这是为了给拥有混合云的公司和团队提供明确的商业价值,这些公司和团队已经厌倦了VPN,或者只是需要与其他网络的客户合作。

随着inlets PRO登陆页面的推出,你会发现一个提供无限使用的个人定价选项、一个商业选项和企业。商业选项不按月计费,因为为了保持inlets PRO的完全私密性,不包括跟踪。我们相信用户会购买适合他们使用的许可证,而作为回报,不会收集任何使用或跟踪数据。

inlets PRO launch day

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改