华为云用户手册

  • 变量引用 在编写模板时,通常会使用到变量引用的特性,像写函数一样,引用一个已定义好的变量或引用其他对象的成员变量。在AOS模板中也是一样的,您也可以引用其他已有的值。 为了使模板写作更加通顺,根据被引用的对象,将引用方法分为: 引用输入:使用get_input方式。 引用元素属性:使用get_attribute或get_reference方式。 引用映射表:使用get_in_map方式。 把这些引用方式也叫做“内置函数”。内置函数除了引用还有很多其他函数,详情请参见表1。 表1 AOS的内置函数 内置函数名 描述 get_input 用于获取模板文件中inputs区域中定义的输入参数的值。 get_attribute 用于获取模板中定义的其他元素初始化后的结果。 get_reference 是get_attribute的简化方式。当要获取得到的属性信息是以id或name结尾时,将处理替换为get_attribute的refID或refName方式。 get_in_map 用于获取映射表中的内容。 条件函数 用于定义元素是否需要部署,包括cond_eq、cond_not、cond_and、cond_or和cond_if base64_encode 用于对字符串进行base64编码。 concat 用于将描述字段转换成字符串并进行拼接,支持内嵌get_attribute、get_input函数。 split 一般多与select/get_list_length配合使用。其主要使用场景如下: 将一个字符串拆分成一组字符串,以便从结果字符串列表中获取特定元素。 直接使用结果字符串数组。 select 用于从一个数组结构中获取指定下标的对象。一般多与split配合使用。 get_list_length 用于计算一个数组结构的元素个数。一般多与split配合使用。 父主题: 内置函数
  • 数字转成字符串 很多情况下,定义的变量是一个字符串,但同时需要引用此变量既作为字符串,又作为数字。例如,端口号在作为ENV环境变量时,要求其值是字符串类型,而在作为应用微服务属性时,要求其值为数字。 针对上述问题,有如下两种方式可解决: 方式一:定义两个变量 定义PORT-i, PORT-s两个变量,PORT-s是字符串,PORT-i是数字。这种方法虽然可以直截了当的解决问题,但效果并不是很好。因为带入了重复,从而使模板的可维护性和易用性变差。 方式二:使用concat内置函数 通过concat内置函数将多个小字符串拼接为一个更长、更完整的字符串。concat内置函数的参数可以是任意类型的变量,支持将数字和字符串混合拼接。示例如下: 首先定义变量: magento-EPORT: type: integer default: 32080 其次在ULR时需要为字符串: name: MAGENTO_URL value: concat: - "http://" - {get_input: magento-EIP} - ":" - {get_input: magento-EPORT} #这里直接将数字转为字符串了 再次在微服务属性时需要为数字: serviceSpec: ports: - port: {get_input: magento-container-port} nodePort: {get_input: magento-EPORT} #这里要求是数字
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: cciss1pe_namespace: description: 资源在集群内所在的命名空间 label: '' node_templates: cciss1pe: type: HuaweiCloud.CCI.StatefulSet properties: k8sManifest: kind: StatefulSet spec: replicas: 1 serviceName: statefulsettest3 template: spec: imagePullSecrets: - name: default-secret containers: - image: 'nginx:stable-alpine-perl' name: ll-test resources: requests: cpu: 4 memory: 8Gi limits: cpu: 4 memory: 8Gi metadata: labels: app: ll-test selector: matchLabels: app: ll-test apiVersion: 'apps/v1' metadata: labels: app: ll-test name: statefulsettest3 namespace: get_input: cciss1pe_namespace
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 k8sManifest 是 kubernetes的StatefulSet对象的原生的manifest 参数类型:dict 取值说明:用户自定义,建议使用公开镜像(上传镜像到镜像仓库,设置类型为公开),建议更新时不要更改metadata下面的名称(name)和标签(labels),spec下面的replicas如果通过get_input获得,需要指定type为integer 取值约束:不可为空 使用建议:用户自定义,参考文档:https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/ namespace 是 资源在集群内所在的命名空间 参数类型:HuaweiCloud.CCI.Namespace.Name 取值说明:需为集群下有效的namespace,示例:default 取值约束:由小写字母、数字和中划线组成,且必须以字母开头 使用建议:按需在CCI服务控制台-资源管理-命名空间查询选择
  • 关联关系 表2 关联关系说明 关系说明 关联节点 依赖关系 RDS.MySQL 依赖关系 CCI.Secret 依赖关系 CCI.Job 依赖关系 CCI.StatefulSet 依赖关系 CCI.Storage.EVS 依赖关系 D CS .Redis 依赖关系 CCI.Service 依赖关系 CCI.Deployment 依赖关系 CCI.Storage.SFS 依赖关系 CCI.ConfigMap 依赖关系 RDS.PostgreSQL 依赖关系 CCI.Ingress 依赖关系 AOS.Batch 依赖关系 OBS.Bucket 被包含关系 CCI.Namespace
  • 变量定义优先级 您可以自由组合使用上述设置变量的方式。对于复合类型的变量,为了提高可读性并避免转义带来的问题,建议使用变量定义文件来设置。如果为同一个变量分配了多个值,Terraform 将使用最后一个值进行覆盖。Terraform 根据以下顺序加载变量 (根据顺序,后面的源优于前面的源): 环境变量 terraform.tfvars 或 terraform.tfvars.json 文件 *.auto.tfvars 或 *.auto.tfvars.json 文件 命令行中的 -var 和 -var-file 选项
  • blueprint样例 inputs: apiName: default: api321b apigroupName: default: test_group321b throttleName: default: throttle321 node_templates: throttle1: type: HuaweiCloud.APIG.Throttle properties: name: get_input: throttleName remark: test throttle of aos plugin apiCallLimits: 10 appCallLimits: 7 userCallLimits: 9 timeInterval: 100 timeUnit: MINUTE api-group1: properties: name: get_input: apigroupName remark: test group of aos plugin type: HuaweiCloud.APIG.ApiGroup api1: properties: authType: NONE backendApi: remark: test backend reqMethod: GET reqProtocol: HTTP reqUri: '/test/{aaa}' timeout: 10000 urlDomain: 192.145.47.226:12346 backendType: HTTP cors: false groupId: get_attribute: - api-group1 - refID matchMode: NORMAL name: get_input: apiName remark: test api of aos plugin reqMethod: GET reqProtocol: HTTP reqUri: '/test/{aaa}' strategyId: get_attribute: - throttle1 - refID requirements: - groupId: node: api-group1 - strategyId: node: throttle1 type: HuaweiCloud.APIG.API tosca_definitions_version: huaweicloud_tosca_version_1_0
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 mockInfo 否 mock后端详情 参数类型:APIG.MockInfo 取值说明:详见datatype定义 默认值:{} 使用建议:无 reqMethod 是 API的请求方式 参数类型:string 取值说明:支持Method类型包括:GET, POST, PATCH, DELETE, OPTIONS, PUT, HEAD, ANY 默认值:GET 取值约束:可取"GET", "POST", "DELETE", "PUT", "PATCH", "HEAD", "OPTIONS", "ANY" 使用建议:无 name 是 API分组的名称 参数类型:string 取值说明:用户自定义 取值约束:长度为3 - 64位的字符串,字符串由中文、英文字母、数字、_ 组成,且以英文字母开头 使用建议:无 backendType 是 后端类型 参数类型:string 取值说明:HTTP:web后端,FUNCTION: 函数工作流 ,MOCK:模拟的后端 默认值:HTTP 取值约束:可取"HTTP", "FUNCTION", "MOCK" 使用建议:无 remark 否 API描述 参数类型:string 取值说明:API描述,字符长度不超过255 取值约束:长度不超过255 使用建议:无 backendApi 否 web后端详情 参数类型:APIG.BackendApi 取值说明:详见datatype定义 默认值:{u'reqUri': u'unset', u'reqMethod': u'GET', u'urlDomain': u'unset', u'reqProtocol': u'HTTP'} 使用建议:无 groupId 是 API所属的API分组 参数类型:HuaweiCloud.APIG.ApiGroup.Id 取值说明:支持使用已有或新建API分组。如果使用新建的,需在模板中定义API分组对象并建立依赖关系。建议通过拖拽到API分组内自动生成 使用建议:1. 将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择2. 通过get_reference获取由本堆栈创建的APIG.ApiGroup元素,使用设计器建立依赖关系时会自动指定3. 在APIG服务界面获取已经创建好的API分组ID reqUri 是 API的访问地址 参数类型:string 取值说明:API的访问地址 取值约束:长度不超过255 使用建议:需要服从URI规范 authType 是 API的认证方式 参数类型:string 取值说明:NONE:无认证,APP:APP认证, IAM :IAM认证 默认值:IAM 取值约束:可取NONE,APP,IAM 使用建议:推荐使用IAM认证方式 matchMode 是 API的匹配方式 参数类型:string 取值说明:SWA:前缀匹配,NORMAL:正常匹配(绝对匹配) 默认值:NORMAL 取值约束:可取"SWA", "NORMAL" 使用建议:无 cors 是 是否支持跨域访问 参数类型:boolean 取值说明:true-支持跨域访问;false-不支持跨域访问 默认值:False 使用建议:从安全角度考虑,一般不建议开启跨域访问,除非业务需要 funcInfo 否 函数计算后端详情 参数类型:APIG.FuncInfo 取值说明:详见datatype定义 默认值:{u'functionUrn': u'', u'invocationType': u'async'} 使用建议:无 type 是 API类型 参数类型:string 取值说明:public-公有API,private-私有API 默认值:public 取值约束:可取"public", "private" 使用建议:无 strategyId 否 API所使用的流程策略 参数类型:string 取值说明:支持使用已有或新建流控策略。如果使用新建的,需在模板中定义API策略对象并建立依赖关系。建议通过拖拽连接API与API策略对接实现 使用建议:1. 将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择2. 通过get_reference获取由本堆栈创建的APIG.Throttle元素,使用设计器建立依赖关系时会自动指定3. 在APIG服务界面获取已经创建好的API流控ID reqProtocol 是 API的协议类型 参数类型:string 取值说明:支持 HTTP 和 HTTPS 两种,HTTP-仅支持HTTP协议;HTTPS-仅支持HTTPS协议;BOTH-同时支持两种协议 默认值:HTTP 取值约束:可取""HTTP", "HTTPS", "BOTH" 使用建议:如果涉及敏感信息的传递,建议使用HTTPS
  • cond_not 对计算结果求反,一般用于嵌套其他条件函数。 表2 cond_not 语法 参数说明 返回值 cond_not: cond cond:条件表达式,可以为布尔值、来自get_input的布尔变量或嵌套的cond_eq、cond_not等条件函数。 条件表达式计算结果为true时,返回false;结果为false时,返回true。 通过cond_not判断输入参数是否为期望值示例如下: inputs: a: type: boolean default: true conditions: matchA: cond_not: {get_input: a}
  • cond_and 判断连续多个条件是否都满足,一般用于多重判断条件下,至少要有2个条件,最多支持10个条件。 表3 cond_and 语法 参数说明 返回值 cond_and: [cond1, cond2...condn] cond1:条件1,可以为布尔值、来自get_input的布尔变量或嵌套的cond_eq、cond_not等条件函数。 cond2:条件2,可以为布尔值、来自get_input的布尔变量或嵌套的cond_eq、cond_not等条件函数。 condn:条件n(3≤n≤10),可选,根据实际需求定义,参数类型同cond1、cond2。 当所有参数条件都满足时,返回为true;否则返回false。 通过cond_and判断组合条件是否满足示例如下: inputs: a: type: integer default: 10 b: type: string default: debug conditions: matchAnd: cond_and: [{cond_eq: [{get_input: a}, 10]}, {cond_eq: [{get_input: b}, debug]}] #条件1满足,条件2满足,matchAnd的条件才满足
  • cond_or 判断多个条件中任一条件满足即可。一般用于多重判断条件下,至少要有2个条件,最多支持10个条件。 表4 cond_or 语法 参数说明 返回值 cond_or: [cond1, cond2...condn] cond1:条件1,可以为布尔值、来自get_input的布尔变量或嵌套的cond_eq、cond_not等条件函数。 cond2:条件2,可以为布尔值、来自get_input的布尔变量或嵌套的cond_eq、cond_not等条件函数。 condn:条件n(3≤n≤10),可选,根据实际需求定义,参数类型同cond1、cond2。 任一条件满足时,即返回为true;所有条件都不满足时,返回false。 通过cond_or判断组合条件是否满足示例如下: inputs: a: type: integer default: 10 b: type: string default: debug conditions: matchOr: cond_or: [{cond_eq: [{get_input: a}, 8]}, {cond_eq: [{get_input: b}, debug]}] #条件1不满足,条件2满足,matchOr的条件即可满足
  • cond_eq 判断相等条件是否满足,一般用于判断输入参数与预期是否一致。 表1 cond_eq 语法 参数说明 返回值 cond_eq: [cond1, cond2] cond1:条件1,可以为数字、字符串、布尔值或来自get_input变量。 cond2:条件2,可以为数字、字符串、布尔值或来自get_input变量。 cond1与cond2一致时,返回true;否则返回false。 通过cond_eq判断输入参数是否为期望值示例如下: inputs: a: type: string default: 10 conditions: matchA: cond_eq: [{get_input: a}, 10]
  • cond_if If条件是一个三元表达式,主要用于对属性进行赋值,一般用于node_templates的属性结构中。 表5 cond_if 语法 参数说明 返回值 cond_if: [condition, value_true, value_false] condition:条件名称,需要定义在conditions段中。 value_true:条件满足时的赋值。 value_false:条件不满足时的赋值。 条件满足时,返回value_true;条件不满足时,返回value_false。
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: dcs-name: default: my-dcsinstance dcs-description: default: dcs service dcs-capacity: default: 2 dcs-vpcId: default: 09353759-e408-4b32-aeac-e2b9634eb281 dcs-securityGroupId: default: 07f01d47-11fc-4b9b-bce3-f0f47350ad7a dcs-subnetId: default: 85786d98-06ed-4d33-a85c-572238649029 dcs-password: default: "******" dcs-instanceMode: default: "ha" dcs-engineVersion: default: "5.0" dcs-availablityZone1: dcs-availablityZone2: dcs-specCode: default: "redis.single.xu1.large.2" node_templates: my-dcs: type: HuaweiCloud.DCS.Redis properties: name: {get_input: dcs-name} description: {get_input: dcs-description} capacity: {get_input: dcs-capacity} vpcId: {get_input: dcs-vpcId} securityGroupId: {get_input: dcs-securityGroupId} subnetId: {get_input: dcs-subnetId} password: {get_input: dcs-password} instanceMode: {get_input: dcs-instanceMode} engineVersion: {get_input: dcs-engineVersion} availablityZone1: {get_input: dcs-availablityZone1} availablityZone2: {get_input: dcs-availablityZone2} specCode: {get_input: dcs-specCode}
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: securityGroupId: description: 实例所属的安全组ID dbRootPassword: description: 实例的root用户密码 availabilityZone: description: 实例所属的可用区 subnetId: description: 实例所属的子网ID dbVersion: description: 数据库的版本 default: 5.7.21 HAEnable: description: 是否高可用 vpcId: description: 实例所属的VPC ID flavor: description: 实例规格 dataBaseName: description: 用户可访问的数据库名称 dbUserPassword: description: 数据库用户的密码 dbUserName: description: 用户名 node_templates: rds-ins: type: HuaweiCloud.RDS.MySQL properties: dbPort: 3306 backupStrategy: keepDays: 0 endTime: '02:00' startTime: '01:00' securityGroupId: get_input: securityGroupId dbRootPassword: get_input: dbRootPassword volume: volumetype: COMMON size: 100 availabilityZone: get_input: availabilityZone subnetId: get_input: subnetId dataStore: dbtype: MySQL version: get_input: dbVersion HA: replicationMode: semisync enable: get_input: HAEnable vpcId: get_input: vpcId flavor: get_input: flavor rds-db: type: HuaweiCloud.RDS.MySQL.DataBase properties: instanceId: get_reference: rds-ins dataBase: characterSet: utf8 collate: utf8_general_ci name: get_input: dataBaseName metadata: Designer: id: fd1ae0f5-ce98-487e-be2c-828c4b11e676 requirements: - instanceId: node: rds-ins rds-user: type: HuaweiCloud.RDS.MySQL.User properties: instanceId: get_reference: rds-ins dbUser: userPassword: get_input: dbUserPassword name: get_input: dbUserName userDatabase: - name: get_input: dataBaseName requirements: - instanceId: node: rds-ins - dependency: node: rds-db
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 instanceId 是 RDS实例ID 参数类型:string 取值约束:1. 需要填写RDS实例ID,即界面上显示的实例ID 2. 可以通过连接RDS实例自动生成get_reference关联关系获取 使用建议:用户自定义 dbUser 是 用户的配置 参数类型:MySQL.DBLinkedUser 默认值:{u'userPassword': u'unset', u'name': u'unset'} 使用建议:在“组成部分”中选择 dbUser 字段根据提示的字段进行扩充填写
  • 输出 属性 参数类型 描述 chargeMode 否 按流量计费还是按带宽计费 参数类型:string 取值说明:bandwidth、traffic。不填或者为空时默认是bandwidth 默认值:bandwidth 取值约束:可选值为bandwidth,traffic refName string 所创建Deployment的名称 refLabelsApp string 有状态服务的标签app值
  • 关联关系 表2 关联关系说明 关系说明 关联节点 依赖关系 AOS.Batch 依赖关系 DCS.Redis 依赖关系 RDS.MySQL 依赖关系 CCE.Storage.EVS 依赖关系 OBS.Bucket 依赖关系 CCE.Storage.SFS 依赖关系 CCE.ConfigMap 依赖关系 CCE.Job 依赖关系 CCE.Storage.OBS 依赖关系 CCE.DaemonSet 依赖关系 CCE.Secret 依赖关系 CCE.Service 依赖关系 CCE.Ingress 依赖关系 CCE.StatefulSet 依赖关系 CCE.NodePool 依赖关系 CCE.Deployment 依赖关系 CCE.Pod 依赖关系 RDS.PostgreSQL 被包含关系 CCE.Cluster
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: containername: default: deployment-123 type: string deploymentname: default: deploymenttest type: string image: default: nginx type: string imagePullPolicy: default: IfNotPresent type: string labels: default: mydeployment type: string node_templates: my-deployment: type: HuaweiCloud.CCE.Deployment properties: k8sManifest: apiVersion: 'apps/v1' kind: Deployment metadata: labels: 'cce/appgroup': get_input: labels name: get_input: deploymentname spec: 'replicas:{get_input': 'deploymentname}' selector: matchLabels: 'cce/appgroup': get_input: labels template: metadata: labels: 'cce/appgroup': get_input: labels spec: containers: - image: get_input: image name: get_input: containername imagePullPolicy: get_input: imagePullPolicy
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 namespace 否 资源在集群内所在的命名空间 参数类型:string 取值说明:需为集群下有效的namespace,示例:default 取值约束:由小写字母、数字和中划线组成,且必须以字母开头 使用建议:按需在CCE管理控制台-资源管理-命名空间查询选择 k8sManifest 是 用于描述CCE服务创建的kubernetes集群中的Deployment对象 参数类型:dict 取值说明:用户自定义,建议使用公开镜像(上传镜像到镜像仓库,设置类型为公开),建议更新时不要更改metadata下面的名称(name)和标签(labels),spec下面的replicas如果通过get_input获得,需要指定type为integer 使用建议:kubernetes对象原生的yaml文件内容 clusterId 否 资源所属的CCE集群的ID 参数类型:HuaweiCloud.CCE.Cluster.Id 取值说明:已有容器集群的ID或新建集群的ID 取值约束:满足UUID规则,最大64位 使用建议:1.直接填ID:进入CCE管理控制台-资源管理-集群管理,在集群详情页面查看集群ID。2.通过get_reference获取。通过连线到cluster对象以get_reference自动获取
  • 关联关系 表2 关联关系说明 关系说明 关联节点 依赖关系 AOS.Batch 依赖关系 DCS.Redis 依赖关系 RDS.MySQL 依赖关系 CCE.Storage.EVS 依赖关系 OBS.Bucket 依赖关系 CCE.Storage.SFS 依赖关系 CCE.ConfigMap 依赖关系 CCE.Job 依赖关系 CCE.Storage.OBS 依赖关系 CCE.DaemonSet 依赖关系 CCE.Secret 依赖关系 CCE.Service 依赖关系 CCE.Ingress 依赖关系 CCE.StatefulSet 依赖关系 CCE.NodePool 依赖关系 CCE.Deployment 依赖关系 CCE.Pod 依赖关系 RDS.PostgreSQL 被包含关系 CCE.Cluster 关联关系 ULB.LoadBalancer CCE.Service与ULB.LoadBalancer的关联关系: 编写service.yaml时,在metadata中的annotations字段中添加如下语句:kubernetes.io/elb.class: union; spec中的loadBalancerIP需要填写ULB的私网IP,ULB的私网IP可以通过get_attribute方式获取,例如loadBalancerIP: {get_attribute: [ULB.LoadBalancer元素名称, vip_address]}。 通过负载均衡创建service具体可以参考公网访问-四层负载均衡。
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: labels: description: 应用实例标签,需和service中的selector参数下设置的标签一致 label: 工作负载 default: test deploymentName: description: 工作负载名称 label: 工作负载 default: deployment-test image: description: 应用镜像地址 label: 工作负载 ingressName: description: ingress名称 label: 入口信息 default: ingress-test host: description: ingress host域名信息 label: 入口信息 default: test.com secretName: description: 密钥名称 label: 入口信息 type: HuaweiCloud.ECS.KeyPair.Name serviceName: description: 服务名称 label: 网络服务 default: service-test servicePort: description: 服务端口 label: 网络服务 default: 8888 type: integer path: description: 应用路由 label: 网络服务 default: /test protocol: description: 服务协议,只能填写TCP或者UDP label: 网络服务 default: TCP targetPort: description: 应用本身开放服务端口 label: 网络服务 default: 8888 type: integer node_templates: my-deployment: properties: k8sManifest: apiVersion: apps/v1 kind: Deployment metadata: labels: app: get_input: labels name: get_input: deploymentName spec: replicas: 1 selector: matchLabels: app: get_input: labels strategy: rollingUpdate: maxSurge: 0 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: get_input: labels spec: containers: - image: get_input: image imagePullPolicy: IfNotPresent name: nginx requirements: [] type: HuaweiCloud.CCE.Deployment my-ingress: properties: k8sManifest: apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: ingress.beta.kubernetes.io/role: data ingress.kubernetes.io/secure-backends: 'false' labels: isExternal: 'true' zone: data name: get_input: ingressName spec: rules: - host: get_input: host http: paths: - backend: serviceName: get_input: serviceName servicePort: get_input: servicePort path: get_input: path tls: - secretName: get_input: secretName hosts: - get_input: host requirements: - dependency: node: my-service type: HuaweiCloud.CCE.Ingress my-service: properties: k8sManifest: apiVersion: v1 kind: Service metadata: name: get_input: serviceName spec: ports: - name: get_input: serviceName port: get_input: servicePort protocol: get_input: protocol targetPort: get_input: targetPort selector: app: get_input: labels sessionAffinity: ClientIP type: ClusterIP requirements: - dependency: node: my-deployment type: HuaweiCloud.CCE.Service
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 cleaningAccessPos 是 清洗时访问限制分段ID 参数类型:integer 取值说明:可取1至8的整数。 默认值:8 取值约束:{u'in_range': [1, 8]} 使用建议:数值越大,则在清洗时允许单一源IP新建连接个数和单一源IP连接总个数越大 trafficPos 是 流量分段ID 参数类型:integer 取值说明:可取1至9的整数。 默认值:9 取值约束:{u'in_range': [1, 9]} 使用建议:数值越大,则每秒流量阈值和每秒报文数阈值越大 appType 是 应用类型ID 参数类型:integer 取值说明:可取0或1,使用UDP协议或通用应用的为类型0,使用TCP协议或web应用的类型为1 默认值:1 取值约束:{u'valid_values': [0, 1]} httpRequestPos 是 HTTP请求数分段ID 参数类型:integer 取值说明:可取1至15的整数。 默认值:1 取值约束:{u'in_range': [1, 15]} 使用建议:数值越大,则每秒HTTP请求数阈值越大 floatingIpId 是 用户EIP的ID 参数类型:string 取值说明:支持使用已有或新建弹性公网IP的ID,如果使用新建的,需在模板中的ECS.CloudServer元素中增加publicIP字段或CCE.NodePool元素增加publicIp字段,并增加依赖关系。 使用建议:1、通过get_attribute获取由此模板创建的弹性公网IP的ID 2、在弹性公网IP页面获取已经创建好的IP的ID(https://console.huaweicloud.com/vpc) enableL7 是 是否开启L7层防护 参数类型:boolean 取值说明:true 或 false,如果设置为true,则表示开启L7层防护 默认值:False 使用建议:根据规格按需填写
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: ecs-name: default: "my-cloudserver" label: ECS description: "虚机名称" ecs-image: default: "327946b5-e954-42c3-949a-3312688c9269" label: ECS description: "虚机镜像" ecs-flavor: default: "c1.medium" label: ECS description: "虚机规格" ecs-volumetype: default: SATA label: ECS description: "虚机磁盘类型" ecs-count: default: 1 label: ECS description: "虚机数量" az: default: "cn-north-1a" label: ECS description: "所在AZ" subnet-name: default: "my-ecs-subnet2" label: ECS description: "子网名称" subnet-gateway: default: "192.168.1.1" label: ECS description: "子网网关" vpc-name: default: "my-ecs-vpkvc2" label: ECS description: "VPC名称" vpc-cidr: default: "192.168.0.0/16" label: ECS description: "VPC cidr地址" ads-enableL7: type: boolean default: true label: AntiDDos description: "是否启用L7层防护" ads-trafficPos: type: integer default: 9 label: AntiDDos description: "流量分段ID" ads-httpRequestPos: type: integer default: 1 label: AntiDDos description: "HTTP请求数分段ID" ads-cleaningAccessPos: type: integer default: 8 label: AntiDDos description: "清洗时访问限制分段ID" ads-appType: type: integer default: 1 label: AntiDDos description: "应用类型ID" node_templates: my-ecs: type: HuaweiCloud.ECS.CloudServer properties: name: {get_input: ecs-name} instances: {get_input: ecs-count} imageId: {get_input: ecs-image} flavor: {get_input: ecs-flavor} vpcId: {get_attribute: [my-subnet, vpcId]} availabilityZone: {get_input: az} nics: - subnetId: {get_attribute: [my-subnet, refID]} rootVolume: volumeType: {get_input: ecs-volumetype} dataVolumes: - volumeType: SATA size: 100 publicIP: eip: ipType: 5_bgp bandwidth: size: 100 shareType: PER requirements: - nics.subnetId: node: my-subnet my-subnet: type: HuaweiCloud.VPC.Subnet properties: name: {get_input: subnet-name} cidr: {get_input: vpc-cidr} gateway: {get_input: subnet-gateway} dnsList: [114.114.114.115, 114.114.114.114] vpcId: {get_attribute: [my-vpc,refID]} availabilityZone: {get_input: az} requirements: - vpcId: node: my-vpc my-vpc: type: HuaweiCloud.VPC.VPC properties: name: {get_input: vpc-name} cidr: {get_input: vpc-cidr} policies: my-antiddos: type: HuaweiCloud.AntiDDos.Service # 对EIP启用 AntiDDos properties: enableL7: {get_input: ads-enableL7} trafficPos: {get_input: ads-trafficPos} httpRequestPos : {get_input: ads-httpRequestPos} cleaningAccessPos: {get_input: ads-cleaningAccessPos} appType: {get_input: ads-appType} floatingIpId: {get_attribute: [my-ecs, floatingIpId]} targets: [my-ecs] outputs: ecs-id: value: {get_attribute: [my-ecs, refID]} description: "ECS ID" vpc-id: value: {get_attribute: [my-vpc, refID]} description: "VPC ID" subnet-id: value: {get_attribute: [my-subnet, refID]} description: "SUBNET ID"
  • 关联关系 表2 关联关系说明 关系说明 关联节点 包含关系 AOS.Stack 包含关系 CCE.Deployment 包含关系 CCE.Job 依赖关系 CCE.Service 依赖关系 EVS.NonSharedVolume 依赖关系 CCE.Deployment 依赖关系 ServiceStage.Agent 依赖关系 SMN .Topic 依赖关系 CCI.Storage.EVS 依赖关系 VPC.VIP 依赖关系 APM .AutoScaler 依赖关系 ServiceStage.AppGroup 依赖关系 FGS.DmsEventMap 依赖关系 VPC.FirewallPolicy.Ingress 依赖关系 VPC.EIP 依赖关系 CDN.Source 依赖关系 RDS.MySQL.User 依赖关系 CCE.Ingress 依赖关系 CDN.Cache 依赖关系 CCI.ConfigMap 依赖关系 DIS.Stream 依赖关系 CCI.Namespace 依赖关系 CCE.Addon.AutoScaler 依赖关系 VPC.FirewallRule 依赖关系 CCE.Cluster 依赖关系 SFS.FileSystem 依赖关系 CDN.RefreshJob 依赖关系 EVS.SharedVolume 依赖关系 CCI.Job 依赖关系 AOS.Stack 依赖关系 FGS.TimerEventMap 依赖关系 NAT.Instance 依赖关系 FGS.ObsEventMap 依赖关系 OBS.Bucket 依赖关系 APIG.ApiGroup 依赖关系 AOS.Batch 依赖关系 CCE.Secret 依赖关系 CCE.Storage.EVS 依赖关系 CCE.Storage.SFS 依赖关系 CCE.HelmRelease 依赖关系 FGS.ApigEventMap 依赖关系 RDS.MySQL.DataBase 依赖关系 CCE.NodePool 依赖关系 IAM.UserGroup 依赖关系 CCI.Deployment 依赖关系 CDN.Domain 依赖关系 MRS .Cluster 依赖关系 CCE.StatefulSet 依赖关系 VPCEndpoint.Endpoint 依赖关系 CCI.Ingress 依赖关系 CCE.Job 依赖关系 CCI.Secret 依赖关系 APIG.API 依赖关系 FGS.LtsEventMap 依赖关系 ServiceStage.ContainerComponent 依赖关系 CCI.Storage.SFS 依赖关系 VPC.FirewallGroup 依赖关系 CCI.StatefulSet 依赖关系 CCE.DaemonSet 依赖关系 RDS.PostgreSQL 依赖关系 ECS.KeyPair 依赖关系 ServiceStage.StatelessApplication 依赖关系 ServiceStage.StatefulApplication 依赖关系 IAM.Agency 依赖关系 FGS.CtsEventMap 依赖关系 DDS.CommunityReplicaSetOrSingle 依赖关系 FGS.DisEventMap 依赖关系 APIG.Throttle 依赖关系 CCE.Pod 依赖关系 DCS.Redis 依赖关系 CDN.Https 依赖关系 VPC.VPC 依赖关系 CDN.PreheatJob 依赖关系 CDN.Referer 依赖关系 ECS.CloudServer 依赖关系 SMN.Subscription 依赖关系 VPC.Subnet 依赖关系 CCE.ConfigMap 依赖关系 FGS.Function 依赖关系 VPC.FirewallPolicy.Egress 依赖关系 CCI.Service 依赖关系 CCE.Storage.OBS 依赖关系 ServiceStage.Job 依赖关系 CDN.Host 依赖关系 ECS.ServerGroup 依赖关系 RDS.MySQL 依赖关系 VPCEndpoint.EndpointService 依赖关系 FGS.SmnEventMap
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 items 是 定义包含的子元素模板 参数类型:AOS.BatchItem数组 取值说明:用户自定义 取值约束:数组格式,至少1个对象,最多10个 使用建议:用户自定义,可参照https://support.huaweicloud.com/tr-aos/datatypes-aos-batchitem.html step 否 最大并发数 参数类型:integer 取值说明:默认不定义步长,即按照最大并发情况进行对象的批量创建。如果指定步长,Batch的批量对象之间会分阶段按批次执行。例如,一个batch对象包含了1个job,定义了步长为5,此时batch批量创建的job6将会依赖job1完成后才会执行,从而实现5的并发数。 取值约束:{u'in_range': [1, 100]} 使用建议:根据规格按需选择 values 否 定义子元素模板中使用的变量 参数类型:dict 取值说明:用户自定义。Batch对象在执行实例化时,会使用values中的值替换items中定义的properties相应的变量内容,包括内置的变量item、limit、offset。 默认值:{} 使用建议:根据规格按需选择 limit 是 批量执行的总次数 参数类型:integer 取值说明:用户自定义,取值范围为[1, 500] 取值约束:{u'in_range': [1, 500]} 使用建议:根据规格按需选择
  • blueprint样例 tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: availabilityZone: default: az1.dc1 vpcId: default: ba6e4347-99d2-4649-b114-85c28d3d71b0 subnetId: default: 3be61f68-9bfc-41bf-8f5e-66c57122f270 clusterFlavor: default: cce.s1.small node_templates: cluster: type: HuaweiCloud.CCE.Cluster properties: availabilityZone: {get_input: availabilityZone} vpcId: {get_input: vpcId} subnetId: {get_input: subnetId} flavor: {get_input: clusterFlavor} outputs: cluster_id: value: {get_attribute: [cluster, clusterId]}
  • 模型属性 表1 模型定义属性说明 属性 是否必选 描述 multiAZ 否 多AZ集群 参数类型:boolean 默认值:False 取值约束:仅使用高可用集群时才可以配置multiAZ为true,例如flavor设置为cce.s2系列的规格。 使用建议:multiAZ为true时,集群规格flavor要为可创建多AZ集群,例如为cce.s2系列的规格。 vpcId 是 虚拟私有云ID 参数类型:HuaweiCloud.VPC.VPC.Id 取值约束:支持使用已有或新建私有云ID。如果使用新建的,需在模板中定义vpc对象并建立依赖关系 使用建议:1. 将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择 2. 通过get_reference获取由本堆栈创建的VPC.VPC元素,使用设计器建立依赖关系时会自动指定 3. 在VPC服务界面获取已经创建好的VPC的ID https://console.huaweicloud.com/vpc networkMode 否 容器网络类型 参数类型:string 默认值:overlay_l2 取值约束:当前支持overlay_l2, underlay_ipvlan, vpc-router,用户自定义选择,如果选择vpc-router时,要求所选VPC仅能包含一个子网 使用建议:使用默认值 description 否 集群的描述 参数类型:string 使用建议:用户自定义 name 否 集群名称 参数类型:string 取值约束:长度[4, 128],由小写字母、数字、中划线“-”组成,且必须以字母开始,字母数字结尾。正则规范如下:(^$)|(^[a-z]([-a-z0-9]*[a-z0-9])?$) 使用建议:用户自定义 kubeProxyMode 否 服务转发模式 参数类型:string 默认值:iptables 取值约束:当前仅支持iptables, ipvs 使用建议:1.7版本集群推荐使用默认值“iptables”,1.9及以上版本集群推荐使用“ipvs”,可以获得更好的性能体验 highwaySubnetId 否 高速子网ID 参数类型:HuaweiCloud.VPC.Subnet.Id 取值约束:支持使用已有或创建的网速子网ID。如果使用新建的,需在模板中定义子网对象并建立依赖关系 使用建议:1. 将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择 2. 通过get_reference获取由本堆栈创建的VPC.Subnet,使用设计器建立依赖关系时会自动指定 3. 在VPC服务界面中获取已创建好的子网的ID (https://console.huaweicloud.com/vpc) containerNetworkCIDR 否 容器网络网段 参数类型:string 默认值:"" 取值约束:按照用户实际创建的网络进行配置,可设置的网段:172.16.0.0/16~172.31.0.0/16 10.0.0.0/16~10.255.0.0.0/16 192.168.0.0/16 使用建议:使用默认值 version 否 集群版本 参数类型:string 取值约束:目前支持v1.15, v1.13, v1.11 使用建议:请设置为CCE支持的集群版本号。建议通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择。 namespaces 否 创建cluster时同时创建的namespace 参数类型:string数组 默认值:[] 取值约束:数组类型 subnetId 是 子网ID 参数类型:HuaweiCloud.VPC.Subnet.Id 取值约束:支持使用已有或创建的子网ID。如果使用新建的,需在模板中定义子网对象并建立依赖关系 使用建议:1. 将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择 2. 通过get_reference获取由本堆栈创建的VPC.Subnet,使用设计器建立依赖关系时会自动指定 3. 在VPC服务界面中获取已创建好的子网的ID https://console.huaweicloud.com/vpc flavor 是 集群规格 参数类型:HuaweiCloud.CCE.Cluster.Flavor.Name 取值约束:需符合CCE的规格定义(可以在CCE服务页面查看支持创建的规格) 使用建议:在CCE创建集群页面查询可使用的集群规格名称,请参见:https://support.huaweicloud.com/api-cce/cce_02_0236.html type 否 集群类型 参数类型:HuaweiCloud.CCE.Cluster.Type 默认值:VirtualMachine 取值约束:目前支持VirtualMachine, BareMetal, Windows, ARM64 使用建议:使用默认值 nodes 否 创建包周期集群时的用户节点配置 参数类型:CCE.NodePool 默认值:{u'dataVolumes': [], u'availabilityZone': u'unset', u'instances': 1, u'rootVolume': {u'volumeType': u'unset', u'size': 40}, u'flavor': u'unset', u'sshKeyName': u'unset'} 取值约束:符合HuaweiCloud.CCE.NodePool属性的描述及约束 使用建议:根据规格按需配置 availabilityZone 否 可用区。创建包年包月集群时,该字段为必填字段。 参数类型:HuaweiCloud.ECS.AvailabilityZone.Name 取值约束:根据所属区域选择,参见https://developer.huaweicloud.com/endpoint。 使用建议:将该字段通过get_input函数传入,在AOS界面创建堆栈填写输入参数时可自动选择
  • 步骤四:车辆分析 执行Analyze 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以生成最有效的查询执行计划。 执行以下语句生成表统计信息: 1 ANALYZE; 查询数据表中的数据量 执行如下语句,可以查看已加载的数据条数。 1 2 SET current_schema= traffic_data; SELECT count(*) FROM traffic_data.gcjl; 车辆精确查询 执行以下语句,指定车牌号码和时间段查询车辆行驶路线。 GaussDB (DWS) 在应对点查时秒级响应。 1 2 3 4 5 6 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm = 'YD38641' and gcsj between '2016-01-06' and '2016-01-07' order by gcsj desc; 车辆模糊查询 执行以下语句,指定车牌号码和时间段查询车辆行驶路线,GaussDB(DWS) 在应对模糊查询时秒级响应。 1 2 3 4 5 6 7 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm like 'YA23F%' and kkbh in('508', '1125', '2120') and gcsj between '2016-01-01' and '2016-01-07' order by hphm,gcsj desc;
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
共100000条