华为云用户手册

  • 查询说明 支持查询最近365天的历史数据。 查询的时间跨度最长为31天。 下行带宽/流量、上行带宽/流量和推流路数支持选择多个域名同时查询,单次查询的域名总数不能超过10个。观众数仅支持选择单个域名进行查询。 下行带宽/流量、上行带宽/流量和推流路数的最小统计粒度为5分钟,如2020-11-06 8:00:00~2020-11-06 8:04:59时间段内的数据会统计展示在2020-11-06 8:00:00这个统计点上,其中,展示的数据为用户所选粒度时间段内的最大值。 观众数统计的是独立IP数,最小统计粒度为1分钟,如2020-11-06 8:00:00~2020-11-06 8:00:59时间段内的数据会统计展示在2020-11-06 8:01:00这个统计点上。
  • 通过服务编排订阅事件 参考如何创建服务编排中操作,新建一个服务编排。 图1 添加服务编排 标签:新建服务编排的标签名,用于在页面展示。 名称:服务编排在系统中的唯一标识,创建后不可修改。 类型:新建服务编排的类型,本示例选择“Event Trigger”。 Autolaunched Flow:自启动服务编排,即在接口调用后,会立即执行服务编排中定义的逻辑。 Event Trigger:事件触发的服务编排,在事件触发时,才会开始执行服务编排中定义的逻辑。 事件:选择如何自定义事件中创建的事件(请确保事件已启用)。 描述:服务编排的描述信息。 在服务编排设计页面左侧,选择“逻辑”,拖拽“决策”图元至画布中。 该图元类似if语句的判断,用于在服务编排流程中创建判断条件,根据判断结果连线其他图元,决定后续执行何种操作。本示例需要设置应聘者被成功录用、应聘者没被录用和其他三个判断分支。 图2 拖拽决策图元至画布中 选中决策图元,单击,设置分支条件参数。 图3 pass分支条件配置 图4 unpass分支条件配置 可编辑的结果,即所有的判断条件。系统已预置默认条件,即当其他所有条件均不满足情况下,进入该分支。 本示例,需要新增如下两个判断条件: Pass:应聘者被录用。应聘通过时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.True}”,表示结果为真,即应聘通过。 Unpass:应聘者没有被录用。应聘失败时,事件中自定义的布尔类型参数“Result”赋值为全局常量“{!$GlobalConstant.False}”,表示结果为假,即应聘拒绝。 在服务编排设计页面左侧,选择“基本”,拖拽“发送邮件”图元至画布中。 发送邮件是发送邮件的接口。本示例中,需要根据录用结果,发送不同的邮件给人事部。 录用成功,需要邮件通知人事部办理入职。 录用不成功,需要邮件通知人事部告知应聘者应聘失败。 事件超时(默认分支),需要邮件通知招聘经理,看其是否给出招聘结果。 如下图所示,以应聘者被成功录用为例,设置发送邮件参数。 选中发送邮件图元,单击,设置基本信息。 图5 设置邮件发送基本信息 单击,设置邮件发送参数。 图6 配置邮件发送参数 邮件配置:可选择“直接编辑”手动设置邮件信息或“基于模板”选择邮件模板。本示例选择“直接编辑”。 主题:邮件的标题。 内容:邮件内容,需要使用事件变量“EmployResultNotify__e”。 地址:接收人的邮箱地址。 字符串:表示直接输入。 集合:表示可以拖入一个集合变量。 参考5中操作,设置应聘者录用失败和超时邮件发送。 如图7所示,连接所有元素。 图7 连接并设置起始元素 在服务编排设计页面上方,单击,保存服务编排。 保存成功后,单击,启用服务编排。 启用后,当有“EmployResultNotify”事件触发时,即会执行服务编排中定义的逻辑。
  • 什么是报表 AstroZero对内部数据提供了一种汇总方式的视图,即为报表。利用报表功能,可以让数据进行可视化的展示,并进行分析与洞察,更好地了解业务现存的问题与机遇。 AstroZero提供了报表构建器,便于您快速完成报表的开发。报表定义了报表数据来源于哪些对象,以及对象的连接关系,支持创建一个带有多个对象连接起来的汇总报表,不必局限于单个对象。同时支持对已有的原始记录数据,进行归类、筛选、分组、公式计算以及数据汇总。 在应用开发过程中,需要先利用报表Widget创建一个报表展示页面,再调用本章节利用AstroZero创建的报表。 父主题: 报表
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“界面”。 单击报表后的,进入添加报表页面。 设置报表主对象、标签等,单击“新建”。 图1 添加报表基本信息 主对象:选择前提条件中创建的主对象,该对象定义了报表的汇总主体。例如,如果报表想展示图书的作者,数据来源于“Author__CST”,即“Author__CST”作为主对象。 标签:报表的标签名,用于在页面展示。 名称:报表在系统中的唯一标识。 文件夹:通过文件夹,对报表进行分类管理。 描述:报表的描述信息。 对象连接关系:定义报表中,要展现对象的连接关系。例如,将两个对象数据的交集,作为报表展示的数据范围,也可以只选用一个主对象。 每个'A' 对象的记录至少关联一条'B'的记录:为内连接,表示取连接双方的交集。 'A' 对象的记录可以关联或不关联'B'的记录:为左连接,表示取左方的全集以及双方的交集数据。 编辑报表要展示的信息。 选择报表要展示的字段,即在报表编辑页面左侧“可选字段”中,拖拽所需的字段到右侧“报表预览”页面。 图2 选择字段 单击某个字段后的,选择“按该字段分组”,设置分组字段。 图3 按该字段分组 设置报表数据过滤条件。 通过设置过滤条件,可以挑选出希望获得的数据。如下图所示,展示了创作时间在2019-02-01至2019-03-28之间的图书情况。 编辑状态的报表,仅显示前20条数据。 图4 设置报表数据过滤条件 单击报表编辑页面上方的,保存报表。 保存成功后,单击,显示运行态报表页面。 图5 运行态报表页面
  • 添加目录 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“界面”。 在右侧的报表中,可查看该应用拥有的所有报表。 单击报表后的,进入添加目录页面。 设置目录名称,单击“保存”。 目录创建后,您可以执行如下操作。 单击目录后的,可新建报表。 单击目录后的,可新建子目录。目录创建后,可直接拖拽报表到目录中。 单击后,选择“编辑”,可修改目录名称。 单击后,选择“移动”,可移动页面、数据、逻辑、流程、报表等到其他应用。 单击后,选择“删除”,可删除目录。删除目录前,请确保当前目录为空。
  • 常见问题 是否拥有执行触发器设定的操作权限,取决于触发器的创建人还是触发人? 回答:是否有执行触发器设定的操作权限,取决于触发者本人是否有相关权限,和触发器创建人无关。例如,某个触发器关联了对象“D__CST”,触发类型是“插入或更新记录时”,触发时执行脚本C,即对象“D__CST”数据有新增或更新时,会触发该触发器,从而执行脚本C。用户A是触发器的创建人,没有对象“D__CST”的操作权限和脚本C的执行权限,用户B有“D__CST”的操作权限和脚本C的执行权限,当用户B更新“D__CST”对象数据时,会触发该触发器,执行脚本C。
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,单击“逻辑”。 单击触发器后的,进入增加触发器页面。 设置触发的对象、标签、名称和触发类型,单击“添加”,即可进入触发器编辑页面。 图1 增加触发器 对象:关联的对象(不可编辑)。本示例选择“Employee__CST”。 标签:触发器的标签,用于在页面展示。本示例设置为SendEmailProcess。 名称:触发器的唯一标识,系统根据标签取值自动生成。本示例设置为SendEmailProcess。 描述:触发器的描述信息。 触发类型:触发器启动类型,新建后可修改。本示例选择“插入或更新记录时”。 仅在插入记录时:当系统创建某条记录时。 仅在更新记录时:当系统更新某条记录时。 插入或更新记录时:当系统创建或更新某条记录时。 被别的触发器调用时:被其他触发器所调用时。 收到平台事件时:被事件(event)触发时。选中该条件时,请在“事件”中配置具体事件。 单击“添加条件”,设置规则条件,并单击“保存”。 图2 创建规则条件 条件名称:新建条件规则的名称。 执行操作条件:进入该条件规则的条件。本示例设置为“当条件满足时”。 设置条件:“字段”配置为“name”,“操作符”配置为“等于”,“类型”配置为“常量”,“值”配置为“"zhangsan"”。 单击“添加操作”,设置满足规则条件后执行的动作,单击“保存”。 图3 创建动作 操作类型:设置动作类型,本示例选择“邮件告警”。 操作名称:新建动作的名称。 电子邮件告警:选择配置好的邮件告警。 单击触发器编辑页面上方的,启用触发器。 结果验证。 基于“Employee__CST”对象,创建一条记录,对象“name”字段取值为“zhangsan”。用户“zhangsan@qq.com”成功收到邮件通知,表明触发器创建成功。
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,单击“调试”,进入开启日志跟踪页面。 图1 进入调试页面 单击,可以开启十分钟内的AstroZero的后台日志追踪。 如果需要停止跟踪,可单击,将停止追踪且不会获取日志文件。 图2 开启日志跟踪 表1 日志跟踪参数说明 参数 说明 日志级别 日志级别,取值说明如下: 会话级:只会打印当前会话的日志。 租户级:打印租户所有会话的日志。 用户级:根据用户名,查看某用户或业务用户的操作日志。 日志类型 日志类型,取值说明如下: 业务日志:输出业务相关的跟踪日志。 完整日志:输出业务日志,以及数据库、中间件等的详细日志,主要用于AstroZero问题定位。 下载日志文件。 单击下载,可下载日志文件。下载后会自动停止跟踪,日志格式为“时间|操作ID|业务部件|动作描述”。 单击,可从新窗口打开日志跟踪页面。 单击,日志跟踪页面将会被隐藏。
  • 操作步骤 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,单击“命令行”,进入数据调试控制台页面。 控制台页面如图1所示,界面分为多个区域,展示不同的内容。 图1 控制台 区域1:数据调试控制台支持的所有操作。 对象管理:关于对象表的操作。 缓存管理:对AstroZero系统的缓存进行管理,主要是清理所有缓存或清理某个特定缓存的命令。 任务查询:对AstroZero的一些历史任务或表数据统计的可用命令展示。 搜索管理:展示Elasticsearch中的可搜索表或字段。 区域2:根据区域1的操作从而展示对应的内容。 单击区域1的“对象管理”,则会在区域2中展示该用户有权限看到的所有表。 单击区域1“缓存管理”,则会在区域2中展示管理缓存相关的命令。 单击区域1“任务查询”,则会在区域2中展示任务管理相关的命令。 单击区域1“搜索管理”,则会在区域2中展示搜索管理相关的命令,支持根据应用进行过滤,默认显示“全部”,即搜索所有应用数据。 区域3:展示命令的说明或提示文字。 双击区域2展示的命令时,会在该区域展示该命令的简单说明或展示一些提示文字。 区域4:操作按钮区域。 单击“执行”(快捷键为Ctrl + Enter),可执行用户在区域5输入的命令。或者选中区域5输入的某个命令,单击“执行选择项”进行执行。命令执行完成后,单击“清除”,可清除执行结果的展示。 区域5:命令输入区,用户可以在该区域进行表数据查询,支持多种表操作的SQL语句。 例如:在单击区域1的“对象管理”时,会在区域2展示所有对象表,单击某个表,便可复制该表名。用户在区域5输入命令时,可快速复制粘贴要查询的表名。且对于区域2展示的所有命令,可通过双击鼠标左键,可直接将命令展示在该区域,然后单击区域4“执行”,执行该命令,减少了用户手动输入命令的动作。 区域6:展示相关命令的执行结果。 区域7:展示系统的发行版本和发行时间。 区域8:记录用户在区域5成功执行的所有命令。 单击该区域的命令,可将选中的命令填充到区域5,单击区域4的“执行”按钮,便可执行该历史命令。 根据 “支持SQL语句列表”提示,输入SQL查询语句,执行查询。 对象管理中除了系统预置的标准对象、用户定制的自定义对象、视图对象和聚合对象,还有一种系统对象,即AstroZero各项系统功能模块所使用到的对象,如服务编排、脚本。此类对象一般无需关注,若需要定位问题可在数据调试控制台使用SQL语句进行查询。 图2 执行SQL语句查询
  • 使用原生服务具备哪些优势 面向第三方技术开发人员,原有资产不用重新开发,复用原有的业务和技术能力,可快速接入AstroZero,实现与现网系统快速集成,提升系统粘性。 提升微服务构建能力,优化应用系统架构,助力伙伴基于AstroZero构建重量级行业应用。 自有资产可基于AstroZero资产市场,实现共享、共建合作生态。 使用CCE/CCE敏捷版部署,接入AstroZero,投资小、成本低。传统的IT实现,客户如果要构建应用系统,必须从硬件和软件全部一次性购买。使用AstroZero,像住酒店一样,按需入驻,不需要关注酒店的建筑、运营和维修。初始投资少、成本低、减少投资风险。
  • 相关概念 由于Native Service涉及的概念比较多,在做Native Service配置前,建议先提前了解如下相关概念。部分概念说明源于Kubernetes官网介绍,若需要了解更多Kubernetes相关内容,请参考Kubernetes资料。 Native Service 将租户已有的一些服务(服务为租户线下开发,运行在Docker容器中,并非在AstroZero上开发)的API集成到AstroZero上,供上层应用调用,帮助租户更加高效的构建应用。 Chart 在部署Native Service前,需要配置Chart,用于生成kubernetes(简称“K8s”)资源配置文件。配置Chart,其实是配置部署Docker容器时需要的资源、存储、网络等一系列参数,为容器的部署、服务的运行提供支撑。 Kubernetes(简称“K8s”) Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容和维护等功能。 节点(Node) 每一个节点对应一台服务器(可以是虚拟机实例或者物理服务器),容器应用运行在节点上。节点上运行着Agent代理程序(kubelet),用于管理节点上运行的容器实例。 实例(Pod) 实例(Pod)是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。 图1 实例(Pod) 容器 一个通过Docker镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。 图2 实例Pod、容器Container、节点Node的关系 Docker Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。Docker是Kubernetes Pod中最常用的容器运行时,但Pod也能支持其他的容器运行时。若需要了解更多Docker相关内容,请参考Docker官网。 Docker镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 镜像(Image)和容器(Contianer)的关系,像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 云容器引擎(Cloud Container Engine,简称“CCE”) 云容器引擎提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。 密钥(Secret) 密钥是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或者环境变量使用。 ConfigMap ConfigMap是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在容器工作负载中作为文件或者环境变量使用。允许您将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 无状态负载 等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。 有状态负载 等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod,和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。 Service 可以理解为使用标签选择器(selectors)标识的一组Pod,通过Service可以访问到这组Pod。 Ingress Ingress是对集群中服务的外部访问进行管理的API对象,访问方式是HTTP或者HTTPS。
  • 如何使用原生服务 租户线下开发了一些服务,服务运行在Docker容器中。租户希望可将线下开发的这些服务集成到AstroZero上,供AstroZero内部应用或者其他第三方系统调用。 Native Service在AstroZero内的使用场景包括但不限于: 在服务编排内部进行调用 租户线下开发的服务集成到AstroZero上,可以作为Native服务,被服务编排调用。 外部系统通过Restful接口调用 通过下面的REST接口,调用原生服务,输入参数在body中填写。 https://AstroZero域名/native/NativeService1/0.1.0/health 其中,“AstroZero域名”为AstroZero对外提供的默认域名,“/native/NativeService1/0.1.0/health”为该服务开放接口的URL,可以在开放接口详情中获取。该调用方式,只适用于外部接口。 图3 查看接口URL 在脚本中调用 租户线下开发的服务集成到AstroZero上,且在AstroZero上自定义该服务的开放接口后,可以在脚本中内部调用开放接口。 脚本部分示例如下: let resp3 = httpClient.post("https://AstroZero域名" + "/native/NativeService1/0.1.0/health", callOptions3);console.log(context.getHost())console.log(resp3.body);if (resp3.body.resCode == "0" && resp.body.result) {console.log('auth success, currrent user is: ', resp3.body.result.name)} 其中,“AstroZero域名”为AstroZero对外提供的开发态默认域名,“/native/NativeService1/0.1.0/health”为该服务开放接口的URL。该调用方式,只适用于外部接口。 在页面中调用 在高级页面的Widget代码中,调用原生服务的开放接口。标准页面则可在事件代码中直接调用原生服务的开放接口或通过定义服务模型,关联调用原生服务的服务编排,再在页面事件代码中,调用服务模型,从而来调用原生服务。 在标准页面上传组件中,还可以调用原生服务的自定义接口实现上传功能。标准页面中上传组件功能介绍,请参见上传。 在工作流中调用 在服务编排中调用原生服务后,向工作流设计页面的泳道中,拖入“调用服务编排”图元。选择,在服务编排配置页面,选择需要调用的服务编排。 在触发器中调用 在服务编排中调用原生服务后,在触发器中可调用该服务编排,当满足触发器规则时,系统会执行该服务编排。
  • 配置API时的规则约束 规则:在“API设计”页签,单击“开始设计API”,创建API时,API的命名空间应选择“局部命名空间”。 在创建API时,“命名空间”支持选择“局部命名空间”和“全局命名空间”。使用“局部命名空间”,可保证API的名称不会和其他Native服务的API名称出现冲突。而“全局命名空间”,是为了版本向前兼容而保留的。在AstroZero 1.2.10及之前的版本中,API无命名空间的概念,相当于API定义在全局名称空间中,因此,不同Native服务的API命名出现冲突的可能性比较大。
  • 前提条件 已下载之前设计的Chart包。 在AstroZero开发环境的Native Service配置页面,选择“导航”。 在“Chart设计”页签版本列表区域,单击需要导出的Chart后的导出按钮。 图1 导出Chart包 操作列按钮分别提供编辑Chart包、修改Chart包状态(单击后,Chart包状态是“Published”,无法再编辑该Chart包。单击后,Chart包状态是“Draft”,可编辑该Chart包。该界面不提供发布功能,实际发布要去CCE部署和发布)、预览Chart配置、导出Chart包、克隆已有Chart包配置和删除功能。
  • 镜像开发中的规则约束 用户可自行开发镜像,并上传到CCE华为云容器中或使用第三方镜像仓库的镜像。在进行镜像开发时,需要遵循如下的规则约束: 规则1:容器镜像必须使用,1.11.2或以上版本的Docker客户端进行制作。 如何制作Docker镜像,请参考如何编写高效的Dockerfile。 规则2:Native服务向AstroZero平台开放的接口,必须是“application/json”格式的restful接口。 开放给AstroZero应用调用的Native服务接口,请求消息和响应消息的“Content-Type”都必须是“application/json”。 规则3:Native服务开放的接口应使用HTTP消息头进行认证,不要依赖于Cookie。 AstroZero会丢弃Native服务返回的Cookie信息,因此,Native不能使用Cookie来维持状态。 Native服务示例代码如下: LOG.info("Authentication begin.");String auth = request.getHeader("Authorization");// next: verify auth 建议:服务的日志建议输出到一个独立的目录,且日志文件命名以“.log”、“.trace”或“.out”后缀结尾,方便后续使用华为云的应用运维管理(简称AOM),采集日志文件,并将日志展示在AOM的界面上。
  • 配置Chart时的规则约束 规则1:在配置Chart时,Chart中应尽量避免包含密码等敏感信息。若需要配置敏感信息,用户需要自行对敏感信息进行加密,且Chart中不能包含解密敏感信息需要的密钥。 规则2:将Chart中的易变参数定义为全局变量,可避免因为参数变更时,修改并重新生成Chart包。 全局变量将用于生成Chart包中的“values.yaml”文件。在华为云CCE上部署Chart时,“values.yaml”文件的内容可以通过界面进行修改。因此,应将和环境相关的信息或其他易变参数定义为全局参数,例如镜像地址、pod实例数等。 规则3: 必须要为Ingress资源配置注解,注解中键为“nginx.ingress.kubernetes.io/ssl-redirect”,值为“false”。 华为云CCE的Kubernetes集群默认部署Nginx控制器,需要在Ingress上添加注解。如何添加注解,请参考Kubernetes资料。 AstroZero平台在调用Native服务的接口时,无法处理重定向的响应,必须给Ingress添加表1中的注解。 表1 注解1 注解中键 注解中值 nginx.ingress.kubernetes.io/ssl-redirect false Nginx控制器默认后端service使用http协议,如果后端service使用的是https协议,请添加表2中的注解。 表2 注解2 注解中键 注解中值 nginx.ingress.kubernetes.io/backend-protocol HTTPS nginx.ingress.kubernetes.io/secure-backends true 建议1:保持Chart简洁,建议一个Chart中工作负载不超过3个。 保持Chart简洁,可以降低部署、升级失败的概率,在升级时能更有效地控制升级的范围。 建议2 :同一个Chart中,为所有图元的名称定义相同的前缀。 例如,某Chart中所有图元以“template-”为前缀,无状态负载的名称可以命名为“template-deployment”,ConfigMap的名称可以命名为“template-dbconfig”等。使用相同的前缀,可以使用户更方便识别Kubernetes资源的归属,同时降低命名冲突的可能性。 建议3:当全局变量的值是多行文本时,文本中出现的空行应不含任何空格字符。 全局变量将用于生成Chart包中的“values.yaml”文件,在yaml文件中,通过缩进表达层次关系,而空行中的空格字符会影响yaml文档的缩进排版。例如,当全局变量名为“dbConfig”,变量值为: jdbc.url: jdbc:mysql://127.0.0.1:3306/testdbjdbc.username: adminjdbc.password: {XXXXXXXX}jdbc.driver-class-name: org.mariadb.jdbc.Driver 生成的values.yaml内容为: dbConfig: |- jdbc.url: jdbc:mysql://127.0.0.1:3306/testdb jdbc.username: admin jdbc.password: {XXXXXXXX} jdbc.driver-class-name: org.mariadb.jdbc.Driver 当全局变量名为“dbConfig”,变量值为(第4行中包含一个空格字符)。 jdbc.url: jdbc:mysql://127.0.0.1:3306/testdbjdbc.username: adminjdbc.password: {XXXXXXXX} jdbc.driver-class-name: org.mariadb.jdbc.Driver 生成的values.yaml内容为: dbConfig: "jdbc.url: jdbc:mysql://127.0.0.1:3306/testdb\njdbc.username: admin\njdbc.password:\ \ changeit\n \njdbc.driver-class-name: org.mariadb.jdbc.Driver" 通过流水线部署Chart时,第一种格式的“values.yaml”文件,更容易通过脚本进行修改。
  • Chart元素说明 ConfigMap 是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在工作负载中作为文件或环境变量使用。允许将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。 Secret(密钥) 是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或环境变量使用。其配置页面上参数含义与ConfigMap大体相同,差异的参数说明如下: “密钥类型”取值为“Opaque”,表示一般密钥类型。 “密钥数据”的“值”必须使用Base64编码。对字符串进行Base64加密,可以直接使用“echo -n 待编码内容 | base64”命令。 root@ubuntu:~# echo -n "待编码内容" | base64 无状态负载 等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。 有状态负载 等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod。和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。选择“有状态负载”时,必须要配置“实例间发现服务”。 实例间发现服务指的是Kubernetes的Headless Service,Headless Service用于控制Pod的网络域名,通过Pod的网络域名可以访问特定的Pod实例。例如,集群域名为cluster.local,有状态负载的名称为web,有3个Pod实例,则3个Pod的名称分别为web-0、web-1和web-2,Headless Service的名称为nginx,则3个Pod的域名分别是web-0.nginx.$(命名空间).svc.cluster.local、web-1.nginx.$(命名空间).svc.cluster.local、web-2.nginx.$(命名空间).svc.cluster.local,通过Pod域名访问到具体的Pod实例。
  • 如何添加应用依赖关系 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“设置”,进入应用设置页面。 选择“依赖与开放”,单击“添加依赖”,进入添加应用依赖关系页面。 图1 添加应用依赖关系 选择需要添加依赖关系的一个或多个应用,单击“确认”。 图2 选择需要添加依赖关系的应用 (可选)在应用依赖页签,单击已添加应用后的,可查看依赖的应用。 (可选)在应用依赖页签,单击已添加应用后的,可删除依赖的应用。 如果当前应用添加了与另一个应用的依赖关系,但实际上并没有引用该应用内的任何元素,则可以通过此按钮,一次性将这些虚假依赖关系删除掉。
  • 添加目录 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“逻辑”。 在右侧的触发器中,可查看该应用拥有的所有触发器。 单击触发器后的,进入添加目录页面。 设置目录名称,单击“保存”。 目录创建后,您可以执行如下操作。 单击目录后的,可新建触发器。 单击目录后的,可新建子目录。目录创建后,可直接拖拽触发器到目录中。 单击后,选择“编辑”,可修改目录名称。 单击后,选择“移动”,可移动页面、数据、逻辑、流程、触发器等到其他应用。 单击后,选择“删除”,可删除目录。删除目录前,请确保当前目录为空。
  • 在脚本中调用连接器 在脚本中,调用已创建的连接器,实现与Message&SMS的对接。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图2 新建空白脚本 在脚本编辑器中,输入如下代码。 //导入该脚本所依赖的标准库文件。msgsms是系统预置的标准库。import * as sms from 'msgsms'; @action.object({type: "method"}) export class ActionDemo { @action.method({ label: 'greeting something', description: 'greeting something.', input: 'ActionInput', output: 'ActionOutput' }) public greet(){ console.log('`````````````````````test new sms`````````````````````') let client = sms.newClient("MSGSMS_Test") let res = client.sendByName("Test1","130XXXXXXXX","[\"6612\"]") console.log(res) console.log('`````````````````````test new sms end`````````````````````') } } 其中,sms.newClient("MSGSMS_Test")中“MSGSMS_Test”为连接器的名称。client.sendByName("Test1","130XXXXXXXX","[\"6612\"]")中携带的是模板名称、接收者号码和模板参数。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部,单击测试窗口右上角的。 检查接收者是否收到短信,收到短信表示成功调用连接器。 单击编辑器页面上方的,启用脚本。
  • 背景信息 智能边缘平台(Intelligent EdgeFabric,简称IEF )满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求, 为企业提供边、云协同的一体化边缘计算解决方案。更多介绍,请参见智能边缘平台。 在AstroZero中,通过应用与华为IEF(Intelligent EdgeFabric)对接,实现在5G智慧加油站解决方案中,通过华为云IEF服务来纳管边缘节点,并通过IEF云边通信能力来向边缘节点发送业务命令。
  • 在脚本中调用连接器 在脚本中,调用连接器实现调用IEF的接口。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图4 新建空白脚本 在脚本编辑器中,输入如下代码。 import { Decimal } from 'decimal';import { Error } from 'error';import * as ief from 'ief';export class Input { @action.param({ type: "String", required: true, description: "type" }) project_id: string; // @action.param({ type: "String", required: true, description: "the operation value 2" }) // node_id: string;}export class Output { @action.param({ type: "Object", required: true }) result: Object;}export class Calculator { @action.method({ input: "Input", output: "Output", description: "do a operation" }) run(input: Input): Output { let output = new Output(); let cli = ief.newClient("ief_test"); output.result = cli.getProjectNode(input.project_id); //console.log(output.result); return output; }} 其中,ief.newClient("ief_test")中的“ief_test”为连接器的名称。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在输入参数页签,输入请求参数的项目ID,单击测试窗口右上角的。 { "project_id":"XXXXXXXXXXX"} 在输出参数页签,显示出边缘节点列表,表示执行脚本成功。 单击脚本编辑器页面上方的,启用脚本。
  • 在脚本中调用连接器 在脚本中,通过调用连接器,实现调用ModelArts Pro的接口。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图5 新建空白脚本 在脚本编辑器中,输入如下代码。 import * as modelartspro from 'modelartspro';export class Input { @action.param({ type: "String", required: false, description: "the image url" }) url: string; @action.param({ type: "String", required: false, description: "the base64 coded image" }) image: string; @action.param({ type: "Boolean", required: false, description: "" }) isMultiTemplate: boolean @action.param({ type: "String", required: false, description: "" }) modelId: string}export class Output { @action.param({ type: "string" }) result: string;}export class testModelartsPro { @action.method({ input: "Input", output: "Output", description: "modelartspro test case" }) run(input: Input): void { // 填写实例化的modelartspro连接器名称 let client = modelartspro.newClient("custom_defined_ocr") let result = null result = client.customOCRWithURL(input.url, input.isMultiTemplate, input.modelId); console.log(result) }} 代码modelartspro.newClient("custom_defined_ocr")中“custom_defined_ocr”为连接器的名称,如果连接器名称带有命名空间前缀,代码中也要携带。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部“输入参数”中,设置输入请求参数,单击测试窗口右上角的。 { "url": "https://XXXXXXXX/testModelArtsPro.jpg", "isMultiTemplate": true, "modelId": "0b7f0f28-27e2-11ec-8f30-0255ac100057"} 其中,“url”为图片的URL。 在日志页签,可查看到识别结果,表示执行脚本成功。 单击脚本编辑器页面上方的,启用脚本。
  • 前提条件 使用ModelArts Pro过程中,ModelArts Pro需要访问ModelArts服务的云资源。请先申请开通华为云ModelArts服务,具体操作请参见准备工作。 AstroZero对接ModelArts Pro,使用ModelArts Pro提供的文字识别套件、自然语言处理套件提供的能力。因此需要先申请文字识别套件和自然语言处理套件,具体操作请参见申请行业套件。 已参考获取AK/SK中操作,获取AK(Access Key ID)、SK(Secret Access Key),即访问密钥对。 本节场景是对行程码图片进行识别,需要在ModelArts Pro上创建并部署上线用于对行程码进行识别的模型。由于各省份行程码可能不一致,所以部署的为多模板,具体操作请参见使用多模板工作流开发应用。
  • 背景信息 ModelArts Pro是为企业级AI应用打造的专业开发套件。基于华为云的先进算法和快速训练能力,提供预置工作流和模型,提升企业AI应用的开发效率,降低开发难度。同时,支持客户自主进行工作流编排,快速实现应用的开发、共享和发布,共建开放生态,实现普惠行业AI落地。ModelArts Pro包括自然语言处理套件、文字识别套件、视觉套件等,能够快速响应不同行业、不同场景的AI落地需求。更多关于ModelArts Pro的介绍,请参见ModelArts Pro官方网站。 在AstroZero中,通过配置ModelArts Pro连接器,可实现AstroZero与华为ModelArts Pro对接。对接后可使用ModelArts Pro提供的文字识别套件、自然语言处理套件提供的能力。
  • 在脚本中调用连接器 在脚本中,调用连接器,实现调用ModelArts的接口。 参考开发一个简单脚本实例中操作,创建一个空白脚本。 图3 新建空白脚本 在脚本编辑器中,输入如下代码。 import * as modelarts from 'modelarts';export class Input { @action.param({ type: "String", required: false, description: "the image url" }) url: string; @action.param({ type: "String", required: false, description: "the base64 coded image" }) image: string; @action.param({ type: "String", required: false, description: "" }) apigCode: string @action.param({ type: "String", required: false, description: "" }) modelId: string}export class Output { @action.param({ type: "string" }) result: string;}export class testModelarts { @action.method({ input: "Input", output: "Output", description: "modelartspro test case" }) run(input: Input): void { // 填写实例化的modelartspro连接器名称 let client = modelarts.newClient("testArts") let result = null result = client.modelArtsWithURL(input.url, input.apigCode, input.modelId); console.log(result) return result }} 其中,代码modelarts.newClient("testArts")中“testArts”为连接器的名称。如果连接器名称中带有命名空间前缀,代码中也需要携带。 单击脚本编辑器页面上方的,保存脚本。 保存成功后,单击,运行脚本。 在页面底部“输入参数”中,设置输入请求参数,单击测试窗口右上角的。 { "url": "https://XXXXXXXXX/testmodelarts.jpg", "apigCode": "bec274062225485b95fbcd4d6e8f128a", "modelId": "5ecac550-eefe-4437-9767-57eca07fa91f"} 其中,“url”请设置为图片的URL。 在输出参数页签,可查看到识别的结果。 { "predicted_label": "roses", "scores": [ [ "roses", "0.947" ], [ "daisy", "0.050" ], [ "tulips", "0.002" ], [ "dandelion", "0.000" ], [ "sunflowers", "0.000" ] ]} 单击脚本编辑器页面上方的,启用脚本。
  • 背景信息 ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署AI智能模型,管理全周期AI工作流。更多ModelArts的介绍,请参见ModelArts官方网站。 在AstroZero中,通过配置ModelArts连接器,可实现AstroZero与华为ModelArts对接,用于图像识别、文字识别等AI(人工智能)场景。
  • OAuth鉴权模式 使用OAuth客户端模式鉴权,AstroZero会根据填写的OAuth服务端地址、Client ID和Client Secret,在发送请求前,后台自动获取第三放服务端的access_token, 并在发送请求时携带此access_token,服务端根据携带的access_token进行鉴权。 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“集成”。 单击“连接器”中的“ 连接器实例”,进入连接器实例页面。 在新建或修改Rest服务时,设置鉴权信息。 图1 鉴权设置操作入口 图2 OAuth鉴权模式示例配置
  • HTTPS双向认证鉴权 HTTPS双向认证是客户端和服务端,相互验证对方证书的一种鉴权模式。在调用第三方服务时,AstroZero会携带配置的客户端证书,证书需要向第三方服务申请。目前Rest服务支持配置P12和CRT格式的证书,其他格式需要通过keytool或openssl工具转换。 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“集成”。 单击“连接器”中的“ 连接器实例”,进入连接器实例页面。 在新建或修改Rest服务时,设置鉴权信息。 图5 HTTPS双向认证证书设置
  • JWT鉴权模式 JWT鉴权模式通过客户端和服务端,约定签名密钥。客户端根据密钥生成身份凭证,服务端使用密钥进行解析,信息是经过数字签名的,因此可以被验证和信任。JWT鉴权模式一般用于AstroZero内部服务之前的相互访问。 参考如何登录新版应用设计器中操作,登录新版应用设计器。 在左侧导航栏中,选择“集成”。 单击“连接器”中的“ 连接器实例”,进入连接器实例页面。 在新建或修改Rest服务时,设置鉴权信息。 图4 JWT鉴权模式
共100000条