Cloud Foundry service broker开发部署实例解析(上)
来源:互联网 发布:理肤泉淘宝旗舰店 编辑:程序博客网 时间:2024/05/23 11:14
Cloud Foundry(CF)通过buildpack扩展运行不同语言应用的能力,通过service broker(SB)扩展支持应用所需的各种关系数据库、中间件、缓存、云存储、内存数据库等各种服务的能力。这篇博文将从头至尾介绍通用的SB开发和部署。
什么是service broker
SB就是实现了CF规定的一组rest api的服务端程序,它作用于CF与服务的资源池中间,CF通过调用SB上这些规定的rest api对服务资源池进行管理,而SB实际执行这些资源池管理操作。比如,对于oracle而言,管理意味着管理服务计划(即create/drop profile)、创建/绑定/解绑/删除服务实例(即create tablespace、create user、drop user、drop tablespace)。下面给出SB需要实现rest api列表,理论上有了这张表,随便用什么语言写个web service的服务端就行了,这些接口中有几个是博主为实现本文的开发和部署过程自行添加的。
开发
本文给出的SB使用java(spring)开发的,使用了hibernate,基本思路是下载源代码,按照下面的描述修改必要的实现,然后打包就可以开始部署了。这一SB的基本思路是将已有的资源池的授权信息存储到SB中,不自动化的做任何部署和管理工作,所以理论上,这个SB是用于任何服务的管理。
准备
首先下载源代码,这代码是个gradle工程,首先得准备好开发环境,不管用原生eclipse还是sts,都得先安装gradle support,以STS为例,下载解压后,打开集成开发环境,在dashborad-》IDE EXTENSIONS中,搜索gradle support并安装。将源代码解压,在STS的package explorer中import gradle project,选择到解压的目录,build model,然后点击finish。
修改源代码
- src/main/resources/ServiceDescription.json
这个文件是json格式服务的描述信息,程序首次运行时,会将此json作为创建新服务的输入
name:服务的唯一标识
description:显示在UI里的描述信息
bindable:true
tags:关键字
longDescription:显示在UI里的详细描述信息
imageUrl:显示在GUI里的图片地址
displayName:显示在GUI里的服务名称
providerDisplayName:显示在GUI里的服务供应商名称
documentationUrl:显示在GUI里的服务文档地址
supportUrl:显示在GUI里的服务支持网站 - src/main/java/com/pivotal/cf/broker/config/AppConfig.java和RelationalCloudDataSourceConfig.java
将这两个文件中的mdsbrokerdb修改为下一步部署在CF上时绑定的MySQL服务实例名称,比如samplebrokerdb - src/main/java/com/pivotal/cf/broker/model/PlanMetadataRes.java
将下面的属性替换为管理的资源所需的授权信息,当然也要修改属性对应的setter和getter
@JsonProperty("kcxpaddr")private String kcxpaddr;@JsonProperty("kcxpport")private String kcxpport;@JsonProperty("rvipaddr")private String rvipaddr;@JsonProperty("rvport")private String rvport;@JsonProperty("username")private String username;@JsonProperty("password")private String password;
- src/main/java/com/pivotal/cf/broker/model/ServiceInstance.java
将下面的属性替换为管理的资源所需的授权信息,当然也要修改对应的构造函数
@JsonSerialize@JsonProperty("kcxpaddr")@Column(name="kcxpaddr")private String kcxpaddr;@JsonSerialize@JsonProperty("kcxpport")@Column(name="kcxpport")private String kcxpport;@JsonSerialize@JsonProperty("rvipaddr")@Column(name="rvipaddr")private String rvipaddr;@JsonSerialize@JsonProperty("rvport")@Column(name="rvport")private String rvport;@JsonSerialize@JsonProperty("username")@Column(name="username")private String username;@JsonSerialize@JsonProperty("password")@Column(name="password")private String password;
- src/main/java/com/pivotal/cf/broker/model/ServiceManagementImpl.java
createInstance()中,修改ServiceInstance instance = new ServiceInstance的参数,输入正确的授权信息
removeServiceInstance()中,将下面代码修改为正确的授权信息
res.setKCXPAddr(instance.getKCXPAddr());res.setKCXPPort(instance.getKCXPPort());res.setRVIPAddr(instance.getRVIPAddr());res.setRVPort(instance.getRVPort());res.setUserName(instance.getUserName());res.setPassword(instance.getPassword());
createInstanceBinding(),将下面代码修改为正确的授权信息
credentials.put("KCXPAddr0", instance.getKCXPAddr());credentials.put("KCXPPort0", instance.getKCXPPort());credentials.put("RVIPAddr", instance.getRVIPAddr());credentials.put("RVPort", instance.getRVPort());credentials.put("UserName",instance.getUserName());credentials.put("Password",instance.getPassword());
编译打包
在STS的package explorer中,右键单击项目,run as-》gradle build,如果是初次运行,输入下面的编译打包gradle命令,run即可:
cleanbuildassemble
至此,我们就得到了程序包,下面就可以开始部署了。
- Cloud Foundry service broker开发部署实例解析(上)
- Cloud Foundry service broker开发部署实例解析(下)
- Cloud Foundry Service Broker开发部署实例解析
- Cloud Foundry buildpack开发部署实例解析
- Cloud Foundry安装部署指南(上)
- cloud foundry上部署mysql
- 【Cloud Foundry】Cloud Foundry学习(四)——Service
- 深入 Cloud Foundry(上)
- 在vSphere上通过BOSH工具大规模部署Cloud Foundry(3) -- 部署Cloud Foundry
- Cloud Foundry安装部署指南(下)
- Cloud Foundry samples学习笔记5:在Cloud Foundry上部署Grails应用程序 petclinic
- Cloud Foundry 源码解析一览(router)
- Cloud Foundry 源码解析一览(warden)
- 如何利用Helm在Kubernetes上快速部署Cloud Foundry?
- Cloud Foundry 实例安装配置
- Cloud Foundry 部署问题(1) deploy.yml 格式
- Cloud Foundry 部署问题(2)buildpack时间过长
- cloud foundry dea源码解析
- 文章标题
- Erlang edoc 多级目录出错
- 桌面widget、快捷方式和Hotseat
- iOS10进制到16进制互转
- CentOS 7 yum 安装 MongoDB
- Cloud Foundry service broker开发部署实例解析(上)
- 【好程序员训练营学习笔记分享1】--c语言指针(一)
- hadoop启动namenode失败
- RabbitMQ Hello World
- 摄氏温度和热力学温度转换
- HDU3652
- Hibernate Criteria条件Restrictions.or查询 循环多个or条件
- Android自定义TextView实现跑马灯功能
- 能保存Properties文件注释的Properties工具类