企业服务网格支持用户将服务接入到该平台。从服务部署方式来讲,支持容器部署、传统主机部署方式接入。从服务类型来看,支持任何语言、任何协议服务(WebService,Http,GRPC协议等)接入。 同时可以将外部注册中心的服务接入到服务网格,实现将注册中心的服务逐步平滑的迁移并接入服务网格。 下面介绍不同服务部署方式的服务的接入方式。
服务接入网格的前提
项目负责人联系平台管理员,由平台管理员/租户管理员对服务所在命名空间打开服务网格开关(且授权网格的primary集群),否则所有操作按钮均置灰无法点击!
若系统已经上线运行,请告知平台管理员,协助制定平滑切换计划。
容器服务接入网格
1、部署服务
- 在信云+容器服务/原生K8s或OCP下已部署业务服务;
- 平台管理员/租户管理员将服务部署所在的namespace通过 [管理工作台/租户管理/项目管理]的添加项目关联进来。
2、接入网格
- 检查当前的集群&租户&项目,进入网格服务管控页面,列表中找到需要接入网格的服务,在右侧操作列中,点击“接入网格”。注册中心服务需额外完成在[注册中心管理]中配置对应的注册中心(先后顺序皆可),参见3、注册中心管理,非注册中心服务可直接确认接入网格。
- 【此步触发服务滚动发布一次】点击“接入网格”后,弹框中显示服务名称、关联工作负载(类型),用户可定义版本、指定sidecar启动顺序,按需选择“同时启动业务容器和sidecar”或“等sidecar就绪后,再启动业务容器”,确认后,点击“确认接入”,弹框消失,右上角提示正在接入中,请耐心等待...。
- 接入成功后,列表展示此服务“已接入”,操作项增多。
重要说明
只将微服务接入网格,不要将nacos、redis、mysql、mq之类的中间件组件接入网格。
【在信云+上创建的服务默认满足】当前只支持有且只有一个Service的工作负载(Deployment、Statefulset)接入网格。
接入网格后,修改版本号,会重启目标工作负载对应的pod!
如果业务容器在启动前几秒立刻需要通过网络请求外部服务,则应当选择“等sidecar就绪后,再启动业务容器”,避免因sidecar未就绪时业务容器就请求外部网络导致业务容器失败,造成pod反复重启,否则可以选同时启动。
3、注册中心管理
支持注册中心的服务接入网格,确保业务应用平滑稳定的迁移至网格治理平台中。需要满足以下两点,顺序不分先后:
- 注册中心添加正确:网格主要实现两个重要能力,一是不改变原有调用方式,就可使用网格治理能力;二是可以查看注册中心中服务列表,标识哪些服务已接入网格;
- 注册中心管理的微服务在 [网格服务管控] 中成功接入网格【注册中心本身不要接入】。
添加注册中心
- 检查当前的集群&租户&项目,进入 [服务网格/注册中心管理] 页面。
- 列表展示注册中心名称、注册中心类型、注册中心地址、状态、服务数、操作。
- 状态:连接正常、连接失败
- 服务数:接入网格服务数 / 服务总数,服务总数为当前注册中心中的服务总数
- 操作:编辑、移出
- 点击“添加注册中心”
注册中心名称:由3-65位任意字符组成,开头不支持空格
注册中心类型:支持Zookeeper、Consul、Nacos(1.x / 2.x)、Eureka四种类型
用户名、密码,非必填
注册中心地址:填写相应注册中心地址,对于注册中心在容器上的,推荐将填写集群内service地址,即到[容器服务/应用管理]找到服务详情页的[基本信息/服务暴露/服务域名]+.svc.cluster.local:端口,如HTTP market-nacos.namespace.svc.cluster.local:8848
- 对于zookeeper高可用场景,需要填写所有地址,用英文逗号隔开
- Consul,仅支持http协议
- Nacos,选择HTTP/HTTPS协议
- Eureka,多个用英文逗号隔开
如果是Nacos,还需要说明服务所属的Nacos命名空间ID和服务分组group
- 命名空间ID:由 3 ~ 128 个字母、数字、中划线"-" 或 下划线"_" 组成,且以字母、数字开头或结尾。
- 服务分组group:限制 3 ~ 128字符,输入框可填写多个,用英文逗号隔开
- 点击<确定>按钮完成添加;注册中心接入后,在网格服务管控页面可接入该注册中心的服务。
INFO
不支持场景:注册中心的服务部署在不同的集群
在全局维度下,为避免网格策略下发问题,确保每个注册中心(nacos地址+nacos namespace+nacos group唯一的组合,其他类型仅验证地址)只添加一次
注册中心nacos1.x开启认证后,dubbo的版本范围为[2.7.8~2.8.0)才能认证成功
注册中心naco2.x开启认证后,dubbo版本最低要求为3.09才能认证成功
Dubbo Consumer服务注册到zookeeper注册中心后,目前按照dubbo服务展示,故查看注册中心服务时会缺失部分字段,以“-”表示
Spring cloud服务注册到eureka、zookeeper、consul注册中心时,需在服务的application.yml中对应添加如下变量,以保证在平台查看注册中心服务时正常获取显示服务名称: Zookeeper:spring.cloud.zookeeper.discovery.prefer-ip-address为true
Eureka:eureka.instance.prefer-ip-address为true
Consul:spring.cloud.consul.discovery.prefer-ip-address为true
编辑注册中心
操作步骤如下所示:
- 进入[服务网格/注册中心管理]页面。
- 列表中找到需要移出的注册中心,点击编辑按钮。
- 除注册中心名称、类型不允许编辑,其它选项均可编辑。
移出注册中心
操作步骤如下所示:
- 进入[服务网格/注册中心管理]页面。
- 列表中找到需要移出的注册中心,点击移出按钮,二次弹框确认后,移出成功。
INFO
业务服务接入网格成功,不添加注册中心或移出注册中心时,策略不生效。建议用户使用时,两者都配置成功。
其他:移除网格
移除网格的操作步骤如下所示。
- 检查当前的集群&租户&项目,在服务列表中找到需要移除网格的服务。
- 【此步触发服务滚动发布一次】在右侧操作列中,点击“移除网格”,弹出移除网格提示框,默认勾选“同步删除服务在网格中的治理策略”,如下图,输入“删除策略”,点击“确定”后,弹框消失,移除成功。
传统主机服务接入网格
前提条件:建议把主机服务接入到和容器服务同一个项目下。 传统主机服务接入网格流程图如下:
- 主机部署主要完成在主机上安装agent,需要填写主机IP、服务账号、健康检查信息。
- 服务配置主要完成是传统主机上的服务接入网格,部署或更新sidecar,创建service等。
- 上述两步完成后,即将传统主机上的服务接入到网格,并可对其进行相关治理。
说明
- 传统主机部署的服务连接集群内容器部署的服务,要求集群内被请求的服务必须开启mTLS,否则Istio不会给传统主机下发eds信息。反之,无限制。
- 平台管理员请关注:传统主机部署的服务只能在Primary集群进行接入。
- 服务可以部署在不同的主机上,全部接入网格后,展示为同一网格服务的不同实例。
- 主机Hostname:不支持编辑,例主机IP是10.2.3.4,那hostname为node-10-2-3-4。
- 传统主机部署的服务支持功能如下:网关路由、服务治理、安全访问控制、故障模拟(仅HTTP协议)。
- 如果将传统主机服务移除网格(前提:对应主机不卸载重装),然后在“服务配置”页签中重新添加此服务,需要手动重启对应主机上的istio、vmlet服务。执行命令如下:
- systemctl stop istio
- systemctl stop vmlet
- systemctl start istio
- systemctl start vmlet
1、主机部署
操作步骤如下所示。
- 检查当前的集群&租户&项目,进入 [服务网格/网格服务管控] 菜单页,点击“+传统主机服务接入”按钮,进入传统主机服务接入页面。
- 进入“主机部署”页签,先将目标服务所在的主机进行接入。点击“+接入主机”,填写主机IP,选择服务账号(默认default),填写健康检查信息,支持HTTP、TCP、执行命令类型健康检查。
- 点击目标主机操作项的“安装”,默认SSH端口22,填写用户名、密码(非root用户,必须填写sudo密码,若不填写,默认与登录密码一致),点击确定,开始安装,请耐心等待。
- 安装过程中,部署结果显示“安装中”,和日志小图标,点击弹出面板展示安装日志,方便查看进度和安装详情。
- 安装成功后,部署结果显示“安装成功”。
2、服务配置
- 检查当前的集群&租户&项目,进入 [服务网格/网格服务管控] 菜单页,点击“+传统主机服务接入”按钮,进入传统主机服务接入页面。
- 进入“服务配置”页签,点击“+ 接入服务”,填写网格服务名称,端口号,选择主机。可添加多个。
- 端口号可填写多个,用英文逗号隔开。
- 选择主机处,仅展示在<主机部署>中已安装成功的主机,可选择多个,当选择多个接入网格后,显示为此网格服务的多个实例。
- 点击“确定”后,弹框消失,右上角提示服务接入网格中,请耐心等待。然后去 [服务网格/网格服务管控] 列表查看此服务接入状态,显示“已接入”说明接入成功。