掌桥专利:专业的专利平台
掌桥专利
首页

一种Kubernetes集群访问控制方法、系统及相关设备

文献发布时间:2023-06-19 11:35:49


一种Kubernetes集群访问控制方法、系统及相关设备

技术领域

本发明涉及Kubernetes集群访问控制技术领域,尤其涉及一种Kubernetes集群访问控制方法、系统及相关设备。

背景技术

Kubernetes是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构。入口(Ingress)服务是Kubernetes对外部访问进行管理的API对象,可以提供负载均衡、基于名称的虚拟托管。

当需要把kubernetes集群中的服务需要暴露给集群外面访问时,会安装Ingress控制器来控制外部流量的去向。当前业界使用的入口控制器(Ingress controller)包括但不限于nginx、haproxy、traefik、kong等组件。在使用上述Ingress控制器组件时,需要人工根据不同组件的语法编写不同的Ingress对象文件控制Ingress控制器的行为。

一个kubernetes集群一般只安装一种Ingress控制器,如果用户更换不同类型Ingress控制器,或者有多个kubernetes集群(不同的kubernetes集群使用不同的Ingress控制器),那么就需要用户熟悉多种Ingress组件的Ingress对象文件配置方式,操作门槛高。而且,需要人工查询各个kubernetes集群的Ingress控制器组件的类型,然后进行人工编译Ingress对象文件,费时费力,管理效率低下。

发明内容

本发明实施例提供了一种Kubernetes集群访问控制方法、系统及相关设备,用于提高Kubernetes集群访问控制管理的效率。

本发明实施例第一方面提供了一种Kubernetes集群访问控制方法,可包括:

在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系;

获取入口服务管理请求,所述入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息;

在所述数据库中查询所述目标Kubernetes集群对应的入口控制器的类型信息;

根据所述目标Kubernetes集群的入口控制器的类型信息和所述服务配置信息生成入口服务对象程序。

可选的,作为一种可能的实施方式,本发明实施例中,根据所述目标Kubernetes集群的入口控制器的类型信息和所述服务配置信息生成入口服务对象程序,可包括:

根据所述目标Kubernetes集群的入口控制器的类型信息查询对应的程序语法规则;

根据所述语法规则将所述服务配置信息写入入口服务对象程序。

可选的,作为一种可能的实施方式,本发明实施例中,在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,可包括:

以键值对的形式记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,并生成预设格式的元数据文件。

可选的,作为一种可能的实施方式,本发明实施例中的Kubernetes集群访问控制方法,还可以包括:

遍历获取到的pod信息列表,基于预设的命名字段识别Kubernetes集群的入口控制器的类型信息。

可选的,作为一种可能的实施方式,本发明实施例中的Kubernetes集群访问控制方法,还可以包括:

将所述入口服务对象程序写入所述目标Kubernetes集群。

本发明实施例第二方面提供了一种Kubernetes集群访问控制系统,可包括:

可选的,作为一种可能的实施方式,本发明实施例中的Kubernetes集群访问控制系统,还可以包括:

元数据存储模块、执行模块以及Kubernetes连接代理模块;其中,

所述元数据存储模块,用于在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系;

所述执行模块,用于获取入口服务管理请求,所述入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息;在所述数据库中查询所述目标Kubernetes集群对应的入口控制器的类型信息;根据所述目标Kubernetes集群的入口控制器的类型信息和所述服务配置信息生成入口服务对象程序;

所述Kubernetes连接代理模块,用于入口服务对象程序写入所述目标Kubernetes集群。

可选的,作为一种可能的实施方式,所述执行模块,可包括:

查询单元,根据所述目标Kubernetes集群的入口控制器的类型信息查询对应的程序语法规则;

执行单元,根据所述语法规则将所述服务配置信息写入入口服务对象程序。

可选的,作为一种可能的实施方式,所述元数据存储模块,可包括:

存储单元,以键值对的形式记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,并生成预设格式的元数据文件。

可选的,作为一种可能的实施方式,所述执行模块还用于:

遍历获取到的pod信息列表,基于预设的命名字段识别Kubernetes集群的入口控制器的类型信息。

本发明实施例第三方面提供了一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。

本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面及第一方面中任意一种可能的实施方式中的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,预先在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,在获取入口服务管理请求之后,可以在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息,然后根据入口控制器的类型和服务配置信息自动生成入口服务对象程序。相对于相关技术,无需人工查询入口控制器的类型,无需人工编译多种类型的入口控制器对应的入口服务对象程序,提高了Kubernetes集群访问控制的效率。

附图说明

图1为本发明实施例中一种Kubernetes集群访问控制方法的一个实施例示意图;

图2为本发明实施例中一种Kubernetes集群访问控制方法的另一个实施例示意图;

图3为本发明实施例中一种Kubernetes集群访问控制方法的一个具体应用实施例示意图;

图4为本发明实施例中一种Kubernetes集群访问控制系统的一个实施例示意图;

图5为本发明实施例中一种计算机装置的一个实施例示意图。

具体实施方式

本发明实施例提供了一种Kubernetes集群访问控制方法、系统及相关设备,用于提高Kubernetes集群访问控制管理的效率。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中一种Kubernetes集群访问控制方法的一个实施例可包括:

S101、在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系;

相关技术中,在使用Kubernetes集群中的入口控制器(Ingress controller)组件时,需要人工查询Ingress controller组件的类型,然后根据不同组件的语法编写不同的Ingress对象文件控制Ingress控制器的行为,费时费力,管理效率低下。

为了提高管理效率,可以预先在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,以便于自动化查询所需控制的Kubernetes集群的入口控制器的类型。

可选的作为一种可能的实施方式,本发明可以以键值对的形式记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,并生成预设格式的元数据文件。具体的,元数据文件的存储格式可以是如json,yaml等,数据库可以是关系型数据库MySql、key-value型数据库redis等,具体此处不做限定。

S102、获取入口服务管理请求,入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息;

当需要对Kubernetes集群的入口服务(Ingress)进行管理时,管理人员可以向管理系统发送入口服务管理请求,入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息。

可以理解的是,该入口服务管理请求还可以根据实际需求加入其他信息,例如目标Kubernetes集群所在的命名空间等,具体此处不做限定。

S103、在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息;

不同入口控制器(Ingress controller)组件的程序语法规则不同,在获取到入口服务管理请求之后,需要在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息,以便于根据不同类型的入口控制器进行分类处理。

S104、根据目标Kubernetes集群的入口控制器的类型信息和服务配置信息生成入口服务对象程序。

在确定目标Kubernetes集群的入口控制器的类型之后,则可以确定入口控制器(Ingress controller)组件的程序语法规则,集群访问控制系统可以根据语法规则自动将服务配置信息写入入口服务对象程序。进一步的,集群访问控制系统可以将入口服务对象程序写入目标Kubernetes集群,以实现对Kubernetes集群访问控制。

可以理解的是,具体的服务配置信息可以根据业务需求进行合理的设置,例如,如果需要使用Kubernetes集群的重写url的功能,即把/path/info的请求转发到/path,haproxy组件对应的Ingress对象需要在annotation添加ingress.kubernetes.io/rewrite-target=/,而nginx组件对应的Ingress对象需要在annotation添加nginx.ingress.kubernetes.io/rewrite-target=$2,还要在需要把url改成/path(/|$)(.*)。其中,Annotation在软件术语中表示为注解,在kubernetes中为非标识的元数据,是一组或者多组键值对,一般用来存储一些辅助数据,例如版本信息、发行人等。

本发明实施例中,预先在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,在获取入口服务管理请求之后,可以在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息,然后根据入口控制器的类型和服务配置信息自动生成入口服务对象程序。相对于相关技术,无需人工查询入口控制器的类型,无需人工编译多种类型的入口控制器对应的入口服务对象程序,提高了Kubernetes集群访问控制的效率。

请参阅图2,本发明实施例中Kubernetes集群访问控制方法的另一个实施例可包括:

S201、遍历获取到的pod信息列表,基于预设的命名字段识别Kubernetes集群的入口控制器的类型信息;

为了提高管理效率,可以预先在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,以便于自动化查询所需控制的Kubernetes集群的入口控制器的类型。为此,Kubernetes集群系统启动或者第一次连接指定的kubernetes之后,集群访问控制系统需要Kubernetes集群的入口控制器的类型信息。

申请人注意到,在kubernetes集群安装的ingress controller,一般情况下会有相对固定的名字或者标签或者镜像名字,例如haproxy一般安装在kube-system这个命名空间而它的名字中就会包含haproxy。集群访问控制系统可以遍历获取到的pod信息列表,基于预设的命名字段识别入口控制器的类型信息。遍历后如果没有识别到ingresscontroller信息,还可以手动输入相关信息。其中,pod是kubernetes集群中能够被创建和管理的最小部署单元。一个pod中可以包含一个或多个容器。

S202、在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系;

S203、获取入口服务管理请求,入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息;

S204、在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息;

S205、根据目标Kubernetes集群的入口控制器的类型信息和服务配置信息生成入口服务对象程序。

可以理解的是,本发明中步骤S202至S205中描述的内容与上述图1所示的实施例中步骤S101至S104中描述的内容类似,此处不做赘述。

为了便于理解,请参阅图3,下面将结合具体的应用实施例对本发明中的Kubernetes集群访问控制方法进行描述。具体可以包括如下步骤:

一、获取ingress controller数据;

系统启动或者本装置第一次连接指定的kubernetes之后,通过Kubernetes连接代理模块向kubernetes集群获取部分namespace例如kube-system下的pod信息列表。

二、识别ingress controller信息;

在kubernetes安装的ingress controller,一般情况下会有相对固定的名字或者标签或者镜像名字,例如haproxy一般安装在kube-system这个命名空间而它的名字中就会包含haproxy。通过这些信息可以识别集群使用的是什么ingress controller。遍历获取到的pod信息列表,把识别到的ingress controller信息提取出来。遍历后如果没有识别到ingress controller信息,则可以手动输入相关信息。

三、保存元数据:把上一步的ingress controller信息按照一定格式,如json,yaml,保存到元数据存储模块。

四、接收用户请求;

当用户需要生成ingress对象时会把请求发送到集群访问控制系统。

五、获取元数据;

从元数据存储模块中获取集群中使用的ingress controller信息。如果获取到的信息为空,则说明该集群没有使用ingress controller或者使用的ingress controller无法被识别。

六、生成ingress对象;

ingress controller的高级功能一般通过在ingress对象添加特定的annotation实现。不同的ingress controller对应的ingress对象内容一般情况下是不相同的。根据上一步获取到的元数据信息,如果信息中没有具体的ingress controller信息,则只支持ingress的基础功能;如果信息中包含具体ingress controller信息,则根据具体的ingress controller和需要使用的高级功能生成对应的ingress对象。以haproxy和nginx为例,如果需要使用重写url的功能,即把/path/info的请求转发到/path,haproxy对应的ingress对象需要在annotation添加ingress.kubernetes.io/rewrite-target=/,而nginx对应的ingress对象需要在annotation添加nginx.ingress.kubernetes.io/rewrite-target=$2,还要在需要把url改成/path(/|$)(.*)。

七、操作kubernetes集群。

调用kubernetes连接代理模板接口,把上一步生成的对象发送给kubernetes集群,并执行程序。

请参阅图4,本发明实施例还提供了一种Kubernetes集群访问控制系统,可包括:

元数据存储模块401、执行模块402、Kubernetes连接代理模块403;其中,

元数据存储模块401,用于在数据库中记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系;

执行模块402,用于获取入口服务管理请求,入口服务管理请求中至少包含目标Kubernetes集群的身份标识以及服务配置信息;在数据库中查询目标Kubernetes集群对应的入口控制器的类型信息;根据目标Kubernetes集群的入口控制器的类型信息和服务配置信息生成入口服务对象程序;

Kubernetes连接代理模块403,用于入口服务对象程序写入目标Kubernetes集群。

可选的,作为一种可能的实施方式,执行模块,可包括:

查询单元,根据目标Kubernetes集群的入口控制器的类型信息查询对应的程序语法规则;

执行单元,根据语法规则将服务配置信息写入入口服务对象程序。

可选的,作为一种可能的实施方式,元数据存储模块,可包括:

存储单元,以键值对的形式记录多个Kubernetes集群的身份标识与入口控制器的类型信息之间映射关系,并生成预设格式的元数据文件。

可选的,作为一种可能的实施方式,执行模块还用于:

遍历获取到的pod信息列表,基于预设的命名字段识别Kubernetes集群的入口控制器的类型信息。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上面从模块化功能实体的角度对本发明实施例中的Kubernetes集群访问控制系统进行了描述,请参阅图5,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:

该计算机装置1可以包括存储器11、处理器12和输入输出总线13。处理器11执行计算机程序时实现上述图1所示的Kubernetes集群访问控制方法实施例中的步骤,例如图1所示的步骤101至104。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。

其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是计算机装置1的内部存储单元,例如该计算机装置1的硬盘。存储器11在另一些实施例中也可以是计算机装置1的外部存储设备,例如计算机装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括计算机装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于计算机装置1的应用软件及各类数据,例如计算机程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行计算机程序01等。

该输入输出总线13可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。

进一步地,计算机装置还可以包括有线或无线网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该计算机装置1与其他电子设备之间建立通信连接。

可选地,该计算机装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的,用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在计算机装置1中处理的信息以及用于显示可视化的用户界面。

图5仅示出了具有组件11-14以及计算机程序01的计算机装置1,本领域技术人员可以理解的是,图5示出的结构并不构成对计算机装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现上述图1所示的Kubernetes集群访问控制方法实施例中的步骤,例如图1所示的步骤101至104。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种Kubernetes集群访问控制方法、系统及相关设备
  • 一种WIFI访问控制方法、相关设备及系统
技术分类

06120112986624