详解 Rainbond Ingress 泛解析域名机制

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Rainbond 作为一款云原生应用管理平台,天生带有引导南北向网络流量的分布式网关 rbd-gateway。区别于一般的 Ingress 配置中,用户需要自行定义域名的使用体验,Rainbond 的网关策略可以一键自动生成域名访问策略,用户通过这个域名可以立刻访问到部署在 Rainbond 上的业务系统。这个使用体验在开发测试场景下非常友好,这篇文章详解了这一机制到底是如何实现的。

Rainbond 作为一款云原生应用管理平台,天生带有引导南北向网络流量的分布式网关 rbd-gateway。区别于一般的 Ingress 配置中,用户需要自行定义域名的使用体验,Rainbond 的网关策略可以一键自动生成域名访问策略,用户通过这个域名可以立刻访问到部署在 Rainbond 上的业务系统。这个使用体验在开发测试场景下非常友好,这篇文章详解了这一机制到底是如何实现的。

Gateway 与 Ingress

Rainbond 团队开发了高性能分布式网关组件 rbd-gateway,作为集群内部的 Ingress Controller 处理集群南北流量。它同时支持 L4 和 L7 层协议,以及一键开启 WebSocket 等高级功能。在使用它的时候,一个细节功能点非常好用,就是可以一键生成一个可以被访问的域名地址。

008i3skNly1gwzgzq8siij325i0dedhf.png

这个域名的格式详解如下:

http://<servicePort>.<service_alias>.<tenant_name>.17a4cc.grapps.cn/

- servicePort: 访问策略对应的目标端口名称
- service_alias: 当前服务组件的别名
- tenant_name: 当前团队的别名
- .17a4cc.grapps.cn: 当前集群的泛解析域名

实际上,这一条路由规则,是由 Kubernetes 中对应的 ingress 和 service 所定义的。整个访问链路可以归纳为下图:

008i3skNly1gwzkbrhzv2j31ie0u0q6w.png

开启 对外服务 开关,相当于自动生成了以下资源:

apiVersion:v1
kind:Service
metadata:
 labels:
   creator:Rainbond
   event_id:""
   name:gr49d848ServiceOUT
   port_protocol:http
   protocol:http
   rainbond.com/tolerate-unready-endpoints:"true"
   service_alias:gr49d848
   service_port:"5000"
   service_type:outer
   tenant_name:2c9v614j
 name:service-8965-5000out
 namespace:3be96e95700a480c9b37c6ef5daf3566
spec:
 clusterIP:172.21.7.172
 ports:
 -name:tcp-5000
   port:5000
   protocol:TCP
   targetPort:5000
 selector:
   name:gr49d848
 sessionAffinity:None
 type:ClusterIP
status:
 loadBalancer:{}
 
---

apiVersion:extensions/v1beta1
kind:Ingress
metadata:
 annotations:
   nginx.ingress.kubernetes.io/weight:"100"
 generation:1
 labels:
   creator:Rainbond
   service_alias:gr49d848
   tenant_name:2c9v614j
 name:3cf8d6bd89250eda87ac127c49694a05
 namespace:3be96e95700a480c9b37c6ef5daf3566
spec:
 rules:
 -host:5000.gr49d848.2c9v614j.17a4cc.grapps.cn
   http:
     paths:
     -backend:
         serviceName:service-8965-5000out
         servicePort:5000
       path:/
status:
 loadBalancer:{}

自动生成域名

对于大多数开发者而言,域名算是一种稀缺资源,如何为自己茫茫多的 Ingress rule 分配域名,是一件很令人头疼的事情。毕竟只有拥有了自己的域名时,才能够彻底掌控其解析的规则,避免无止境的修改 /etc/hosts 文件。

市面上绝大多数 Kubernetes  管理工具都可以用半自动的方式生成 Service 与 Ingress资源。这种半自动的方式特指让用户在图形化 UI 界面上,输入必要的信息后,由管理工具自行生成对应的 yaml 配置文件,并加载到 Kubernetes 中去。但是对于所配置的域名,鲜有工具可以做到如 Rainbond 一样的使用体验。

达成这一优秀体验的关键在于泛解析域名的使用。

对泛解析域名最简单明了的解释就是:符合  *.mydomain.com 这一规则的任意域名,都可以解析到同一个 IP 地址上去。在当下这一使用场景中,我们只需要将泛解析域名 *.17a4cc.grapps.cn 解析到 rbd-gateway 所在的服务器 IP 地址,就可以随意为 Ingress rule 配置符合规则的域名了。

008i3skNly1gwzmi07jcnj30b60cat91.png

Rainbond 在产品设计层面将 Ingress rule 和泛解析域名结合在了一起,自动为每个服务端口生成全局唯一的域名。并在集群安装时,自动向公网 DNS 服务器注册了解析记录,集群安装完毕之后,所生成的所有域名,都是可以被公网解析的,只要 PC 客户端可以使用公网 DNS 服务,就可以解析域名,并访问到指定的服务端口。

Rainbond 通过不同的三级域名 (比如当前场景中的 17a4cc)来区分不同的集群。这里涉及到关于泛解析域名的一个特点,子级域名的解析记录,优先级高于父级域名的解析记录。

===========================================
// 对两级泛解析域名注册解析记录
*.grapps.cn           =解析记录注册=> 1.1.1.1
*.17a4cc.grapps.cn    =解析记录注册=> 2.2.2.2
===========================================
===========================================
// 客户端解析结果
abc.grapps.cn         =解析 IP 地址=> 1.1.1.1
abc.def.grapps.cn     =解析 IP 地址=> 1.1.1.1
abc.17a4cc.grapps.cn  =解析 IP 地址=> 2.2.2.2     // 优先使用 *.17a4cc.grapps.cn 的解析记录


Rainbond是一个开源的云原生应用管理平台,使用简单,不需要懂容器和Kubernetes,支持管理多个Kubernetes集群,提供企业级应用的全生命周期管理,功能包括应用开发环境、应用市场、微服务架构、应用持续交付、应用运维、应用级多云管理等。

Github:https://github.com/goodrain/rainbond

官网:https://www.rainbond.com?channel=aliyun

微信群:请搜索添加群助手微信号 wylhzmyj

钉钉群:请搜索钉钉群号 31096419

相关文章
|
23天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
60 2
|
15天前
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
46 3
|
23天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
66 3
|
25天前
|
存储 消息中间件 算法
深入探索操作系统的心脏——内核机制解析
本文旨在揭示操作系统核心——内核的工作原理,通过剖析其关键组件与机制,为读者提供一个清晰的内核结构图景。不同于常规摘要的概述性内容,本文摘要将直接聚焦于内核的核心概念、主要功能以及其在系统管理中扮演的角色,旨在激发读者对操作系统深层次运作原理的兴趣与理解。
|
1月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
1月前
|
存储 缓存 安全
🌟Java零基础:深入解析Java序列化机制
【10月更文挑战第20天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 3
|
2月前
|
Java 开发者 UED
Java编程中的异常处理机制解析
在Java的世界里,异常处理是确保程序稳定性和可靠性的关键。本文将深入探讨Java的异常处理机制,包括异常的类型、如何捕获和处理异常以及自定义异常的创建和使用。通过理解这些概念,开发者可以编写更加健壮和易于维护的代码。
|
2月前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
|
2月前
|
域名解析 网络协议 CDN
阿里云服务器购买后如何解析域名,三步操作即可解析绑定
阿里云服务器购买后如何解析域名,三步操作即可解析绑定
|
2月前
|
JavaScript 前端开发 开发者
原型链深入解析:JavaScript中的核心机制
【10月更文挑战第13天】原型链深入解析:JavaScript中的核心机制
35 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多