华为云用户手册

  • 使用场景 CloudPond运行有必选云服务,同时您可以根据需求将一些可选的云服务和应用部署在CloudPond上,实现在您本地使用各类华为云服务,以及边云协同的场景,以满足数据本地化和低时延访问的需求。 支持必选服务E CS 、EVS、VPC、EIP部署至边缘小站,为您提供在本地使用华为云基础云服务资源的便利。 支持丰富的可选云服务(如 MRS 、DWS、IEF、ROMA Connect、SFS Turbo等)在边缘小站本地运行,与云上服务形成协同关系,共同支撑业务需求。 在CloudPond上部署云市场相关应用,将华为云生态无缝拓展到边缘(即将上线)。 除了上述提到的必选服务和可选服务,CloudPond还支持各类管理、监控、安全和迁移服务。详细介绍请参见与CloudPond有业务交互的云服务。 CloudPond控制台提供了跳转至各个必选服务和可选服务创建资源界面的功能。 在边缘可用区创建业务资源之前,请先了解CloudPond支持的必选服务的约束与限制,可选服务的约束与限制请直接参考各服务的产品文档。
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", // IAM 用户名 "password": "********", //IAM用户密码 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-1”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中的“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务您正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: 1 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求,或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 1 2 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求URI 请求URI由如下部分组成: {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 1 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为方便查看,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 模板约束与限制 使用 RFS 服务进行模板部署,模板文件内容具有如下约束与限制: 模块的数量限制为25,模块嵌套深度限制为3。 不能使用Provisioners功能、Backend Configuration功能和Cloud 功能。 可以使用Module Sources功能,但仅支持Local Modules。 可以使用HuaweiCloud Provider,但Provider内部分资源禁止使用。具体清单列举如下: huaweicloud_vod_watermark_template huaweicloud_compute_keypair huaweicloud_identity_access_key huaweicloud_images_image_v2 huaweicloud_kps_keypair huaweicloud_obs_bucket_object huaweicloud_iotda_batchtask huaweicloud_cce_chart huaweicloud_iotda_batchtask_file huaweicloud_cse_microservice 部分函数禁止使用。具体清单列举如下: abspath basename dirname file filebase64 filebase64sha256 filebase64sha512 fileexists fileset filemd5 filesha1 filesha256 filesha512 pathexpand templatefile 不建议使用nonsensitive方法输出敏感信息。随意使用此方法可能会导致本该被隐藏的敏感信息被服务明文打印出来从而导致敏感信息泄露 如果必须进行输出,建议优先考虑编码后再输出(如nonsensitive(sha256(var.sensitive_value))) 父主题: 资源编排
  • 请求消息示例 POST /v2/usg/acs/auth/appauth Connection: keep-alive Content-Type: application/json X-Request-ID: 5162fa32dc7e47afafeee39a72a2eec3 Accept-Language: zh-CN Host: api.meeting.huaweicloud.com X-Token-Type: LongTicket Authorization: HMAC-SHA256 signature=3eca3f0f1e90ed55de38388066d02f1b7a86571a8ce30823af1df7c4edd7e086,access=ZmRiOGU0Njk5NTg2NDU4YmJkMTBjODM0ODcyZGNjNjI= User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191) { "appId": "fdb8e4699586458bbd10c834872dcc62", "clientType": 72, "expireTime": 1627722929, "nonce": "EycLQsHwxhzK9OW8UEKWNfH2I3CGR2nINuU1EBpv162d42d92s", "userEmail": "******", "userId": "testuser@mycorp.com", "userName": "testuser", "userPhone": "173****9092" }
  • CURL命令示例 curl -k -i -H 'content-type: application/json' -X POST -H 'Content-Type: application/json,Accept-Language: zh-CN,X-Token-Type: LongTicket,Authorization: HMAC-SHA256 signature=3eca3f0f1e90ed55de38388066d02f1b7a86571a8ce30823af1df7c4edd7e086,access=ZmRiOGU0Njk5NTg2NDU4YmJkMTBjODM0ODcyZGNjNjI=' -d '{"appId": "fdb8e4699586458bbd10c834872dcc62","clientType": 72,"corpId": "807074304","expireTime": 1597824907000,"nonce": "EycLQsHwxhzK9OW8UEKWNfH2I3CGR2nINuU1EBpQ","userEmail": "******","userId": "alice@ent01","userName": "alice","userPhone": "173****9092"}' 'https://api.meeting.huaweicloud.com/v2/usg/acs/auth/appauth'
  • 响应消息示例 HTTP/1.1 200 "X-Envoy-Upstream-Service-Time": "230", "Server": "api-gateway", "X-Request-Id": "085d1f96cd9ddd6f3c50d70a0b2eb239", "X-Content-Type-Options": "nosniff", "Connection": "keep-alive", "X-Download-Options": "noopen", "Pragma": "No-cache", "Date": "Sat, 31 Jul 2021 06:18:07 GMT", "X-Frame-Options": "SAMEORIGIN", "Strict-Transport-Security": "max-age=31536000; includeSubDomains", "Cache-Control": "no-cache", "X-Xss-Protection": "1; mode=block", "Content-Security-Policy": "connect-src 'self' *.huaweicloud.com ;style-src 'self' 'unsafe-inline' 'unsafe-eval';object-src 'self'; font-src 'self' data:;", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Content-Length": "1250", "Content-Type": "application/json" { "accessToken":"cnr1316vcp2ceIkbfko3z13Y2J8UdioOw0ER4kTK", "tokenIp":"49.4.112.60", "validPeriod":56326, "expireTime":1627768613, "createTime":1627712287360, "user":{ "realm":"huaweicloud.com", "userId":"53e2759d388e413abf6a56743a2694c5", "ucloginAccount":"Auto-53e2759d388e413abf6a56743a2694c5", "serviceAccount":"sip:+99111283523475338@huaweicloud.com", "numberHA1":"065eb94e5b090f70c77d4d1439f35b8e", "alias1":null, "companyId":"651543334", "spId":"8a8df0a174a1c6680174a26f578b0000", "companyDomain":null, "userType":2, "adminType":2, "name":"testuser@mycorp.com", "nameEn":"", "isBindPhone":null, "freeUser":false, "thirdAccount":"testuser@mycorp.com", "visionAccount":null, "headPictureUrl":null, "password":null, "status":0, "paidAccount":null, "paidPassword":null, "weLinkUser":false, "appId":"fdb8e4699586458bbd10c834872dcc62", "tr069Account":null, "corpType":5, "cloudUserId":"", "grayUser":true }, "clientType":72, "forceLoginInd":null, "firstLogin":false, "pwdExpired":false, "daysPwdAvailable":-19678, "proxyToken":null, "tokenType":0, "refreshToken":"cnr13168neNyRDfomYEIci7zVjBBybZQG90fYdX2", "refreshValidPeriod":2592000, "refreshExpireTime":1630304287, "refreshCreateTime":1627712287360 }
  • 请求参数 表2 参数说明 参数 是否必须 类型 位置 描述 Authorization 是 String Header 携带应用鉴权信息。 规则:HMAC-SHA256 signature=HexEncode(HMAC256((appId + ":" + userId + ":" + expireTime + ":" + nonce), appKey)),access=base64(appId) 样例:HMAC-SHA256 signature=07f31aa9eafb06652c6899248b145c1a3264242e2ccf4c81b1b6eb99bb5c,access=ZmRiOGU0Njk5NTg2NDU4YmJkMTBjODM0ODcyZGNjNjI= 说明: 如携带了userId信息,则Body中,也需填写对应的userId信息。 (必填)鉴权头域携带access内容为对应颁发应用id进行base64编码。 X-Token-Type 是 String Header Token类型设置为:LongTicket Content-Type 是 String Header Body的媒体格式。 样例:application/json; charset=UTF-8 X-Request-ID 否 String Header 请求requestId,用来标识一路请求,用于问题跟踪定位,建议使用UUID,若不携带,则后台自动生成。 Accept-Language 否 String Header 语言参数,默认为中文zh-CN,英文为en-US。 appId 是 String Body App ID。如何获取App ID请参考“App ID的申请”。 clientType 是 Integer Body 登录账号类型。 72:API调用类型 corpId 否 String Body 企业ID。 说明: 当SP应用场景携带,如果corpId和userId字段未携带或值为空字符串时,当作SP默认管理员登录。 仅在SP模式下需要填写,单企业模式不要填写,否则会鉴权失败。 expireTime 是 Long Body 应用鉴权信息过期时间戳,单位秒。 说明: 当收到App ID鉴权请求时服务端的Unix时间戳大于expireTime时,本次鉴权失败。 样例:如果要求App ID鉴权信息10分钟后过期,expireTime = 当前Unix时间戳 + 60*10。 如果要求应用鉴权信息始终不过期,expireTime = 0。 nonce 是 String Body 随机字符串,用于计算应用鉴权信息。 minLength:32 maxLength:64 userEmail 否 String Body email地址。 userId 否 String Body 第三方用户ID。 说明: 当userId字段未携带或值为空字符串时,当作企业默认管理员登录。 userName 否 String Body 用户名称。 userPhone 否 String Body 手机号,例如中国大陆手机+86xxxxxxx deptCode 否 String Body 部门编码。通过“查询部门及其一级子部门列表”接口获取。
  • 响应参数 表4 响应参数 参数 类型 描述 accessToken String Access Token字符串。 clientType Integer 登录账号类型。 72:API调用类型 createTime Long Access token的创建时间戳,单位:毫秒。 daysPwdAvailable Integer 密码有效天数。 delayDelete Boolean 是否延时删除状态。 expireTime Long Access Token的失效时间戳,单位:秒。 firstLogin Boolean 是否首次登录。 说明: 首次登录表示尚未修改过密码。首次登录时,系统会提醒用户需要修改密码。 默认值:false。 forceLoginInd Integer 抢占登录标识。 0:非抢占 1:抢占(未启用) proxyToken ProxyTokenDTO object 代理鉴权信息。 pwdExpired Boolean 密码是否过期。 默认值:false。 refreshCreateTime Long Refresh Token的创建时间戳,单位:毫秒。 refreshExpireTime Long Refresh Token的失效时间戳,单位:秒。 refreshToken String Refresh Token字符串。 refreshValidPeriod Long Refresh Token有效时长,单位:秒。 tokenIp String 用户IP。 tokenType Integer Token类型。 0:用户AC CES S TOKEN 1:会控TOKEN 2:一次性TOKEN user UserInfo object 用户鉴权信息。 validPeriod Long Access Token的有效时长,单位:秒。
  • 描述 该接口使用App ID方式进行鉴权,鉴权通过后生成一个Access Token。App ID鉴权的原理介绍,请参考App ID鉴权介绍。 当clientType取值为72时,同一个userId,同时最多能创建64个Token。比如已经创建了64个Token,并且Token都在有效期内,再用同一个userId创建一个Token,前64个Token中最早创建的Token将失效。 当clientType取值为非72时,同一个userId,同时最多能创建1个Token。 Token有效期是12~24小时。
  • 操作步骤 登录应用服务网格ASM控制台。 单击右上角“购买网格”。 参考购买基础版网格中的指导,设置网格名称,选择Istio版本。 在“集群配置”中选择在创建集群中创建的集群,如果有多个集群,可以同时勾选多个。勾选后,系统自动校验集群是否符合添加要求,若校验不通过,会以图标标识,鼠标放上去可以查看校验不通过的原因以及解决方案。具体内容可参考集群校验报错常见场景及解决方案。 同一虚拟私有云的集群只能加入同一个网格。 为了满足高可用的要求,集群需要至少包含两个可用节点,每个节点至少保证有2U4G的可用资源。 如果实例(Pod)需要跨集群通信,集群需要使用ENI网络模型,且集群之间网络互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。 集群的服务网段、容器网段不能和网格内已选集群的服务网段、容器网段冲突。如果集群和网格内的已选集群处于不同的VPC,集群的子网网段也不能冲突。 同一网格最多只能添加五个集群。 在可观测性配置中勾选“启用应用指标”,已默认选中“ AOM 服务”。其他可观测性配置根据需要配置即可。 展开高级配置,在“命名空间注入配置”中勾选集群的“default”命名空间,选择重启已有服务。 图1 命名空间注入配置 设置完成后单击“提交”。 创建时间预计需要5~10分钟,请耐心等待。当网格状态从“安装中”变为“运行中”,表示网格创建成功。
  • 为服务添加灰度版本 登录应用服务网格ASM控制台,单击“asmtest”网格内的。 创建灰度任务名称为“test”的灰度任务,并配置基本信息及灰度版本信息,灰度发布服务选择创建工作负载及服务中创建的名称为“servicetest”的服务,工作负载会自动关联“deptest”,单击“发布”。 图1 创建灰度任务 如果服务“servicetest”无法选择,需要确认服务是否异常,修复后才能选择。 单击“配置流量策略”,选择“基于流量比例”策略类型,为v2(灰度版本)配置“流量配比”为80%。 图2 配置流量策略 单击“策略下发”。 灰度策略的生效需要几秒的时间,您可以在监测灰度运行状态页面,观察灰度版本的运行状态。
  • 清除资源 到此本Demo已全部操作完成,因节点和应用运行过程中会产生费用,如果无特殊要求,请及时删除应用和节点,避免费用产生。 选择左侧导航中的“体验任务”,单击Bookinfo任务中的“卸载”。 单击“确定”。卸载Bookinfo体验任务,会自动删除productpage、details、reviews、ratings服务及相关资源。 图17 卸载体验任务 卸载体验任务后,已完成灰度发布的服务,其灰度版本对应的负载需要手动在CCE控制台删除。
  • 为服务添加灰度版本 本步骤将为Bookinfo应用的“reviews”服务添加新的灰度版本,并配置相应的灰度策略,将原有生产环境的默认版本的流量引流一部分到新版本中。 下面将以为“reviews”服务添加一个v3新版本,且v3新版本接收Bookinfo应用的30%流量为例进行配置。 部署灰度版本 在左侧导航中选择“灰度发布”,在金丝雀发布下,单击“立即发布”。 配置灰度发布基本信息。 灰度任务名称:用户自定义,此处设置为reviews-v3。 命名空间:选择服务所在命名空间。 灰度发布服务:在下拉框中选择reviews。 工作负载:选择服务所属的工作负载。 配置灰度版本信息。 部署集群:选择服务所属的集群。 版本号:配置为v3。 实例数量:使用默认。 实例配置:镜像版本选择1.17.2,其他参数保持默认。 单击“发布”,待启动进度为100%,表明灰度版本部署成功。 图8 查看启动进度 配置流量策略 为灰度版本设置流量策略,灰度版本会根据配置的流量配比引流老版本中的部分或全部流量。 灰度版本部署成功后,单击“配置流量策略”。 设置流量策略。 策略类型分为“基于流量比例”和“基于请求内容”,通过页签选择确定。 基于流量比例:根据流量比例配置规则,将从原版本中切分指定比例的流量到灰度版本。例如80%的流量走原版本,20%的流量走灰度版本。 基于请求内容:根据请求内容配置规则,只有请求内容中满足特定条件的流量会切分到灰度版本上。例如只有在Windows操作系统上的用户可以访问灰度版本。 以“基于流量比例”为例,且v3版本流量配比为20%。 图9 流量策略 单击“策略下发”。 灰度策略的生效需要几秒的时间,您需要在“监测与处理”页面开通 免费体验 APM,或者购买 APM 套餐包,否则无法观测到原版本和灰度版本的流量监控数据。 在“服务列表”页面,单击productpage服务中的“访问地址”。不断刷新页面,页面在v1和v3版本之间来回切换,并且比例大致接近4:1。 图10 v1版本页面 图11 v3版本页面 您也可以在一台已连接公网的机器上执行如下命令,持续访问productpage服务。 while true;do wget -q -O- http://ip:port/productpage; done 返回控制台的“监测与处理”页面查看v1和v3版本的实时流量监控情况。 图12 流量监控详情 在“流量监控”页面,您可以查看Bookinfo应用各服务之间的实时拓扑。ASM提供的流量监控功能,可监控服务之间的拓扑、会话请求调用链、各环节耗时和RPS、RT等性能状态。 图13 流量监控拓扑 从拓扑图可以看出,reviews-v1和reviews-v3服务的调用次数分别为706和167,比例大致接近4:1,符合设定的流量比例策略。成功实现了灰度发布。
  • Bookinfo应用分析 Bookinfo是一个模仿在线书店的应用,页面上会显示一本书籍的描述,书籍的细节(如页数),以及关于书籍的一些评论。 Bookinfo应用由四个单独的服务构成,几个服务是由不同的语言编写的。这些服务对应用服务网格ASM并无依赖,但是构成了一个有代表性的服务网格的例子,即由多个服务、多个语言构成,且reviews服务具有多个版本。这四个服务的说明如下: productpage:会调用details和reviews两个服务,用来生成页面。 details:包含了书籍的信息。 reviews:包含了书籍相关的评论,同时会调用ratings服务。 ratings:包含了由书籍评价组成的评级信息。 其中,reviews服务有3个版本: v1(1.17.0)版本不会调用ratings服务。 v2(1.17.1)版本会调用ratings服务,并使用1到5个黑色星形图标来显示评分信息。 v3(1.17.2)版本会调用ratings服务,并使用1到5个红色星形图标来显示评分信息。 为了直观的展示灰度版本之间流量切换情况,本教程以reviews服务的1.17.1版本(黑星形)、1.17.2版本(红星形)为例进行说明。 图2 Bookinfo应用的端到端架构 在ASM中运行Bookinfo应用,无需对应用自身做出任何改变,只需简单的在ASM环境中对服务进行配置和运行,即把Envoy Sidecar注入到每个服务之中。最终的部署结果如图3所示。 图3 Envoy Sidecar注入之后的Bookinfo应用 所有的服务都和Envoy Sidecar集成在一起,被集成服务的所有出入流量都被Sidecar所劫持,这样就可以利用ASM为应用提供服务路由、遥测数据收集以及策略实施等功能。
  • 购买网格 企业版和基础版网格均支持一键体验任务。基础版可治理单个集群,且免费提供200实例规格,建议您的业务在正式加入网格前先使用基础版。 登录应用服务网格ASM控制台。 单击右上角“购买网格”。 设置如下参数,其余参数均采用默认值。 网格类型 选择基础版。 网格名称 设置网格的名称。 Istio版本 网格支持的Istio版本。 集群 选择4中创建的集群。 Istio控制面节点 如果需要高可用,建议选择两个或以上不同可用区的节点。 设置完成后,在右侧的配置清单中确认网格配置,单击“提交”。 创建时间预计需要1~3分钟,请耐心等待。当网格状态从“安装中”变为“运行中”,表示网格创建成功。
  • 一键创建Bookinfo应用 为集群开启应用服务网格功能后,可以通过“体验任务”创建一个Bookinfo应用Demo,具体操作如下: 登录应用服务网格ASM控制台。 单击网格名称,进入详情页面。 选择左侧导航中的“体验任务”,单击Bookinfo任务中的“安装”。 在右侧页面设置Bookinfo应用所在的集群,在“负载均衡”中选择与所选集群处于同一VPC和子网的共享型负载均衡实例,设置一个对外端口,并填写Bookinfo应用镜像所在的镜像仓库地址,如“swr.cn-north-4.myhuaweicloud.com/group”(group表示组织名称),单击“安装”。 图6 安装Bookinfo 等待Bookinfo应用创建完成。创建完成后进入“服务管理”页面,配置诊断栏将显示为“正常”,Bookinfo应用包含productpage、details、reviews、ratings四个服务。 图7 服务列表
  • 创建虚拟私有云 虚拟私有云(Virtual Private Cloud,简称VPC)是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统。 登录 虚拟私有云VPC 控制台。 单击右上角的“创建虚拟私有云”。 如果无特殊需求,界面参数均可保持默认,单击“立即创建”。 详细参数说明可参考创建虚拟私有云和子网。
  • 创建密钥对 新建一个密钥对,用于远程登录节点时的身份认证。 登录 数据加密 服务DEW控制台。 选择左侧导航中的“密钥对管理”,单击“创建密钥对”。 输入密钥对名称,单击“确定”。 密钥对名称由两部分组成:KeyPair-4位随机数字,使用一个容易记住的名称,如KeyPair-xxxx_asm。 图1 创建密钥对 您的浏览器会提示您下载或自动下载私钥文件。文件名是您为密钥对指定的名称,文件扩展名为“.pem”。请将私钥文件保存在安全位置。然后在系统弹出的提示框中单击“确定”。 为保证安全,私钥只能下载一次,请妥善保管,否则将无法登录节点。
  • 创建虚拟私有云 虚拟私有云(Virtual Private Cloud,简称VPC)是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统。 登录虚拟私有云VPC控制台。 单击右上角的“创建虚拟私有云”。 如果无特殊需求,界面参数均可保持默认,单击“立即创建”。 详细参数说明可参考创建虚拟私有云和子网。
  • 创建密钥对 新建一个密钥对,用于远程登录节点时的身份认证。 登录数据加密服务DEW控制台。 选择左侧导航中的“密钥对管理”,单击“创建密钥对”。 输入密钥对名称,单击“确定”。 密钥对名称由两部分组成:KeyPair-4位随机数字,使用一个容易记住的名称,如KeyPair-xxxx_asm。 图1 创建密钥对 您的浏览器会提示您下载或自动下载私钥文件。文件名是您为密钥对指定的名称,文件扩展名为“.pem”。请将私钥文件保存在安全位置。然后在系统弹出的提示框中单击“确定”。 为保证安全,私钥只能下载一次,请妥善保管,否则将无法登录节点。
  • 购买网格 登录应用服务网格ASM控制台,单击“购买网格”进入购买网格页面。 参考购买基础版网格中的指导,创建名称为“asmtest”的网格,选择在创建集群中创建的名称为“cluster-test”的集群,并选择安装Istio控制面的节点,建议选择两个或以上不同可用区的节点。 选择在中创建的名称为“cluster-test”的集群,并选择安装Istio控制面的节点,建议选择两个或以上不同可用区的节点。 展开高级配置,在“命名空间注入配置”中勾选名称为“default”的命名空间,选择重启已有服务。其余参数根据需要设置即可。 图3 基础版网格参数 在可观测性配置中勾选“启用应用指标”,已默认选中“AOM服务”。其他可观测性配置根据需要配置即可。 设置完成后,在页面右侧配置清单确认网格配置,确认无误后,单击“提交”。 创建网格预计需要1~3分钟,请耐心等待。当网格状态从“安装中”变为“运行中”,表示网格创建成功。
  • 返回值 正常 200 异常 返回值 说明 400 Bad Request 服务器未能处理请求。 401 Unauthorized 被请求的页面需要用户名和密码。 403 Forbidden 对被请求的页面访问禁止。 404 Not Found 服务器无法找到被请求的页面。 405 Method Not Allowed 请求中指定的方法不被允许。 406 Not Acceptable 服务器生成的响应无法被客户端所接受。 407 Proxy Authentication Required 用户必须首先使用代理服务器进行验证,这样请求才会被处理。 408 Request Timeout 请求超出了服务器的等待时间。 409 Conflict 由于冲突,请求无法被完成。 500 Internal Server Error 请求未完成。服务异常。 501 Not Implemented 请求未完成。服务器不支持所请求的功能。 502 Bad Gateway 请求未完成。服务器从上游服务器收到一个无效的响应。 503 Service Unavailable 请求未完成。系统暂时异常。 504 Gateway Timeout 网关超时。
  • 请求示例 创建一个名称为as-config-tlzp,镜像ID为627a1223-2ca3-46a7-8d5f-7aef22c74ee6,规格ID为s3.xlarge.4,系统盘为40G的SATA盘,且SSH密钥名称为100vm_key的伸缩配置。 POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_configuration { "scaling_configuration_name": "as-config-tlzq", "instance_config": { "flavorRef": "s3.xlarge.4", "imageRef": "627a1223-2ca3-46a7-8d5f-7aef22c74ee6", "disk": [ { "size": 40, "volume_type": "SATA", "disk_type": "SYS" } ], "key_name": "100vm_key" , "security_groups": [{ "id": "6c22a6c0-b5d2-4a84-ac56-51090dcc33be" }], "multi_flavor_priority_policy": "PICK_FIRST" } }
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //IAM用户名 "password": $ADMIN_PASS, //IAM用户密码,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
共100000条