外部微服务导入

1、基础服务搭建

1.1、redis

​ 系统自带有redis管理功能,可通过系统管理员为租户添加redis实例,来方便租户内的应用使用redis。

​ 系统管理员登录控制台,选择资源管理 --> 中间件管理 --> Redis管理 -->明细

image-20230614175157984

​ 在明细窗口中选择新建按钮

image-20230614175136544

参数说明:

数量:本次需要新增的redis实例数量,一般可选择1

应用模板:选择redis服务模板

租户: 可以选择某一个租户,系统将会在租户下部署redis服务,也可以统一将redis服务部署到平台自带的redis租户下,方便统一管理和追踪问题。建议采用第二种方式。

部署集群:选择该租户下的kube部署集群。这样redis服务才会一直运行,不会被池模式回收实例。

image-20230614174643264

​ 点击确定后系统后台会在对应的租户下面创建redis服务,并将此redis纳入到redis池中进行管理。当某一个租户下有redis服务组件的应用部署或者启动时,会到池中抢占这个创建好的redis实例,并进行绑定。这个redis实例就会分配给这个租户,方便租户内的应用进行使用。

​ 其中分配key的含义,@符号前面标识是给生产还是开发时使用,每个租户会最多被分配两个redis实例,production-session是提供给生产应用使用的,dev-session是提供给开发状态的应用使用的;@符号后面则是绑定的租户名称。

image-20230614175051806

1.2、nacos

​ 系统支持一个租户部署一套nacos,通过租户管理员登录到控制平台,选择应用/服务管理,从应用市场中选择nacos进行部署即可完成nacos的部署。

image-20230614175019950

​ 部署的时候需要注意,部署的集群请选择该租户下的kube集群。

image-20230614174946600

​ 由于平台目前内置的nacos是采用helm包的方式部署的,如果需要对外提供域名访问,有两种方案。一是需要用平台默认的域名访问,则要在平台的redis中增加相应的配置才能够将域名解析到nacos服务上。二是可以在k8s中定义ingress指向nacos服务来实现外部域名的访问。

1.2.1、平台默认域名访问

​ 使用系统管理员登录到管理控制台,选择运维管理 --> redis管理

image-20230614174534286

​ 在redis管理界面中找到GLOBAL_DOMAIN_UPSTREAM,为其增加配置项

image-20230614174453772

​ 在其中增加域名及需要映射的service地址。域名为应用管理中提供的默认域名,service地址格式为:service名称.service所在名空间:端口号。例如:nacos-cs.newdao-tenant-edgedemo:8848。配置好后即可通过域名访问至nacos中

image-20230614180116416

1.2.2、ingress配置访问

​ 参考ingress的标准用法即可,此处不再举例。

1.3、sentinel

​ 与nacos一样,通过租户管理员登录控制台后在应用服务管理中添加sentinel服务即可。如果需要访问的话也和nacos一样增加redis配置即可

1.4、seata

​ 与nacos一样,通过租户管理员登录控制台后在应用服务管理中添加seata服务即可。如果需要访问的话也和nacos一样增加redis配置即可

image-20230614181052601

2、微服务导入

2.1、前端导入

2.1.1、创建前端服务

​ 在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。

image-20230614182557651

​ 创建好应用后,为保证相关组件为最新的组件,可以现在架构中更新相应的组件。

image-20230614185338767

2.1.2、新增模块

​ 进入IDE后,选择模块设置

image-20230614182649189

​ 在弹出的模块设置对话框中,默认会有一个main模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。

参数说明:

名称:模块的名称,建议采用英文

显示名:模块的显示名称,可以使用中文也可以使用英文

运行环境:选择应用所需的运行环境,目前有tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择nginx,如果是通过git/svn等方式获取前端的源码后编译发布,则选择nginx-前端构建。

导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置git/svn选项下载源码后由平台进行编译。

image-20230614185039627

2.1.3、设置导入参数

​ 模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例

仓库类型:目前支持svn和git两种方式

代码分支:代码在git中的分支名称

代码分支:代码在git中的分支名称

仓库用户:代码仓库中的用户名

仓库Token:代码仓库中的token,支持使用用户名密码的模式,也支持使用token的模式。

仓库密码:代码仓库中的密码

源目录:代码在仓库中的目录位置

目标目录:需要下载至本项目下的目录位置,例如/uisource

文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为/时表示文件夹,没有/时表示文件。多个文件用回车进行隔开。例如:

/test/**/ui/  
/aa/**/bb/  
/cc/d.html

文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表

image-20230614183552376

​ 配置完成后点击导入源码按钮和确认按钮。

​ 如果采用平台内置的kong网关则需要在配置中对网关进行设置,本此示例中采用根目录直接访问,配置如下

image-20230614184440605

​ 如果需要从平台内置的门户进行访问,则需要对服务网关进行配置

image-20230614184547229

​ 如果需要对nginx的配置进行修改,则可以在代码选项卡中,修改相应的配置文件。路径如下:/model/service/模块名称/deploy/模块名称.module.conf

image-20230614184812894

2.1.4、发布前端服务

​ 完成配置后点击右上角的发布按钮,即可将应用发布至生产环境或者发布至应用市场中。

image-20230614184932445

​ 发布成功后与nacos一样,可以有两种选择将前端服务的访问地址暴露出去。一是使用平台默认的网关进行访问,二是手动配置ingress指向部署后的前端应用pod,配置可参考前面的nacos配置。

image-20230614191404683

2.2、后端导入

2.2.1、创建微服务

​ 在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。

image-20230614182557651

​ 创建好应用后,为保证相关组件为最新的组件,可以现在架构中更新相应的组件。

image-20230614185338767

2.2.2、新增模块

​ 进入IDE后,选择模块设置

image-20230614182649189

​ 在弹出的模块设置对话框中,默认会有一个main模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。

参数说明:

名称:模块的名称,建议采用英文

显示名:模块的显示名称,可以使用中文也可以使用英文

运行环境:选择应用所需的运行环境,目前有tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择nginx,如果是通过git/svn等方式获取前端的源码后编译发布,则选择nginx-前端构建。

导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置git/svn选项下载源码后由平台进行编译。

image-20230614185428130

2.2.3、设置导入参数

​ 模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例

仓库类型:目前支持svn和git两种方式

代码分支:代码在git中的分支名称

代码分支:代码在git中的分支名称

仓库用户:代码仓库中的用户名

仓库Token:代码仓库中的token,支持使用用户名密码的模式,也支持使用token的模式。

仓库密码:代码仓库中的密码

源目录:代码在仓库中的目录位置

目标目录:需要下载至本项目下的目录位置,例如/uisource

文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为/时表示文件夹,没有/时表示文件。多个文件用回车进行隔开。例如:

/test/**/ui/  
/aa/**/bb/  
/cc/d.html

文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表

image-20230614183552376

​ 配置完成后点击导入源码按钮和确认按钮。

2.2.4、微服务相关设置

​ 导入的微服务需要重点注意四个地方的配置

①、服务依赖配置

​ 如果一个微服务中有其他的服务依赖,例如这样。我们提供两种解决方案。一的话是通过maven的私有化仓库,二的话是将所依赖的服务源码一起导入后共同进行编译,源码按照相应的层级关系放置即可。

image-20230614185845720

②、多层级代码时pom文件修改

​ 如果代码存在多层级的目录,或者父子工程,则需要对pom文件中编译后的target目录进行修改,将目录指向模块根目录下的target目录,这样平台才能够识别到需要发布的jar包是哪一个。

image-20230614190103434

<build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <addResources>true</addResources>
                    <outputDirectory>../../../target</outputDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

③、微服务注册地址配置

代码中的微服务注册地址、端口号等设置主要提供有两种方式。

一是手动编写,即手动编写可以访问到的地址及端口号。

二是组件进行补充,通过引入cloud link组件,会默认指向该租户下的nacos、redis等服务。cloudLink里面维护了nacos服务、sentinel服务的连接信息。cloudLink组件可以生成如下环境变量,在应用开发过程中,开发者可在代码里面引用这些变量

image-20230614190542832

image-20230614190723595

//目前已有的参数
// sentinel地址全路径
COMP_CLOUDLINK_SENTINEL_ADDRESS
// nacos IP地址
COMP_CLOUDLINK_NACOS_IP
// nacos 端口
COMP_CLOUDLINK_NACOS_PORT
// redis 地址
COMP_REDIS_REDISHOST 
// redis 端口号
COMP_REDIS_REDISPORT
// redis 密码
COMP_REDIS_REDISPASSWORD

在nacos中的配置文件也是同理

image-20230614190851195

2.1.5、发布微服务

​ 点击右上角的发布按钮,即可将微服务发布至生产环境或者发布至应用市场中。

image-20230614191132664

​ 发布成功后就可以在nacos中的服务列表中看到注册成功的服务。

image-20230614191225215

results matching ""

    No results matching ""

    results matching ""

      No results matching ""