网络管理
外部服务
- 概述
集群中项目下的服务,常需要访问一些非本项目的外部服务,主要包含以下两种类型;集群外部的服务,如MySQL、Redis等中间件,公有云的一些托管服务rds等、访问这些服务的方式一般为IP+端口或者是域名; 访问云内其它项目的服务,访问方式为服务域名; 如果服务的配置文件中直接配置对应IP和端口,那么一旦IP发生变化,就要把调用此服务的所有服务都要修改滚动升级一把,过程中操作繁琐,且容易遗漏; 服务配置文件中直接配置服务的域名,则也不容易清楚调用关系 信云+建议通过单独创建“外部服务”的方式去访问: “外部服务”指向要访问的外部的服务或者其它项目内的内部服务,支持IP+端口、域名、选择云内其它项目服务,三种类型;服务的配置内直接配置“外部服务名,这样“外部服务”的IP或者域名发生变化,只需要修改“外部服务”即可,服务的配置无需跟着做修改; 注意:依赖该外部服务并会创建长连接的内部服务,需要重启或升级生效;外部服务名需要遵守命名规则:“ex-$租户名-$项目名-$服务名-svc”。
- 外部服务创建
Ip+端口类型: 本质是在k8s创建了没有Pod 选择器(selector)的service,手动创建endpoint,endpoint内配置IP和端口; IP和端口可以配置多个,访问时会负载均衡,如下图所示,在网络管理-外部服务-创建外部服务;
域名类型: 本质是创建了externalName类型的Service,DNS解析外部服务名时,cname到了真正的域名,如下图所示。
云内其它项目服务: 本质也是创建了externalName类型的service,DNS解析外部服务名时,cname到了其它项目服务的域名,如下图所示,选择服务类型为域名(勾选云内服务),选择其它租户-项目-服务名。
- 外部服务编辑
IP类型的支持增加修改删除ip+端口;域名和勾选云内服务支持修改;IP+端口、域名、选择云内其它项目服务三种类型支持更换; 如图所示,服务列表页点击编辑后修改。
- 外部服务查看
可查看使用此外部服务的相关内部服务,点击内部服务名直接跳转到服务实例页,如下图所示,点击外部服务名弹出详情,点击查看弹出配置内使用此外部服务的内部服务。
四层网关
- 概述
四层网关本质是通过新建NodePort类型的service,实现云外流量访问云内内部服务; 在所有节点(虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务; 如果后端服务有多个可用的实例平台会自动在多个实例间做负载均衡; 使用本网关向后端服务转发请求时,后端服务实例收到的数据包中IP层的客户端IP地址会记录为网关节点的IP,而不是保留网关所接收到的原始客户端IP 本网关支持转发TCP和UDP协议请求。
- 四层网关创建
输入名称,选择目标服务和端口,添加备注,端口可配置多个,如下图所示网络管理-四层网关-创建网关。
- 四层网关编辑
编辑只可修改添加删除端口,如下图所示
- 四层网关查看
查看创建的网关端口,通过访问任意节点IP+3xxxx端口,实现把流量转发到了服务的端口,如下图所示,通过访问信云+测试环境的任一节点ip的31226端口可把请求转发到服务的Pod 80端口
七层网关
- 概述
七层网关是ingress-nginx组件所提供的反向代理和负载均衡的功能,通过页面配置ingress规则,controller感知到ingress规则变更后修改nginx的配置文件并进行reload,实现nginx的动态配置。基本架构为下图所示:
- 创建和使用
点击创建,按需填写所要配置的主机名、请求路径以及请求所要转发到的目的service和端口,如下图所示,网络管理-七层网关-创建;
支持灰度分流,选择其它服务填入所占权重即可实现分流功能,权重总和不能大于100,如下图所示,两个服务的权重都为50。
- 编辑和修改
点击除七层网关的名称外,其它配置都可修改
网络策略
- 概述
基于k8s networkpolicy实现支持服务安全组,控制服务可访问和被访问范围;支持租户项目之间网络隔离和放开;
- 创建和使用**(请联系平台管理员进行配置)**
网络管理-网络策略,点击创建网络策略,输入策略名称,选择需要被隔离的服务; 支持ingress来源白名单,和egress目标白名单,进流量和出流量的访问控制; Ingress和egress支持podcidr(输入ip段),服务名称(本项目下的其它服务),命名空间(其它租户或者项目下的服务)三种类型; 可指定端口范围,不指定端口默认全都放开; podcidr类型支持从ip段内去除部分ip;
- 编辑和修改
策略名称无法修改,其它配置都可编辑修改