发明内容
本申请实施例提供了一种内网kubernetes对外提供公网访问的方法和***,以至少解决相关技术中为内网kubernetes集群中部署的业务提供公网访问必须进行手动配置导致效率低下的问题。
第一方面,本申请实施例提供了一种内网kubernetes对外提供公网访问的方法,其特征在于,所述方法包括:
内网穿透机制通过IP提供服务实时检测用户业务应用创建的Service,在所述IP提供服务检测到业务需要对外提供服务的情况下,所述IP提供服务向容器管理平台发送请求指令;
所述内网穿透机制通过部署在所述容器管理平台的容器管理服务接收所述请求指令,所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建内网穿透服务端的容器,所述容器管理服务将公网IP和端口发送到所述IP提供服务;
所述内网穿透机制通过所述IP提供服务接收所述公网IP和所述端口,所述IP提供服务创建内网穿透客户端的容器;
所述内网穿透机制通过所述内网穿透客户端连接到所述内网穿透服务端,将所述业务发布到公网上。
在其中一些实施例中,所述IP提供服务检测到业务需要对外提供服务的情况包括:所述IP提供服务检测到所述Service中描述了需要公网IP和对外开放的端口的情况。
在其中一些实施例中,所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建内网穿透服务端的容器,所述容器管理服务将公网IP和端口发送到所述IP提供服务,所述方法包括:所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建内网穿透服务端的容器,所述服务器负载均衡将后端服务组配置为所述内网穿透服务端的容器所在的云主机,所述容器管理平台将配置后的公网IP和端口发送到所述IP提供服务。
在其中一些实施例中,所述IP提供服务创建内网穿透客户端的容器包括:所述IP提供服务为所述内网穿透客户端配置所述内网穿透服务端的地址和配置所述Service的域名。
第二方面,本申请实施例提供了一种内网kubernetes对外提供公网访问的方法,其特征在于,所述方法包括:
用户业务应用将内网用户kubernetes集群创建的已发布到公网上的业务取消发布,内网穿透机制通过IP提供服务实时检测所述用户业务应用创建的Service,在检测到所述Service已被删除的情况下,所述IP提供服务删除内网穿透客户端的容器,并向容器管理平台发送IP释放请求;
内网穿透机制通过所述容器管理平台接收所述IP释放请求,所述容器管理平台向公有云发送IP释放请求,并删除内网穿透服务端的容器。
第三方面,本申请实施例提供了一种内网kubernetes对外提供公网访问的***,其特征在于,所述***包括:用户业务应用、IP提供服务、容器管理服务、容器管理平台、内网穿透客户端和内网穿透服务端,其中所述用户业务应用和所述IP提供服务部署在内网用户kubernetes集群中,所述容器管理服务部署在所述容器管理平台中,所述容器管理平台部署在公有云中;
所述IP提供服务实时检测所述用户业务应用创建的Service,在所述IP提供服务检测到业务需要对外提供服务的情况下,所述IP提供服务向所述容器管理平台发送请求指令;
所述容器管理服务接收所述请求指令,所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建所述内网穿透服务端的容器,所述容器管理服务将公网IP和端口发送到所述IP提供服务;
所述IP提供服务接收所述公网IP和所述端口,所述IP提供服务创建所述内网穿透客户端的容器;
所述内网穿透客户端连接到所述内网穿透服务端,将所述业务发布到公网上。
在其中一些实施例中,所述IP提供服务检测到业务需要对外提供服务的情况包括:所述IP提供服务检测到所述Service中描述了需要公网IP和对外开放的端口的情况。
在其中一些实施例中,所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建所述内网穿透服务端的容器,所述容器管理服务将公网IP和端口发送到所述IP提供服务,所述***包括:所述容器管理服务向公有云申请服务器负载均衡,所述容器管理服务创建内网穿透服务端的容器,所述服务器负载均衡将后端服务组配置为所述内网穿透服务端的容器所在的云主机,所述容器管理平台将配置后的公网IP和端口发送到所述IP提供服务。
在其中一些实施例中,所述IP提供服务创建所述内网穿透客户端的容器包括:所述IP提供服务为所述内网穿透客户端配置所述内网穿透服务端的地址和配置所述Service的域名。
在其中一些实施例中,所述***包括:
用户业务应用将内网用户kubernetes集群创建的已发布到公网上的业务取消发布的过程如下,所述IP提供服务实时检测所述用户业务应用创建的Service,在检测到所述Service已被删除的情况下,所述IP提供服务删除内网穿透客户端的容器,并向所述容器管理服务发送IP释放请求;
所述容器管理服务接收所述IP释放请求,所述容器管理服务向公有云发送IP释放请求,所述容器管理平台删除内网穿透服务端的容器。
相比于相关技术,本申请实施例提供的一种内网kubernetes对外提供公网访问的方法和***,通过IP提供服务实时检测用户业务应用创建的Service,在IP提供服务检测到业务需要对外提供服务的情况下,IP提供服务向容器管理平台发送请求指令,容器管理服务接收请求指令,容器管理服务向公有云申请服务器负载均衡,容器管理服务创建内网穿透服务端的容器,容器管理服务将公网IP和端口发送到IP提供服务,IP提供服务接收公网IP和端口,IP提供服务创建内网穿透客户端的容器,内网穿透客户端连接到内网穿透服务端,将业务发布到公网上,解决了内网kubernetes集群中部署的业务提供公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务提供公网访问的自动配置,提高了工作效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
在相关技术中,图1是根据相关技术中内网kubernetes集群提供公网访问能力***的结构框图,如图1所示,相关技术中用户通过商业软件实现内网穿透,首先要在内网服务器中安装该商业软件的客户端,当用户有业务需要发布的时候,需要在该商业客户端上手动配置要发布的业务,然后通过商业服务端发布到公网上,因此数据传输的安全性得不到保证,使用商业软件导致成本增加,另外当有大量业务需要发布的时候,频繁的手动配置会造成工作效率的下降。
本申请实施例提供了一种内网kubernetes对外提供公网访问的***,图2是根据本申请实施例的内网kubernetes提供公网访问能力***的结构框图,如图2所示,该***包括:用户业务应用21、IP提供服务22、容器管理服务23、容器管理平台24、内网穿透服务端25和内网穿透客户端26,其中用户业务应用21和IP提供服务22部署在内网用户kubernetes集群中,容器管理服务23部署在容器管理平台24中,容器管理平台24部署在公有云中。
IP提供服务22实时检测用户业务应用21创建的Service,在IP提供服务22检测到业务需要对外提供服务的情况下,IP提供服务22向容器管理平台24发送请求指令,容器管理服务23接收请求指令,容器管理服务23向公有云申请服务器负载均衡(Server LoadBalancer),容器管理服务23创建内网穿透服务端25的容器,容器管理服务23将公网IP和端口发送到IP提供服务22,IP提供服务22接收公网IP和端口,IP提供服务22创建内网穿透客户端26的容器,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上。
通过本申请实施例,由于IP提供服务22实时检测用户业务应用21创建的Service,在检测到业务需要对外提供服务的情况下,IP提供服务22发送请求指令到容器管理服务23,容器管理服务23向公有云申请资源和创建内网穿透服务端25的容器,并返回消息到IP提供服务22,IP提供服务22创建内网穿透客户端26的容器,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上,所以,用户无需手动申请公有云资源,以及手动配置内网穿透服务端25和内网穿透客户端26,解决了内网kubernetes集群中部署的业务提供公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务提供公网访问的自动配置,提高了工作效率。
在其中一些实施例中,IP提供服务22实时检测用户业务应用21创建的Service,其中,用户业务应用21创建的Service,该Service的类型为ClusterIP,此类型的Service只能在kubernetes集群内部进行访问,需要说明的是,Service是kubernetes中一个高层的抽象。Service从逻辑上把容器组(Pod)进行分组,并且设置访问的策略。一般通过Label和Selector来达到分组的目的,用App作为Key,数据库(Database)和前端模块(Frontend)作为Value来区分容器组(Pod),通过Selector(App=Frontend和App=Database),可以把这些容器组(Pod)分为两个逻辑组,即两个Service,kubernetes集群中的Service有三种类型,ClusterIP类型的Service通过ClusterIP来获取自己的VirtualIP,VirtualIP是用来和别的Service通信的,只能在集群内部被访问;NodePort类型的Service会创建一个ClusterIP,还会把所有worker node上的一个端口映射到这个Service;LoadBalancer类型的Service会自动创建NodePort和ClusterIP,外部的load balancer会自动路由上去,Service会在一个静态的端口上被暴露,通过底层的cloud provider提供的load balancer来暴露到公网。
在一些具体实施例中,用户在自己的kubernetes集群上安装IP提供服务22,IP提供服务22主动向容器管理平台24所在的云平台注册用户kubernetes集群,IP提供服务22检测到业务需要对外提供服务的情况包括:IP提供服务22检测到Service中描述了需要公网IP和对外开放的端口的情况,其中,用户在用户业务应用21中声明对外提供服务的yaml文件,大致内容如下:
kind: Service
apiVersion: v1
metadata:
annotations:
service.beta.Kubernetes.io/lstack.ip.provider: '10M'
#表明提供10M带宽的IP。
name: app-dist-slb
namespace: default
ports:
- name: cs-service-0
port: 80
protocol: TCP
targetPort: 80
selector:
app: app-dist
type: clusterIp
IP提供服务22检测到用户通过用户业务应用21写入上述yaml文件,主动向容器管理服务23请求10M带宽的公网IP,容器管理服务23创建一个内网穿透服务端25的容器,向公有云申请公网IP或者服务器负载均衡(Server Load Balancer),并绑定到对应的内网穿透服务端25的容器的运行主机上,容器管理服务23将公网IP、内网穿透服务端25的监听端口和鉴定权限的token发送到IP提供服务22,IP提供服务22接收到返回的信息,根据该返回的公网IP、内网穿透服务端25的监听端口和鉴定权限的token,以及所述描述了需要公网IP和对外开放的端口的Service中定义的监听端口80,生成配置文件,创建内网穿透客户端26的容器,配置文件的大致内容如下:
[common]
server_addr = x.x.x.x //服务端地址
server_port = 7000 //服务端端口
token = 123456
[http]
type = tcp
local_ip = app-dist-slb //指向service的域名
local_port = 80 //app-dist-slb这个服务的端口
remote_port = 80 //在服务端开通80端口
所述配置文件包括但不限于内网穿透服务器的地址、对外开放的端口、指向service的域名、对外提供服务的业务的端口、鉴定权限的token和在内网穿透服务端25开通的端口,内网穿透服务端25和内网穿透客户端26自动配置完成后,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上。
通过本具体实施例,IP提供服务22实时检测用户业务应用21创建的Service,在检测到业务需要对外提供服务的情况下,IP提供服务22发送请求指令到容器管理服务23,容器管理服务23向公有云申请10M带宽的公网IP和创建内网穿透服务端25的容器,并返回消息到IP提供服务22,IP提供服务22创建内网穿透客户端26的容器,并通过配置文件对内网穿透客户端26进行配置,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上,所以,用户无需手动申请公有云资源,以及手动配置内网穿透服务端25和内网穿透客户端26,解决了内网kubernetes集群中部署的业务提供公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务提供公网访问的自动配置,提高了工作效率。
在其中一些实施例中,IP提供服务22实时检测用户业务应用21创建的Service,在检测到数个Service对应的业务需要对外提供服务的情况下;
IP提供服务22向容器管理平台24发送请求指令,容器管理服务23接收请求指令;
容器管理服务23向公有云申请数个服务器负载均衡,数个服务器负载均衡与数个Service一一对应;
容器管理服务23创建数个内网穿透服务端25的容器,数个服务器负载均衡配置后端服务器一一指向数个内网穿透服务端25的容器;
容器管理服务23将数个公网IP和数个端口发送到IP提供服务22,IP提供服务22接收上述公网IP和端口;
IP提供服务22创建数个内网穿透客户端的容器,内网穿透客户端26一一对应连接到内网穿透服务端25,将数个Service对应的业务发布到公网上。通过本实施例,IP提供服务22自动创建数个内网穿透客户端的容器,容器管理服务23自动创建数个内网穿透服务端25的容器,内网穿透客户端26一一对应连接到内网穿透服务端25,将数个Service对应的业务发布到公网上,解决了内网kubernetes集群中部署的业务批量提供公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务批量提供公网访问的自动配置,提高了工作效率。
在其中一些实施例中,用户业务应用21将内网用户kubernetes集群创建的已发布到公网上的业务取消发布的过程如下,IP提供服务22实时检测用户业务应用21创建的Service,在检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理服务23发送IP释放请求;
容器管理服务23接收IP释放请求,容器管理服务23向公有云发送IP释放请求,容器管理平台24删除内网穿透服务端25的容器。
通过本实施例,IP提供服务22实时检测用户业务应用21创建的Service,在检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理服务23发送IP释放请求,容器管理服务23接收IP释放请求,向公有云发送IP释放请求和删除内网穿透服务端25的容器,所以,用户无需手动释放公有云的公网IP,以及手动删除内网穿透服务端25和内网穿透客户端26,解决了内网kubernetes集群中部署的业务取消公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务取消公网访问的自动配置,提高了工作效率。
本申请实施例提供了一种内网kubernetes对外提供公网访问的方法,图3是根据本申请实施例的内网kubernetes提供公网访问能力方法的流程图,如图3所示,该方法包括如下步骤:
S302,内网穿透机制通过IP提供服务22实时检测用户业务应用21创建的Service;
S304,在IP提供服务22检测到业务需要对外提供服务的情况下,IP提供服务22向容器管理平台24发送请求指令;
S306,内网穿透机制通过部署在容器管理平台24的容器管理服务23接收请求指令,容器管理服务23向公有云申请服务器负载均衡,容器管理服务23创建内网穿透服务端25的容器,容器管理服务23将公网IP和端口发送到IP提供服务22;
S308,内网穿透机制通过IP提供服务22接收公网IP和端口,IP提供服务22创建内网穿透客户端26的容器;
S310,内网穿透机制通过内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上。
通过本申请实施例的步骤S302至S310, IP提供服务22实时检测用户业务应用21创建的Service,在检测到业务需要对外提供服务的情况下,IP提供服务22发送请求指令到容器管理服务23,容器管理服务23向公有云申请资源和创建内网穿透服务端25的容器,并返回消息到IP提供服务22,IP提供服务22创建内网穿透客户端26的容器,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上,所以,用户无需手动申请公有云资源,以及手动配置内网穿透服务端25和内网穿透客户端26,解决了内网kubernetes集群中部署的业务提供公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务提供公网访问的自动配置,提高了工作效率。
在其中一些实施例中,IP提供服务22检测到业务需要对外提供服务的情况包括:IP提供服务22检测到Service中描述了需要公网IP和对外开放的端口的情况。
在其中一些实施例中,容器管理服务23向公有云申请服务器负载均衡,容器管理服务23创建内网穿透服务端25的容器,容器管理服务23将公网IP和端口发送到IP提供服务22,方法包括:容器管理服务23向公有云申请服务器负载均衡,容器管理服务23创建内网穿透服务端25的容器,服务器负载均衡将后端服务组配置为内网穿透服务端25的容器所在的云主机,容器管理平台24将配置后的公网IP和端口发送到IP提供服务22。
在其中一些实施例中,IP提供服务22创建内网穿透客户端26的容器包括:IP提供服务22为内网穿透客户端26配置内网穿透服务端25的地址和配置Service的域名。
在其中一些实施例中,图4是根据本实施例的内网kubernetes取消公网访问能力方法的流程图,如图4所示,该方法包括如下步骤:
S402,内网穿透机制通过IP提供服务22实时检测用户业务应用21创建的Service;
S404,IP提供服务22在检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理平台24发送IP释放请求;
S406,内网穿透机制通过容器管理平台24接收IP释放请求,容器管理平台24向公有云发送IP释放请求,并删除内网穿透服务端25的容器;
通过本具体实施例的步骤S402至S406,IP提供服务22实时检测用户业务应用21创建的Service,在检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理服务23发送IP释放请求,容器管理服务23接收IP释放请求,向公有云发送IP释放请求和删除内网穿透服务端25的容器,所以,用户无需手动释放公有云的公网IP,以及手动删除内网穿透服务端25的容器和内网穿透客户端26的容器,解决了内网kubernetes集群中部署的业务取消公网访问必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务取消公网访问的自动配置,提高了工作效率。
在其中一些具体实施例中,图5是根据本具体实施例的内网kubernetes的公网访问能力方法的流程图,如图5所示,该方法包括如下步骤:
S502,内网穿透机制通过IP提供服务22实时检测用户业务应用21创建的Service;
S504,在IP提供服务22检测到Service中描述了需要公网IP和对外开放的端口的情况下,IP提供服务22向容器管理平台24发送请求指令;
S506,内网穿透机制通过部署在容器管理平台24的容器管理服务23接收请求指令,容器管理服务23向公有云申请服务器负载均衡,容器管理服务23创建内网穿透服务端25的容器,服务器负载均衡将后端服务组配置为内网穿透服务端25的容器所在的云主机,容器管理平台24将配置后的公网IP和端口发送到IP提供服务22;
S508,内网穿透机制通过IP提供服务22接收公网IP和端口,IP提供服务22创建内网穿透客户端26的容器,IP提供服务22为内网穿透客户端26配置内网穿透服务端25的地址和配置Service的域名;
S510,内网穿透机制通过内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上;
S512,在IP提供服务22检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理平台24发送IP释放请求;
S514,内网穿透机制通过容器管理平台24接收IP释放请求,容器管理平台24向公有云发送IP释放请求,并删除内网穿透服务端25的容器。
通过本具体实施例的步骤S502至S514,IP提供服务22实时检测用户业务应用21创建的Service,在检测到业务需要对外提供服务的情况下,IP提供服务22发送请求指令到容器管理服务23,容器管理服务23向公有云申请公网IP和创建内网穿透服务端25的容器,并返回消息到IP提供服务22,IP提供服务22创建内网穿透客户端26的容器,并通过配置文件对内网穿透客户端26进行配置,内网穿透客户端26连接到内网穿透服务端25,将业务发布到公网上;在检测到Service已被删除的情况下,IP提供服务22删除内网穿透客户端26的容器,并向容器管理服务23发送IP释放请求,容器管理服务23接收IP释放请求,向公有云发送IP释放请求和删除内网穿透服务端25的容器,所以,用户无需手动申请或释放公有云的公网IP,以及手动创建或删除内网穿透服务端25的容器和内网穿透客户端26的容器,解决了内网kubernetes集群中部署的业务提供公网访问和取消公网访问功能的时候,必须进行手动配置导致效率低下的问题,实现了内网kubernetes集群中部署的业务提供公网访问和取消公网访问的自动配置,提高了工作效率。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。