Apache ServiceComb适配鲲鹏生态开源验证任务

举报
sly_cloud 发表于 2024/12/18 10:01:28 2024/12/18
【摘要】 Apache ServiceComb适配鲲鹏生态开源验证任务,使用CodeArts的CICD完成编译构建,GaussDB控制台完成用户初始化,CCE控制台完成所有微服务的配置、运行。

1. 背景介绍

开源for Huawei 通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。

Apache ServiceComb是一个实现Open API规范的RPC框架,提供了配置管理、服务发现、动态路由、可观察性和服务治理功能。

体验项目基于Apache ServiceComb Fence , 并针对For Huawei场景进行了少量优化。ServiceComb Fence是包含Java Chassis 3最佳实践的应用开发脚手架,它可以帮助开发者快速构建包含微服务后端、微服务前端和基础原子服务的项目工程。

基于Fence,可以快速构建一个韧性、安全和敏捷的微服务项目工程。Fence的核心设计包括韧性架构、安全认证、可观测性、过载防护等方面,它主要由如下几个微服务组成:

  • edge-service: 微服务网关。微服务网关负责接收用户的请求,并将请求转发给对应的微服务前端和微服务后端进行处理。微服务网关还负责认证鉴权、过载防护等方面的系统功能。
  • authentication-server: 认证服务。认证服务提供基于Oauth2的认证能力,实现了基础的用户、角色管理,认证和授权等功能。
  • resource-server: 资源服务。资源服务是一个示例项目,用户新开发的服务都属于资源服务,这个服务可以作为新增服务的模板。 资源服务实现了一些基础的鉴权功能,提供基于Yaml配置和Java Annotation声明的权限管理机制。
  • admin-service: 微服务管理服务。微服务管理服务提供微服务管理和系统运维功能。包括管理和查看服务列表、管理和查看服务配置、系统问题分析和定位能力。
  • admin-website: 微服务管理服务的前端。这是一个基于OpenTiny 开发的静态页面服务,实现微服务管理服务的Web前端。 它可以作为用户新增前端的模板,提供了基础的Web前端开发框架,包括菜单、导航等方便阅读和扩展的代码框架。

Fence还依赖中间件服务Zookeeper和数据库GuassDB。其部署示意图如下:

demo-arch.png

Fence项目遵循约定优于配置原则,定义了日志配置、Web配置、路由配置、代码结构等相关规范,以更加简洁的实现可观测性、过载防护等功能。

2.项目过程

本项目体验过程可以不修改代码,用户使用前需要了解华为云相关服务的常用操作,包括:CodeArts,CCE,SWR,ECS,GaussDB。

  • 使用CodeArts的CICD完成编译构建并发布微服务镜像服务。
  • 在CCE的控制台拉取镜像加载微服务,通过环境变量的配置加载必要的。
  • 使用GaussDB初始化用户列表。


2.1 资源开通和规格信息

GaussDB版本说明

产品名称 产品类型 数据库引擎版本 内核引擎版本 实例类型 部署形态 备注
云数据库 GaussDB 基础版 V2.0-8.* 505.1.* 集中式 1主2备 推荐
云数据库 GaussDB 企业版 V2.0-8.* 505.1.* 分布式版 独立部署

容器版本说明

产品名称 集群类型 集群版本 集群规模 备注
云容器引擎 CCE CCE Turbo 集群 V1.29 50 推荐
云容器引擎 CCE CCE Standard 集群 V1.29 50

ECS版本说明

产品名称 CPU架构 实例类型 公共镜像 镜像版本 备注
弹性云服务器 鲲鹏计算 鲲鹏通用计算增强型 Huawei Cloud EulerOS Huawei Cloud EulerOS 2.0 标准版 64位 ARM版(10GiB) 推荐

【注】:建议4v 16G配置,在实验时,较低的配置导致负载部署失败。

GaussDB开源贡献驱动版本

语言 名称 版本 备注
Java org.opengauss:opengauss-jdbc 5.1.0-og 目前GaussDB未提供中央仓可获取的JDBC驱动,暂时使用OpenGauss提供的驱动

2.2 使用CodeArts的CICD完成华为云部署

【前提条件】

开源代码地址:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiDemoJava.git

完成数据库初始化,在GaussDB里执行代码库里的user.sql文件,文件目录:authentication-server/src/main/resources/sql/user.sql

【新建项目】

项目是使用CodeArts各服务的基础,创建项目后才能完成后续操作。

  • 打开软件开发生产线(CodeArts) -> 前往工作台 -> 新建项目 
  • 选择 Scrum,输入项目名称 OpenSourceForHuaweiDemoJava

【构建并推送镜像】

通过编译构建任务将软件的源代码编译成镜像,并把镜像推送归档到容器镜像服务(SWR)中。

  • 打开 持续交付 -> 编译构建 -> 新建任务,配置构建任务。

cicd-build-basic.png

下一步选择模板,使用 系统模板 -> Maven 

  • 配置构建步骤

    构建步骤保留 构建环境配置代码下载配置maven构建制作镜像并推送到SWR仓库

    构建环境配置:构建环境主机类型,选择 鲲鹏(ARM)服务器,执行主机选择 内置执行机

    代码下载配置:缺省。

    maven构建:工具版本 maven3.8.5-jdk17 或者以上版本, setting配置选择 国内站点, 仓库地址配置为  https://mirrors.huaweicloud.com/repository/maven/。

    制作镜像并推送到SWR仓库:需要增加 edge-serviceauthentication-serverresource-serveradmin-serviceadmin-website 5个条目。

cicd-build-steps.png

完成配置,单击“保存并执行”。等待任务执行完毕,在镜像仓库会生成上述5个微服务的镜像。镜像内容可以通过 容器镜像服务 -> 我的镜像 进行查看。

【注】:本项目资源开通均在华北-北京四,SWR也选在华北-北京四

【创建负载】

在云容器引擎(CCE)中创建无状态负载(Deployment),部署 edge-serviceauthentication-serverresource-serveradmin-service admin-websitezookeeper 6个微服务。

创建 Zookeeper

  • 进入 云容器引擎(CCE) 控制台,点击准备工作中已经购买的集群,进入详情页。进入 工作负载 -> 创建工作负载
  • 工作负载基础信息:
配置类别 配置项
基本信息 负载类型 无状态负载
基本信息 负载名称 zookeeper
基本信息 实例数量 1
容器配置 基本信息-镜像名称 从镜像中心选择 zookeeper
容器配置 基本信息-更新策略 总是拉取镜像
容器配置 基本信息-镜像版本 latest
服务配置 访问类型 集群内访问
服务配置 容器端口 2181
服务配置 服务端口 2181

创建 edge-service

  • 进入 云容器引擎(CCE) 控制台,点击准备工作中已经购买的集群,进入详情页。进入 工作负载 -> 创建工作负载
  • 工作负载基础信息:
配置类别 配置项
基本信息 负载类型 无状态负载
基本信息 负载名称 edge-service
基本信息 实例数量 1
容器配置 基本信息-镜像名称 从我的镜像选择 edge-service
容器配置 基本信息-更新策略 总是拉取镜像
容器配置 基本信息-镜像版本 v1.1
容器配置 环境变量-ZK_ADDRESS 填写zookeeper的访问地址,比如 10.247.254.192:2181
服务配置 访问类型 负载均衡
服务配置 负载均衡器 共享型,创建一个共享型负载均衡器
服务配置 容器端口 9090
服务配置 服务端口 9090

创建 authentication-serverresource-serveradmin-serviceadmin-website

  • 进入 云容器引擎(CCE) 控制台,点击准备工作中已经购买的集群,进入详情页。进入 工作负载 -> 创建工作负载
  • 工作负载基础信息:(DB三个环境变量仅authentication-server需要配置)
配置类别 配置项
基本信息 负载类型 无状态负载
基本信息 负载名称 具体名称
基本信息 实例数量 1
容器配置 基本信息-镜像名称 从我的镜像选择具体镜像
容器配置 基本信息-更新策略 总是拉取镜像
容器配置 基本信息-镜像版本 v1.1
容器配置 环境变量-ZK_ADDRESS 填写zookeeper的访问地址,比如 ip:2181
容器配置 环境变量-DB_URL GaussDB URL,比如:jdbc:opengauss://ip:port/postgres?currentSchema=authentication_server_db
容器配置 环境变量-DB_USERNAME GaussDB 用户名
容器配置 环境变量-DB_PASSWORD GaussDB 密码

注意:请查看具体微服务的 application.yml 文件,了解数据库环境变量的名称。不同的服务可能会有差异。 如果名称为 db.url,那么环境变量需要指定为 db_url。 建议配置文件名称使用大写的方式,和环境变量命名规范一致,比如 DB_URL

【查看部署结果和进行接口验证】

打开新的浏览器页面,输入 http://{IP}:9090/ui/admin/ 进入登录页面,其中IP为edge-service负载均衡的公网地址。登录后会出现如下界面:

fence-home.png

打开 系统运维 -> 接口测试 菜单,可以对开源任务增加的 REST 接口进行测试。

demo-rest.png

2.3 后续工作

您可以使用CodeArts 部署镜像流水线等功能将上述构建、部署过程实现自动化,在代码变更的时候,一键式触发应用部署更新。 本文不再描述相关步骤。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。