报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

开源软件包 ngrok-go 致力于让 Ingress 更容易地嵌入到 Go 应用中

  • 2023-03-29
    北京
  • 本文字数:898 字

    阅读完需:约 3 分钟

开源软件包ngrok-go致力于让Ingress更容易地嵌入到Go应用中

Ngrok-go是一个地道的(idiomatic)的 Go 软件包,它使 Go 应用程序能够通过 ngrok 的 ingress 即服务(ingress-as-a-service)平台安全地接收网络请求,就像监听本地端口一样。


ngrok-go 旨在简化网络 ingress 的创建,它负责处理网络栈中不同层的一些低级网络基元(primitive),这些基元目前需要由开发人员来设置,以启用网络 ingress。它们包括 DNS、TLS 证书、网络级 CIDR 策略、IP 与子网路由、负载均衡、VPN 和 NAT。


ngrok-go 可以看作一种将 ngrok 代理打包并嵌入 Go 应用程序的方式,从而为捆绑 ngrok 来创建网络 ingress 的应用消除了巨大的复杂性,例如物联网设备、CI/CD 流水线等。


ngrok-go 让开发人员只需一行代码就能将 Go 应用发布到互联网上,而无需设置 IP、证书、负载均衡器甚至端口等低级别的网络基元!


要通过 ngrok 将 ingress 嵌入 Go 应用,开发人员只需调用 ngrok-go 提供的ngrok.Listen原语即可。如果你的环境有ngrok authtoken的话,对Listen的调用将初始化与 ngrok 的安全和持久连接,并传输你所指定的配置需求,包括 URL、认证、IP 限制等,例如:


ngrok.Listen(ctx,        config.HTTPEndpoint(        config.WithDomain("my-app.ngrok.io"),        config.WithAllowCDIRString("192.30.252.0/22"),        config.WithCircuigBreaker(0.8),        config.WithCompression(),        config.WithOAuth("github")       ),        ngrok.WithAuthtokenFromEnv(),)
复制代码


调用Listen时指定的所有策略都由 ngrok 执行,它在边缘处拒绝所有未经授权的请求,这意味着只有有效的请求才能到达 Go 应用。


使用 ngrok-go 的另一个优势是它在 ingress 方面的“可移植性”。这意味着使用它的应用将以同样的方式运行,与底层平台无关,无论是裸机、虚拟机、AWS、Azure、Kubernetes 等均是如此。


虽然 ngrok 选择 Go 作为第一个支持的语言,但对其他语言的支持已经在进行中,包括RustJavaScript。对其他语言(如 Java、C#、Python 和 Ruby)的支持预计很快就会纳入路线图,这也会基于用户的反馈。


如果你有兴趣尝试,ngrok-go可以在GitHub上找到官方的入门指南是一个很好的起点。


原文链接:

Open-Source Package ngrok-go Aims to Make it Easier to Embed Ingress into Go Apps

2023-03-29 08:004967

评论

发布
暂无评论
发现更多内容

拥抱K8S系列-08-通过rancher部署nginx应用

张无忌

nginx Kubernetes rancher

架构师训练营期末大作业

jiangnanage

大作业:用思维导图画出训练营知识点

chenzt

2020.09.14-2020.09.20学习总结

icydolphin

极客大学架构师训练营

第一周总结

一个节点

极客大学架构师训练营

Week 1 命题作业

阿泰

一周信创舆情观察(8.24~9.13)

统小信uos

机器学习在滴滴网络定位中的探索和实践

滴滴技术

人工智能 学习 滴滴技术

迷茫吗?来看这15个程序员的回答,比你搜集多少资料都有用

小Q

Java 程序员 架构 面试 职业规划

不正经的计算机专业学生拍摄照片分享

王荣胜

摄影

从开源协议到谷歌禁用华为、Docker实体清单事件

艾小仙

GitHub Linux 开源 编程语言

架构训练营 - 第1周课后作业 - 学习总结

Pudding

Atlassian 金融企业敏捷转型线上峰会剧透来袭!

Atlassian

项目管理 DevOps 敏捷 金融

让冰城的温暖冬天,不再有“隐秘的角落”

脑极体

大作业

李朋

踩坑记 | 多aar下修改常量的一个小坑

哈利迪

android

架构师训练营 - 同城快递架构文档

陈皮

提交项目到gitee报错Push to origin/master was rejected的解决办法

Geek_416be1

多方计算——打开区块链应用新场景

CECBC

区块链 大数据

司法区块链破解互联网案件审判难

CECBC

区块链技术 不可篡改 法院

面试官:谈一下你对DDD的理解?我:马什么梅?

艾小仙

Java 架构 编程语言 领域驱动设计 DDD

架构师训练营 - 第 1 周课后作业(1 期)

Pudding

洞爷湖-安静与灵动

刘旭东

摄影 摄影征文 洞爷湖 北海道

我看过最长的图,是百度绘制的AI蓝图

脑极体

架构师培训期末大作业

小蚂蚁

微服务 API 网关kong的爬坑之路

夏目

微服务 kong

架构师训练营1期第1周:架构方法 - 总结

piercebn

极客大学架构师训练营

期末大作业(一)

武鹏

架构师训练营 - 大作业二

桔子

从 Java 中的零拷贝到五种IO模型

Rayjun

Java io

架构师训练营第1周学习总结

netspecial

极客大学架构师训练营

开源软件包ngrok-go致力于让Ingress更容易地嵌入到Go应用中_开源_Sergio De Simone_InfoQ精选文章