CSE提供了一套工具和插件,让用户更加方便的开发功能。包括:
本节介绍的契约开发工具是Swagger。
Swagger是一种和语言无关的规范和框架,是一个API设计工具,用于定义服务接口,主要用于描述RESTful的API。它专注于为API创建优秀的文档和客户端库。
Swagger包括库、编辑器、代码生成器等很多部分,在Java Chassis框架中已经集成了Swagger库,同时在ServiceStage中提供了在线契约编辑的功能,这里主要介绍Swagger以下内容:
Swagger API Spec,描述Rest API的语言。
ServiceStage Swagger API Editor,ServiceStage上提供的Swagger API Spec的编辑器。
Swagger API Spec是Swagger用来描述Rest API的语言,可以使用yaml或json来表示。Swagger API Spec包含以下部分:
swagger,指定swagger spec版本,2.0
info,提供API的元数据
basePath,相对于host的路径
schemes,API的传输协议,http,https,ws,wss
consumes,API可以消费的MIME类型列表
produces,API产生的MIME类型列表
paths,API的路径,以及每个路径的HTTP方法,一个路径加上一个HTTP方法构成了一个操作。每个操作都有以下内容:
tags,操作的标签
description,描述
externalDocs,外部文档
operationId,标识操作的唯一字符串
consumes,MIME类型列表
produces,MIME类型列表
parameters,参数列表,参数的描述包括:
name,名字
description,描述required,是否必须
in,参数获取的位置,包括如下几种:
Path、Query、Header、Body、Form
(对于Body类型的参数)
(对于Body类型以外的参数)
type,类型
format,数据格式
allowEmptyValue,是否允许空值
items,对于Array类型
collectionFormat,对于Array类型
default,缺省值
responses,应答状态码和对于的消息的Schema
schemes,传输协议
deprecated,不推荐使用
security,安全
definitions,定义API消费或生产的数据类型,使用json-schema描述,操作的parameter和response部分可以通过引用的方式使用definitions部分定义的schema
Swagger API Spec对Rest API的每一个操作的请求消息的参数(Path,Query,Body,Form),响应消息的状态码和消息体的json结构都进行了详细的描述。如果需要查看详细的Swagger API Spec定义,请参考http://swagger.io/specification/。
ServiceStage提供了在线的Swagger API Editor,链接是ServiceStage API Editor,需要事先注册和登录华为云账号。
ServiceStage API Editor是Swagger API Spec的编辑器,Swagger API Spec支持两种文件格式,yaml和json,在ServiceStage API Editor中使用yaml或者json格式中进行编辑,同时允许下载两种格式的文件。在yaml编辑器的右面有所见即所得的预览。
ServiceStage API Editor页面的文件菜单提供了以下功能:
Download YAML,下载yaml格式的契约文件。
Download JSON,下载json格式的契约文件。
Convert to YAML,将json格式的契约定义转换成yaml格式。
HTML,生成描述api的html文档。
本节介绍如何在Maven插件方式下使用CSE-Codegen。
首先准备好一个API spec文件,该文件可以是json格式,或yaml格式,然后在pom.xml中增加插件配置,如下:
io.swagger
huawei-swagger-codegen-maven-plugin
2.2.2
generate
true
generateAll
./yaml/swagger.yaml
com.huawei.paas.cse.demo
cse-test
1.0.0
yami
2.1.35
CSE-Java (JAX-RS)
说明:
1、其中inputSpecs表示输入的spec api文件,可使用相对路径,支持多schema文件,文件名将作为本契约的schemaId,如
./yaml/schema1.yaml
./yaml/schema2.yaml
2、language指定生成目标目标代码类型,生成不同的开发模式,当前支持的目标代码类型有:
CSE-Java (JAX-RS) JAX-RS开发模式
CSE-Java (SpringMVC) SpringMVC开发模式
CSE-Java (POJO) 透明RPC开发模式
如:
3、output表示输出路径
4、skipOverwrite表示是否覆盖已经存在的文件
5、generateLevel表示生成的形式,支持两种generateAll 和generateInterface,generateAll表示生成全量工程,generateInterface表示只生成接口定义文件,例如SpringMVC模式,只生成RequestMapping文件。通常最开始的时候需要生成全量工程,后面开发过程中,新增加一个契约文件时,只需要生成接口即可。
6、serviceName 微服务名称,体现在microservice.yaml文件里面。
7、cseVersion CSE微服务版本号。
8、groupId artifactId artifactVersion,这三个参数均对应maven工程的坐标。
执行以下命令:
mvn generate-sources
根据配置的output路径,例如:,代码会生成在当前项目target/swagger目录下。
本节介绍的AK/SK加密存储是基于共享秘钥的AES256加解密存储方案,通过工具生成秘钥物料,然后使用工具利用秘钥文件对指定的明文进行加密。例如可以使用这种方法对数据库密码进行加密,使用的时候再使用CSE SDK接口进行解密。
AK/SK认证依赖用户配置的AK/SK,CSE默认支持自定义配置,用户可以自己实现解密接口,也可以使用CSE默认提供的机制。CSE内部默认提供明文和安全两种实现机制,下面分别来介绍下三种方式的配置方法。
1、明文方法,在microservice.yaml文件中增加配置
cse:
credentials:
accessKey: yourak
secretKey: yoursk
akskCustomCipher: default
2、密文方式,在microservice.yaml文件中增加配置
cse:
credentials:
accessKey: yourak #明文
secretKey: yoursk #密文
akskCustomCipher: security
默认提供的安全存储中,ak是不进行加密的。读取cipher的时候,会优先读取CIPHER_ROOT下面的certificate.yaml配置,参考AK/SK安全存储详细操作步骤
3、自定义实现,首先自己实现一个接口com.huawei.paas.foundation.auth.credentials.AKSKCipher,里面有两个方法:
String name();
这个是解密实现的名称定义,需要配置在配置文件中
char[] decode(TYPE type, char[] encrypted);
解密接口,TYPE表示ak还是sk,因为两者可能实现不一样的加密方式。
在microservice.yaml文件中增加配置
cse:
credentials:
accessKey: yourak #对应的加解密后的ak
secretKey: yoursk #对应的加解密后的sk
akskCustomCipher: youciphername #实现类里面的name()方法返回的名称
再添加接口的SPI声明,在src/main/resources/META-INF/services新建一个文件com.huawei.paas.foundation.auth.credentials.AKSKCipher,内容为自己的实现类类名,例如:com.huawei.paas.cse.demo.pojo.client.CustomAKSKDepl
1、下载加解密工具,提供windowns和linux两个版本
2、使用加解密工具生成物料,使用命令keytool gen -a yourak -s yoursk命令,会在当前目录下生成root.key、common_shared.key,和certificate.yaml文件,详细说明可以查看工具的帮助keytool gen -h
3、拷贝root.key、common_shared.key、certificate.yaml到环境中,建议放到/opt/CSE/etc/cipher,本地调试的时候可以放到任意目录,所有需要部署微服务的节点都需要。如果是容器化部署,还需要挂载卷到指定目录。
4、启动应用,在启动应用之前需要先设置一个环境变量CIPHER_ROOT,就是第四步复制凭证文件所在的目录
5、查看CSE控制台面板,服务是否注册成功,也可以查看应用启动日志,是否有服务注册成功日志。
开发者可以通过微服务引擎华为云官网了解CSE。在CSE帮助中心可以获取更多产品信息,如有疑问,可通过CSE论坛进行咨询。