云服务器内容精选

  • 构建的代码依赖自己的私有maven仓库 有以下两种解决方案。 在自己的项目的根目录下增加settings.xml文件,在settings.xml指定自己的私有maven仓库地址(如果自己的私有maven仓库时需要认证的,则需要在settings.xml配置上自己的认证信息,用户名密码等)。 在自己项目的pom.xml文件中,指定自己的私有maven仓库。 settings.xml和pom.xml所在路径示例如下。
  • CCE集群节点配置污点和容忍策略后构建报错 问题描述 构建失败,构建日志显示如下错误提示信息: 0/1 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/route-unschedulable: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling. 原因分析 由于构建任务被调度到了CCE集群的受限调度节点上,该节点进行了污点管理配置(如报错信息中显示的node.kubernetes.io/route-unschedulable)。污点能够使节点排斥某些特定的Pod,从而避免Pod调度到该节点上,同时该CCE集群中没有其他节点可供调度,导致构建失败报错。 解决方法 请参考管理节点污点(Taint),去除受限调度节点上的污点,保证CCE集群下至少有一个节点可供调度。
  • 出现拉取不到代码的场景 如下图所示: 一般原因可能有三种。 如果是在自己的节点上构建应用,可能是该节点没有绑定弹性ip,如上图所示"192.168.x.x"的节点没有绑定弹性ip,解决方法:去该节点绑定弹性ip。 授权信息过期,代码源的私人令牌权限范围不够,或者授权信息已被移除等,例如:CodeArts的代码源,拉取不到代码,可能是创建授权的时候,用户名对应的密码输错了,导致拉取不到代码。解决方法:重新授权即可。 自己搭建的代码源仓库,和构建的节点网络不通,例如:在集群A的某一个节点上搭建了一个私有的bitbucket,使用集群B构建,但是集群B和集群A不是同一个vpc,内网不通,导致构建拉取不到代码。解决方法:打通网络。
  • 解决方法 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行如下命令查看安装虚拟机Agent时选择的“授权模式”。 cd /opt/servicestage-agent cat servicestage-agent.conf 如果返回结果中AK、SK的值为空,则“授权模式”为“委托授权”,请执行3。 如果返回结果中AK、SK的值不为空,则“授权模式”为“AK/SK”,请执行4。 “授权模式”为“委托授权”,请执行以下操作: 登录云服务器控制台。 在左侧导航栏选择“弹性云服务器”,单击虚拟机Agent离线的弹性云服务器名称。 在“基本信息”页签的“管理信息”区域,查看该弹性云服务器绑定的IAM委托名称。 登录统一身份认证服务控制台。 在左侧导航栏选择“委托”,单击3.c获取到的委托名称。 选择“基本信息”页签,查看“云服务”是否为ECS服务。 选择“授权记录”页签,查看“权限”是否为Tenant Administrator。 如果以上全部为是,请执行5。 如果以上任意一项为否,请先修改委托,然后执行3.f。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本。 cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart “授权模式”为“AK/SK”,请执行以下操作: 获取权限正确的或者创建新的AK、SK,请参考访问密钥。 登录虚拟机Agent离线的弹性云服务器,请参考登录弹性云服务器。 执行以下命令修改配置文件中的AK和SK的值,修改完后保存退出。 cd /opt/servicestage-agent vi servicestage-agent.conf 执行以下命令完成agent的重启,其中x.x.x要替换成环境中servicestage-agent的实际版本: cd /opt/servicestage-agent/servicestage-agent-x.x.x su agent ./servicestage-agent.sh restart 如果以上方法不能解决问题,请联系技术支持工程师。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Authorization 否 String 若微服务引擎专享版开启了安全认证,此参数必填。否则,无此参数。 开启了安全认证的微服务引擎专享版Token,格式为: Authorization:Bearer {Token} Token获取方法,请参考获取微服务引擎专享版用户Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 schema 是 String 契约内容。 summary 否 String 新加入参数,后面创建schema,请尽量提供schema的摘要。
  • 响应参数 状态码: 400 表4 响应Body参数 参数 参数类型 描述 errorCode String 错误代码。 errorMessage String 错误信息。 detail String 详细定位信息。 状态码: 500 表5 响应Body参数 参数 参数类型 描述 errorCode String 错误代码。 errorMessage String 错误信息。 detail String 详细定位信息。
  • 请求示例 修改指定service_id和schema_id的契约的契约内容和摘要。 PUT https://{endpoint}/v4/{project_id}/registry/microservices/{service_id}/schemas/{schema_id} { "schema": "---\nswagger: \"2.0\"\ninfo:\n version: \"1.0.0\"\n title: \"swagger definition for com.service.provider.controller.ProviderImpl\"\n x-java-interface: \"cse.gen.springmvc.provider.provider.ProviderImplIntf\"\nbasePath: \"/provider\"\nconsumes:\n- \"application/json\"\nproduces:\n- \"application/json\"\npaths:\n /helloworld:\n get:\n operationId: \"helloworld\"\n produces:\n - \"application/json\"\n parameters:\n - name: \"name\"\n in: \"query\"\n required: true\n type: \"string\"\n responses:\n 200:\n description: \"response of 200\"\n schema:\n type: \"string\"\n", "summary": "test" }
  • URI PUT /v4/{project_id}/registry/microservices/{service_id}/schemas/{schema_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 微服务引擎专业版,请填租户项目id,长度为1~64,获取方法请参考获取项目ID。也可以填固定值default。 微服务引擎专享版,请填固定值:default。 service_id 是 String 微服务唯一标识。字符长度为1~64,正则表达式为^.*$。获取方法请参考查询所有微服务信息。 schema_id 是 String 微服务契约唯一标识。字符长度为1~160,正则表达式为^[a-zA-Z0-9]{1,160}$|^[a-zA-Z0-9][a-zA-Z0-9_-.]{0,158}[a-zA-Z0-9]$。获取方法请参考查询微服务的所有契约。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 X-Project-ID:子项目ID,可选,在多项目场景中使用。 X-Domain-ID:账号ID。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 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包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme:表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint:指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点处获取。例如IAM服务在“华北-北京一”区域的Endpoint为“iam.cn-north-1.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-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则Content-type中需声明字符编码方式为utf-8,例如,Content-Type: application/json;utf-8。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中: username为登录用户名。 ********为用户登录密码。 domainname为用户所属的账号名称。 xxxxxxxxxxxxxxxxxx为project的名称,即从地区和终端节点处获取到的“区域”名称。 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" } } } } scope参数定义了Token的作用范围,取值为project或domain。上面示例中取值为project,表示获取的Token仅能访问指定project下的资源。取值为domain时,表示获取的token可以访问指定账号下所有资源。scope参数的详细说明,请参考获取用户Token。 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl命令行、postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求方法 HTTP方法,它告诉服务您正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 响应参数 状态码: 200 表6 响应Body参数 参数 参数类型 描述 id String 微服务引擎专享版专享版ID。 name String 微服务引擎专享版名称。 jobId Integer 微服务引擎专享版执行任务ID。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 errorCode String 错误代码。 errorMessage String 错误信息。 detail String 详细定位信息。 状态码: 500 表8 响应Body参数 参数 参数类型 描述 errorCode String 错误代码。 errorMessage String 错误信息。 detail String 详细定位信息。
  • 请求示例 创建一个名称为“test”微服务引擎专享版,其计费模式为按需计费,规格为cse.s1.small2,可用区为test,关闭安全认证,微服务引擎的部署类型为CSE2。 POST https://{endpoint}/v2/{project_id}/enginemgr/engines { "name": "test", "description": "test", "payment": "1", "flavor": "cse.s1.small2", "azList": ["test"], "authType": "NONE", "vpc": "vpc-demotest", "vpcId": "09902850-9454-4715-9764-018f0c37022", "networkId": "88550801-e892-4f8e-b21b-f7147f6229", "subnetCidr": "192.168.0.5/26", "specType": "CSE2, "inputs": { "nodeFlavor": "s6.large.2" } }
  • 请求示例 创建一个名称为development-env的“虚拟机”类型的环境,环境所在VPC的id为29d55020-ae0e-4a18-871c-93e6976ee7bd。 { "name": "development-env", "description": "", "charge_mode": "provided", "deploy_mode": "container", "vpc_id": "29d55020-ae0e-4a18-871c-93e6976ee7bd", "base_resources": [ { "id": "b6862a62-d916-11e9-bdf1-0255ac101fd9", "type": "cce" } ], "optional_resources": [ { "id": "default", "type": "cse" } ] }