作者:关耳山石
整个端到端CloudNative产品落地,计划分为四个阶段展开:
Cloud Native Phase 1 - 云上微服务开发端到端
Cloud Native Phase 2 - 云上DevOps
Cloud Native Phase 3 - 云原生应用AutoConfig
Cloud Native Phase 3 - 云上弹性伸缩和熔断限流 (未完成)
Cloud Native Phase 4 - 云上权限管理和网络安全 (未完成)
本文为第一章即Cloud Native Phase 1 - 云上微服务开发端到端 。
1. 开通华为云账号
2. 登录华为云
3. 开发框架选型
SpringCloud是目前非常流行的一种微服务技术架构,因此选用了华为云ServiceStage作为微服务的管理工具,使用SpringCloud-Huawei作为SpringCloud与ServiceComb Java Chassis基础设施的兼容适配,即能够使用ServiceStage的托管和监控能力,又不用改造代码和编码习惯。
详情可以查看:
4. 代码仓库创建和代码提交
代码仓库使用的是华为云DevCloud的CodeHub,华为云DevCloud是集华为研发实践、前沿研发理念、先进研发工具为一体的DevOps平台。
首先通过控制台,进入DevCloud的CodeHub。
进入DevCloud
选择右上角的“立即使用”,即可进入华为云DevCloud。
创建新项目
进入华为云DevCloud之后点右上角的“创建项目”,即可进入创建页面,
选择Scrum模板,起个名字,比如“CabgOne
”,即完成了项目创建。
创建代码仓库
点击顶部菜单的“代码”-》“代码托管”,即可进入CodeHub界面。
然后点击“普通新建”,创建GIT仓库。本操作没有特别需要注意的地方,给仓库起个名字,比如“VodMgrService
”然后选择“私有仓库”,点击“确定”即可完成仓库创建。
本地代码
根据前面的Demo,可以很容易写一个基于Spring框架的微服务出来,直接去看CabgOne
项目下的VodMgrService
工程更直接。
创建密钥
从本地提交代码上云,需要一套SSH密钥或者HTTPS密码,所以在提交代码前,应该配置一套SSH密钥或HTTPS密码,具体配置方法可参考《帮助中心——设置SSH密钥/HTTPS密码》。
补充:华为云公共Maven镜像仓配置
由于华为云的依赖包,在公共的Maven镜像仓库中不完整,需要到华为云镜像源中拉取
点击HuaweiCloud SDK后,可以看到settings的配置参考
补充:华为云私有Maven镜像仓配置
如果用了DevCloud的私有镜像仓,比如自己有一些本地包,需要上传,供其他项目拉取,需要到DevCloud中创建,入口链接
操作很简单,就不详细解释了,点开创建好的仓库右侧的按钮,可以看到私有依赖库配置功能。
4. 代码打包和部署
创建应用
应用就是一个产品,目前CabgOne是一个产品,未来CabgOem是另一个产品。选择合适的企业项目(后面有详解)
创建环境
环境是指不同环境和不同资源的集合,可以理解为资源组,可以共享,弹性伸缩。
这里还有一个要求,就是所有的资源,在一个环境中,必须属于同一个VPC,所以环境又可以理解为VPC的一个细分。
这里可以看到,我为CabgOne这个产品的生产环境、涉及到内网连接的资源组,细分了一个环境,叫cabgone-internal-pro
,这样所有CabgOne产品符合这个条件的资源,都可以在这个资源池里。
PS:这里涉及到了一些资源的申请,包括CCI、CCE、ELB等。
补充:关于CCI和CCE的区别
一张图就说明白了,CCI更贵,但弹性更好,适合抢购啥的场景;CCE便宜点,适合长期运行的;CCI可以作为CCE的弹性扩展来伸缩。
创建组件
组件就是产品的子产品或者模块,也是一个独立的部署单元,比如CabgOne里的一个SmartEngineService就是一个组件,将组建绑定了环境,即可开始后面的打包部署
打包部署
直接用ServiceStage里面“持续交付”->构建和发布功能,这里可以创建流水线
5. 发布至API网关
创建分组
首先我们用的是共享版的APIG,然后APIG是通过API分组的方式,生成不同的API访问原始域名,然后绑定不同的VPC和域名的。
这里可以看到子域名就是生成的默认域名,只能用来测试
此处绑定了已申请的一个四级域名
创建API并发布
API就不多解释了,直接操作吧
这一步也好简单,跟着配置一下即可
定义了一个简单的入参
配置后端服务的格式和VPC通道
然后就是很重要的一个,配置后端请求Path
最后把成功和失败的示例放上
最后发布API
回到API列表页面,在更多里,找到调试按钮,调试一下,OVER
以上即为Cloud Native Phase 1 - 云上微服务开发端到端全部内容。