AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

开源软件包 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:004888

评论

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

Spring6 对 集成MyBatis 开发运用(附有详细的操作步骤)

不在线第一只蜗牛

Spring Boot mybatis 开发项目

鸿蒙HarmonyOS实战-Stage模型(信息传递载体Want)

EquatorCoco

鸿蒙 HarmonyOS

NumPy三种排序的表现与思考

我再BUG界嘎嘎乱杀

Python 排序算法 Numpy

链游开发:探索游戏与区块链的交汇点

dappweb

区块链游戏开发

Spring Boot 3.0:未来企业应用开发的基石

EquatorCoco

Spring Boot 后端 开发

30天拿下Rust之所有权

希望睿智

rust语言

电子(芯片)行业MES生产管理系统

万界星空科技

mes 万界星空科技 万界星空科技mes 电子行业 SMT行业

数字藏品领域新时代

区块链开发团队DappNetWork

体育赛事直播系统源码“专家方案”功能的独特魅力

软件开发-梦幻运营部

推荐2款开源、美观的WinForm UI控件库

不在线第一只蜗牛

当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

EquatorCoco

Java 程序员 面试

绿色智能:低代码开发在AI机器学习中的深度应用与实践案例

快乐非自愿限量之名

人工智能 机器学习 低代码

30天拿下Rust之枚举

希望睿智

rust语言

大模型驱动服务升级,捷途汽车的探索与实践

新消费日报

去测试化≠测试失业

老张

思维逻辑 职场思维

12306技术内幕

Java随想录

Java redis 架构 12306

使用 gevent 实现高并发爬虫

我再BUG界嘎嘎乱杀

Python 爬虫 后端 开发 gevent

面向失败设计的安全运营

I

安全设计 安全架构 企业安全 安全运营

打包Python程序文件:pyinstaller实现

我再BUG界嘎嘎乱杀

Python 编程 后端 pyinstaller

专为编程小白设计的Python零基础入门教程,GitHub星标破W

我再BUG界嘎嘎乱杀

Python 后端 软件开发 入门 零基础

lodash已死?radash库方法介绍及源码解析 —— 对象方法篇

快乐非自愿限量之名

源码 lodash

人工智能电影学院在里斯本成立,为全球电影制作人赋能

区块链开发团队DappNetWork

利用英特尔 Gaudi 2 和至强 CPU 构建经济高效的企业级 RAG 应用

快乐非自愿限量之名

cpu 英特尔 大语言模型 rag

macbook电池怎么使用?MacBook怎样检查电池健康程度

柠檬与橘子

企业级架构及本体论最新进展

俞凡

架构 企业级架构

期权交易所开发:构建高效、安全的金融交易平台

dappweb

区块链开发 期权交易所开发

低代码应用:云原生与Kubernetes的应用实战

不在线第一只蜗牛

Kubernetes 云原生 低代码

30天拿下Rust之箱、包和模块

希望睿智

rust语言

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