摘要:华为云DTSE技术专家从源码构建、应用部署到系统调测,详细解读云原生SaaS应用构建的全过程。

本文分享自华为云社区《HouseKeeper云上部署实践》,作者:华为云DTSE。

HouseKeeper是华为云开发者团队基于SaaS项目技术支持实践,采用微服务架构(SpringCloud),结合华为云服务能力开发的SaaS化开源项目,旨在为企业级开发者提供云原生SaaS应用构建的技术参考,包括微服务架构、多租隔离设计、多租户路由、数据存储多租设计等。

一、源码构建

1.代码托管

将gitee上的个人fork仓同步到华为云CodeArts平台上

启用软件开发流水线CodeArts

如下所示,选择北京4启用CodeArts,其基础版本免费试用,最大支持人数5人;编译构建并发数5,600分钟/月;代码托管10G存储空间,单个仓库容量上限2G。

创建项目

如下所示,选择scrum创建项目,自定义项目名称,如HouseKeeper。Scrum是增量迭代式的软件开发方法,通过迭代计划会议、每日站会、迭代回顾、验收会议等来简单高效管理开发项目。

导入外部仓库

如下所示,进行外部仓库配置。

如下所示,复制gitee上源码仓库地址。

将源码仓库地址复制到codearts外部仓库配置项中,并填写gitee源码仓访问信息后进入下一步。

注意选择同步全部分支,确认后创建仓库。

2、基于IDE online 修改预置参数

使用IDE online一键创建工程

如下所示,在新建的代码仓页面,点击右上角IDE online自动进入IDE,系统会基于当前仓库自动创建加载好相关工程。

切换分支为cloud1.0.0

如下所示,点击IDE online工程里左下角,在工程上方弹出的分支列表中选择cloud1.0.0分支。

修改源代码中helm镜像路径

如下所示,将源码中helm charts文件中的镜像路径修改为对应仓库,未避免名称冲突,此处将镜像修改为house-keeper-0504

修改源码中gitee访问信息

如下所示,修改helm/value.yaml文件中 giteePassword、giteeUser字段,其中字段数值采用Base64进行混淆

global:
...
giteePassword: xxx
giteeUser: xxx

提交修改文件

如下所示,将修改的文件提交到codeArts仓库。

或者通过命令行终端git命令方式提交修改。

cd helm-charts
git add values.yaml
git commit -m "修改gitee访问信息"
git remote -v
git push origin cloud-1.0.0

如下所示,在codearts代码仓可以查看对应的修改记录

3、创建镜像仓库

如下所示,按照helm-charts中修改的镜像路径,在北京4区域创建对应的组织。

4、创建并启动构建任务

如下所示,新建构建任务。

自定义任务名称,但为了方便维护,建议任务名称同helm-charts中保持一致。

选择maven容器模板。

设置任务参数,添加version字段,并设置为运行时设置。

如下所示,构建步骤中仅修改镜像推送配置,其它信息保持模板默认配置即可,其中组织名即上述环节中设置的,镜像名称同helm-charts中对应,工作路径即源码仓中对应模块的子路径,完成配置后点击右上角【新建并执行】构建任务。

5、通过自定义模板构建其它组件

如下所示,将上述saas-housekeeper-config-server的构建任务保存为自定义模板,名字自定义为House-Keeper。

如下所示,使用自定义模板创建其它构建任务,其中,构建frontend前台任务时无需maven打包,工作路径设置为代码根路径即可。

如下所示,相关模块均已构建成功。

二、应用部署

1、Helm工具打包

Helm工具安装

helm工具安装参考链接,下载对应的windows版本即可。

如下所示,设置好系统环境变量好,可以在git bash里查看工具版本。

下载源码到本地

如下所示,首次使用codearts时需要点击右上角个人用户图标,进入设置页面,进行ssh/https相关配置。

如下所示,本次使用https方式下载源码,命令如下

git clone https://username:password@codehub.devcloud.cn-north-4.huaweicloud.com/HouseKeeper00003/saas-housekeeper.git

helm打包安装包

如下所示,使用helm工具打包,命令

helm.exe package ./helm-charts
helm.exe lint housekeeper-1.0.0.tgz

2、创建CCE集群及工作节点

如下所示,按需购买CCE集群,其中出于demo成本考虑,CCE集群不启用高可用模式。

CCE集群创建需要时间,可在集群页面查看执行过程。

待CCE集群创建完成后,创建节点池,同样成本考虑,节点数量及规格不用太大,本次演示数量设置2,磁盘类型高IO。

按需购买2个EIP资源。

在ECS主机页面绑定EIP。

绑定EIP后如在CCE集群节点看不到对应的EIP时,选择手动同步云服务器。

3、导入模板并安装部署

如下所示,对应工作负载均已创建成功并正常运行。

4、创建ELB

为前段服务创建ELB访问

三、系统调测

1、配置内部域名解析

由于公网域名解析需要进行备案等,演示场景配置内部4级域名解析,具体相关要求请参考gitee对应项目的Readme。

2、创建测试PC

按需在对应VPC内创建windows镜像的测试PC

3、修改测试PC的hosts文件

如下所示,可以通过ping测试内部域名正常。

4、通过测试PC访问租户注册页面

源码对IE浏览器支持不太友好,建议使用谷歌浏览器进行测试,如下所示,访问租户注册页面,其中域名即上述配置的内网域名解析记录对应的。

http://housekeeper.saas.cloud.com/tenant/#register

其它操作可参考HouseKeeper开源项目继续进行。

点击关注,第一时间了解华为云新鲜技术~

SaaS化开源项目之HouseKeeper云上部署实践的更多相关文章

  1. github下载速度慢甚至多次失败,通过码云的导入功能导入github项目到码云上,然后再从码云下载

    github下载速度慢甚至多次失败,通过码云的导入功能导入github项目到码云上,然后再从码云下载 参考 https://blog.csdn.net/kcx64/article/details/83 ...

  2. 码云上部署hexo博客框架

    title: 码云上部署hexo博客框架 Hexo框架在码云上实现个人博客 本文受 https://www.jianshu.com/p/84ae2ba1c133 启发编写 本地调试 安装完Node.j ...

  3. 阿里云上部署了zabbix,突然无法收到报警邮件的解决办法

    在阿里云上部署了zabbix,一直能正常接收到zbx发来的报警邮件(报警邮箱是163的),不知是什么原因,突然无法接收到报警邮件了. 但在服务器上手动执行echo "hello"| ...

  4. 在腾讯云&阿里云上部署JavaWeb项目(Tomcat+MySQL)

    之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆, ...

  5. 把项目放到码云上,通过git 进行项目管理

    1.在码云上新建一个项目 把使用 Readme文件初始化这个项目这个勾选去掉  项目生成后会看到 码云的git 简易的命令行入门教程: Git 全局设置: git config --global us ...

  6. eclipse基于git上传项目到码云上

    此文章只讲如何把项目上传到码云上面,前提是你的项目已经用git创建好了. 关于如何用git创建项目,请读者见我博客的另一篇文章. 继续:右键点击ssm [ssm master]项目-->选择Te ...

  7. 把项目从码云上clone到IntelliJ IDEA

       前期工作:安装并已配置好git,并且IDEA已经配置好git了   操作如下:   1) 在IDEA启动页面选择Get from Version Control   2) 打开码云上想要clon ...

  8. 在腾讯云上部署Hexo博客

    推荐理由 ----搭建个人的空间博客目前深受个人开发者的追捧,然而博客的种类和平台有很多,Hexo是一个开源的静态博客生成器.相比于其他博客而言它只要是web容器就能用.除了闷头专研技术之外,程序员还 ...

  9. Tencent Cloud 腾讯云上部署 EMR Cluster + Kafka + Confluent (Schema-Registry)

    腾讯云上有些操作比起 Amazon AWS 还是很方便的, 尤其部署EMR Cluster,下面详细介绍步骤:

  10. 如何在阿里云上部署war包到tomcat服务器

    一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...

随机推荐

  1. golang学习路线

    一.golang基础 李文周的博客:https://www.liwenzhou.com/ 视频教程:https://link.juejin.cn/?target=https%3A%2F%2Fwww.b ...

  2. 小程序使用svga

     svga 是一种动画格式.不仅可以在 ios,android,flutter,web 上使用,小程序也支持.设计师使用 after effects 或是 animate 进行动画设计.设计师导出工具 ...

  3. 西电oj245 成绩统计 结构体数组使用

    #include<stdio.h> struct student{ //定义一个结构体数组 int num; char name[11]; float g1; float g2; floa ...

  4. 不同目录下npm run 报错

    不同目录下npm 报错sh: webpack: command not found npm ERR! file sh npm ERR! code ELIFECYCLE npm ERR! errno E ...

  5. DOC命令学习(一)

    DOC命令学习(一) 命令 切换目录命令(cd) cd /d E: 查看目录命令(dir) dir   #查看# 回显命令(echo) @echo offset d = %date:~0,10%set ...

  6. 《MySQL是怎样运行的》第四章小结

  7. 如何使用webgl(three.js)实现3D消防、3D建筑消防大楼、消防数字孪生、消防可视化解决方案——第十八课(一)

    序: 又是很久没出随笔文章了,一篇文章有时候整理一天,实在是抽不出来时间. 最近在回顾几年前的项目时,发现这个智慧三维消防可视化项目很有回顾价值,索性就拿出来讲讲. 首先,我们要知道消防里的知识,不是 ...

  8. 对于实现上一篇遇到的问题——MyBatis+增删改查(已解决)

    问题一:该Http不支持Get/Post方法 我根据网上的解决方法将Get和Post的位置来回换,还是不停报错: 后来偶然间看到一个博主发的"你的代码写在Get或者Post里面,就将没写代码 ...

  9. 音频的价值、AI Codec 的意义与算法能力的边界丨一期一会 • 音频工程师专场

    前言 音频技术发展到今天,经历了从模拟音频到数字音频到历程.国际音频工程师协会创建于 1948 年,中国数字音频技术起步相对较晚,长期被国外组织和公司垄断.随着中国的不断发展.科技日益进步,经过近三十 ...

  10. 【经验分享】RTC 技术系列之视频编解码

    要了解什么是视频编解码,首先我们需要了解什么是视频. 视频归根结底是一系列连续的图像帧,当这些图像以一定速率播放时,人眼就会判断其是连续活动的,这样就构成了视频. 那为什么要进行视频编解码呢,因为视频 ...