华为云用户手册

  • Operator规范 Operator包含三类核心文件: 软件包清单:package.yaml 集群服务版本:csv.yaml 自定义资源:crd.yaml # Opeartor结构 {Operator-Package} ├─ xxx.package.yaml #【必选】软件包清单 └─ {version} #【必选】version目录,例如21.7.1 ├─ xxx_csv.yaml #【必选】ClusterServiceVersion集群服务版本文件,可多个。 └─ xxx_crd.yaml #【必选】CustomResourceDefinition自定义资源定义文件,可多个。 更多介绍参见官网Operator Framework。 接入规范说明 父主题: 开源服务包规范
  • 第三方目录Raw 第三方目录:{OSC-Package}/raw。raw目录下会包含原始Helm包的内容。其他类型服务包不存在该目录。 {OSC-Package}/ ├─ metadata.yaml #【必选】元数据文件 ├─ manifests/ #【必选】资源目录 ├─ raw/ #【可选】第三方目录,支持存放helm原始包 ├─ lifecycle.yaml #【必选】生命周期文件 └─ README.md #【可选】使用说明文件 Helm包可通过oscctl工具方便地转成OSC服务包,也可通过手工转换。其中Helm规范参见Helm规范。 Helm原始包结构 {Helm}/ ├─ Chart.yaml ├─ values.yaml ├─ values.schema.json ├─ charts/ └─ templates └─ xxx.yaml 经转换后的OSC服务包结构 {OSC-Package}/ ├─ metadata.yaml #【必选】新增元数据文件 ├─ manifests/ #【必选】新增资源目录 │ ├─ helmrelease_crd.yaml #【必选】创建HelmRelease CRD文件 │ └─ helmrelease_csd.yaml #【可选】新增资源增强配置 ├─ raw/ #【可选】第三方目录 │ ├─ Chart.yaml │ ├─ values.yaml │ ├─ values.schema.json │ ├─ charts/ │ └─ templates │ └─ xxx.yaml ├─ lifecycle.yaml #【必选】生命周期文件 └─ README.md #【可选】使用说明文件 转换说明 新增第三方目录raw,将Helm原始包内容全部放到该目录中。 新增元数据文件metadata.yaml,该文件内容包含Chart.yaml,具体规范参见元数据Metadata。 新增资源目录manifests,根据Chart.yaml的name创建对应的CRD和CSD。 新增自定义资源文件helmrelease_crd.yaml,该文件以下划线命名,由工具生成,无需改动。参见HelmRelease CRD示例。 新增自定义服务文件helmrelease_csd.yaml,可按需配置相关服务能力。 特别说明 Helm类型包转成OSC服务包与Operator类型不相同。转换过程中会根据Helm Chart name自动创建对应的CRD,版本试用版v1。 CRD中group固定值helm.osc.huawei.com,kind对应chart name。 如果metadata.yaml中修改了服务包名、版本等内容,需要同步修改raw内的helm包中Chart.yaml内容。 HelmRelease CRD示例(crd.yaml) apiVersion: apiextensions.k8s.io/v1 # 默认创建v1版本的CRD kind: CustomResourceDefinition metadata: name: rediss.helm.osc.huawei.com # 命名规则:{sepc.names.plural}.{spec.group} spec: group: helm.osc.huawei.com # 固定值,helm.osc.huawei.com names: kind: RedisHelmRelease # 命名规则:{chartname}+HelmRelease listKind: RedisHelmReleaseList # 命名规则:{spec.names.kind}+List singular: redis # {chartname}的小写形式 plural: rediss # singular的复数 scope: Namespaced version: v1 versions: - name: v1 served: true storage: true schema: openAPIV3Schema: properties: apiVersion: description: '' type: string kind: description: '' type: string metadata: properties: name: type: string type: object spec: description: '' properties: values: description: Values defines the running options of helm release type: object x-kubernetes-preserve-unknown-fields: true type: object type: object 父主题: 服务包规范
  • Helm规范 Helm的包格式被称为chart,描述Kubernetes相关资源的文件集合。chart包含: Chart.yaml values.yaml values.schema.json charts目录 templates目录 {Helm}/ ├─ Chart.yaml #【必选】包含了chart信息文件,包括api版本、名称、描述、图标、类型、注释 ├─ values.yaml #【必选】参数值文档,为templates下的文档配置参数值 ├─ values.schema.json #【可选】一个使用JSON结构的values.yaml文件 ├─ charts/ #【可选】包含chart依赖的其他chart └─ templates #【必选】模板目录,当和values 结合时,可生成有效的Kubernetes manifest文件 └─ xxx.yaml #【可选】Helm包的Kubernetes manifest若干文件 更多介绍参见官网Helm。 上传至OSC的helm包中,Chart.yaml文件的icon字段不生效,仅支持以图片形式配置logo,配置方式为:在与Chart.yaml同级的目录中增加logo.png(或jpg,svg后缀)命名的图片。 接入规范说明 父主题: 开源服务包规范
  • 接入流程 用户参考附录oscctl工具使用中的链接下载oscctl工具oscctl-22.8.18.tar.gz,并放在linux执行机中。 执行下面命令解压服务。 # 解压工具包 $ tar -xvzf oscctl-22.8.18.tar.gz oscctl-22.8.18/ oscctl-22.8.18/linux-x86_64/ oscctl-22.8.18/linux-x86_64/oscctl oscctl-22.8.18/win-amd64/ oscctl-22.8.18/win-amd64/oscctl.exe $ chmod +x oscctl-22.8.18/linux-x86_64/oscctl $ ./oscctl-22.8.18/linux-x86_64/oscctl convert -i datadog-operator.zip -o datadog-operator-0.3.2.zip Successfully converted original package to OSC package! 查看转换后的服务包结构。 datadog-operator-0.3.2 ├── lifecycle.yaml # operator生命周期文件,helm类型内容为空 ├── manifests │ ├── datadogmetric_crd.yaml # datadogmetric crd文件 │ ├── datadogmetric_csd.yaml # datadogmetric crd对应的csd文件 │ ├── datadogagent_crd.yaml # datadogagent crd文件 │ └── datadogagent_csd.yaml # datadogagent crd对应的csd文件 ├── metadata.yaml └── raw # raw目录下存放的是原始的operator包 ├── 0.0.3 │ ├── datadog-operator.v0.3.2.clusterserviceversion.yaml │ ├── datadoghq.com_datadogagents_crd.yaml │ ├── datadoghq.com_datadogmetrics_crd.yaml └── datadog-operator.package.yaml 生成的服务包如果需要配置OSC平台运维功能,请参考对接运维能力(可选);如果不需要配置OSC平台运维功能,请直接查看《OSC服务使用者指南》了解如何上传服务包进行使用。
  • 对接原理 开源的Prometheus是目前业界广泛应用的监控指标采集系统,其服务端可作为时间序列数据库,采集客户端应用不同时间周期上报的监控指标数据并存储,还可用来查询数据和图形化展示数据趋势。其针对不同的应用,提供了多种客户端exporter实现,用来上报监控指标,如:https://github.com/prometheus/jmx_exporter。 华为云容器洞察引擎CIE服务兼容Prometheus提供应用指标采集和监控服务,开发者只需要配置映射规则,OSC平台使用内置的ops-operator插件来匹配工作负载(包括Deployment、StatefulSet或DaemonSet)资源的标签,自动发现需要上报监控指标数据的应用,并通过sidecar方式,为应用监控指标数据注入instance_id字段,用以区分不同实例的指标,并分层分级生成监控仪表盘,图形化展示监控数据。
  • 对接流程 获取OSC规范开发的服务包,如果只有原生的helm或OperatorFramework包,可以参考章节服务包转换进行转换。 在目录manifests/vendor下新增配置文件monitor_config.yaml 配置具体样例如下: apiVersion: osc.io/v1 kind: MonitorConfig metadata: name: helm-release-1ughua-uxkrcb spec: monitorConfigItems: - labelSelector: monit-test: monit-test prometheus: exporterPort: 9404 displayOptions: levels: - name: "Pod" localeID: "ops.monitor.kafka.level.pod-slave" groupLabel: pod selectedMetrics: - "kafka_server_ReplicaManager_Value" metrics: - title: "Leader Count" localeID: "ops.monitor.kafka.memory.usage" expr: 'kafka_server_ReplicaManager_Value{name="LeaderCount",kubernetes_pod="$",}' unitType: "" 斜体字的部分则需要根据服务的实际情况进行适配更改。具体配置参数可见下面表格说明。 参数名 含义 类型 是否必填 备注 apiVersion 配置版本 string 是 固定为osc.io/v1 kind 配置种类 string 是 固定为MonitorConfig metadata.name 配置名 string 否 监控配置默认名称 须知: 目前对于monitor_config.yaml文件,一个服务包内有且仅有一个,目前该名字没有实际业务意义。在服务包下发时会根据服务包名称等,由OSC自动生成一个在Kubernetes集群该Namespace下面唯一的名字。 labelSelector 匹配实例的标签 string数组 是 同一operator CRD下也可能存在多个工作负载资源,需要通过label selector与应用实例label相关联,从而才可过滤出准确应用的数据并在界面展示。 exporterPort 普罗接口 integer 是 服务已实现的prometheus指标采集端口,此接口为容器运行时内部监听的端口。 说明: 需要使用metrics形式进行相关指标的上报,即通过URL http://{Pod IP}:{exportPort}/metrics的形式对相关监控指标上报。具体指标书写请参考如下链接或步骤4中内容: https://prometheus.io/docs/concepts/metric_types/ https://prometheus.io/docs/concepts/data_model/ https://prometheus.io/docs/prometheus/latest/configuration/configuration/ levels.name 监控维度名 string 否 显示为不同层级的页签名称,如:Instance、Pod等。 localeID 指标国际化展示 string 否 暂未启用,后续支持国际化展示。 groupLabel 该层级的聚合参数 string 否 如果填写,则自动在expr中注入根据该labelkey+占位符的筛选条件。 说明: 对于聚合条件为pod的,需要设置为pod。 selectedMetrics 指标数组 string数组 否 与groupLabel配套,用于确认groupLabel指定的key值可以通过哪些指标获取全部value。 title 监控名 string 否 监控图显示名称,长度不超过64字节 expr 监控语句 string 否 原生普罗监控语句promsql unitType 监控数据单位 string 否 unitType可以是""(默认无单位,按原数据展示),byte(根据数量展示b,kb,mb,tb),time(us,ms,s,min,hour,day,month),条,个,percentage(%)等等,长度不超过10字节。 在manifests/xxx_csd.yaml文件中增加引用监控能力的配置。 apiVersion: osc.io/v1beta1 kind: CustomServiceDefinition metadata: name: helmrelease-csd spec: CRDRef: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition capabilityRequirements: - apiVersion: osc.io/v1 kind: MonitorConfig defaultPath: vendor/monitor_config.yaml 下面以一个实际监控指标为样例进行展示 apiVersion: osc.io/v1 kind: MonitorConfig metadata: name: hwfka-monitor spec: monitorConfigItems: - labelSelector: # ops operator 根据 label 决定 Deployment、StatefulSet或DaemonSet 是否注入 sidecar osctest.huawei.com/service_provider: hwfka osctest.huawei.com/component: broker crd: hwfkas.osctest.huawei.com prometheus: exporterPort: 9404 displayOptions: levels: - name: "实例" localeID: "ops.monitor.redis.level.instance" metrics: - title: "Topic 总数" # 实例中的 topic 总数 localeID: "ops.monitor.redis.memory.usage" expr: 'sum(kafka_controller_KafkaController_Value{name="GlobalTopicCount"})' unitType: "" - title: "分区总数" # 实例中的分区总数(创建 topic 时设置的分区数,即仅 leader 数) localeID: "ops.monitor.redis.memory.usage" expr: 'sum(kafka_controller_KafkaController_Value{name="GlobalPartitionCount"})' unitType: "" - title: "副本总数" # 实例中的副本总数(含 leader) localeID: "ops.monitor.redis.memory.usage" expr: 'sum(kafka_server_ReplicaManager_Value{name="PartitionCount"})' unitType: "" - name: "Topic" localeID: "ops.monitor.redis.level.pod-slave" # console 通过查询语句 group(kafka_server_BrokerTopicMetrics_Count{topic!=""}) by (topic) 获取所有 Topic 列表 groupLabel: topic selectedMetrics: - 'kafka_server_BrokerTopicMetrics_Count{topic!=""}' metrics: - title: "生产消息数量(条)" # 每个 topic 的生产消息数量 localeID: "ops.monitor.redis.memory.usage" expr: 'sum(kafka_server_BrokerTopicMetrics_Count{name="MessagesInPerSec"}) by (topic)' unitType: "" - title: "生产消息速率(条/秒)" # 每个 topic 的生产速率消息数量(每秒) localeID: "ops.monitor.redis.memory.usage" expr: 'sum(kafka_server_BrokerTopicMetrics_OneMinuteRate{name="MessagesInPerSec"}) by (topic)' unitType: "" 服务需要对接监控能力,必须确保服务对外提供/metrics接口,并遵循prometheus规范将指标数据通过此接口对外提供。
  • serviceEntityDependencies 配置服务依赖需要在csd文件中配置serviceEntityDependencies。 仅支持对公有服务的依赖,不支持依赖私有服务。 defaultPath为依赖实例的配置文件,会覆盖服务自带配置。 serviceEntityDependencies配置样例 # 服务依赖 serviceEntityDependencies: - service: rdsService # 依赖operator类型的RDS实例 apiVersion: rds.io/v1alpha1 kind: rds defaultPath: vendor/rds_provider.yaml - service: redisService # 依赖Helm类型的Redis实例,apiVersion、kind不配置 defaultPath: vendor/redis_service_values.yaml # redis的values.yaml文件 表3 serviceEntityDependencies配置 参数名称 参数描述 参数示例 必填 service 所依赖的服务的名称 rdsService 是 apiVersion 所依赖的服务的配置版本 rds.io/v1alpha1 否 kind 所依赖的服务的配置类型 rds 否 defaultPath 默认配置文件路径,统一配置在vendor目录下。 参见样例 是 服务依赖配置文件样例: rds_provider.yaml apiVersion: osc.io/v1 kind: rds spec: ... redis_service_values.yaml apiVersion: osc.io/v1 kind: redis spec: global: imageRegistry: "" imagePullSecrets: [] clusterDomain: cluster.local resources: limits: {} requests: {}
  • descriptors descriptor字段用于配置UI控件,提升部署服务的用户体验,对服务参数进行控件增强,包括服务规格spec和服务状态status。该控件为可选项。 descriptors样例: # UI控件 descriptors: spec: - description: "kafka实例个数" displayName: 集群大小 path: {kafka.replicas} restriction: scenes: - CCE x-descriptors: - "urn:alm:descriptor:com.tectonic.ui:podCount" status: - description: "kafka实例个数" displayName: 集群大小 path: {kafka.replicas} restriction: scenes: - CCE x-descriptors: - "urn:alm:descriptor:com.tectonic.ui:podCount" 表4 descriptors配置 参数名称 参数描述 必填 displayName: 控件显示名称 是 description 控件显示描述 是 path 控件对应字段,描述的对象上字段的点分隔路径,例如globalConfig1.field1 是 restriction 如果不同的部署的场景需要不同的控件配置,可配置此字段,支持CCE、UCS两种配置,分别表示云容器引擎和华为云UCS场景 否 x-descriptors 控件类型,具体参考配置表单控件了解相关配置 是
  • versionDefinition 实例版本定义配置是在csd文件中配置versionDefinition。 versionDefinition配置tag样例如下。 versionDefinition: mode: tag path: spec.kafka.image tags: - 1.1.1 - 2.2.2 - 3.3.3 - 9.9.9 versionDefinition配置url样例如下。 versionDefinition: mode: url path: spec.kafka.image tags: - 1.1.1 - 2.2.2 - 3.3.3 - 9.9.9 defaultConfiguration: |-{ .... ... "spec": { "kafka": { "config": { }, "image": "example:1.1.1" "nodeIps": [], "nodeSelector": {}, "podAntiAffinity": true, "ports": { "bootstrapServer": 9092, "prometheus": 9404 }, "replicas": 3, "storageSize": "8Gi" } } } 表5 versionDefiniton配置 参数名称 参数描述 参数示例 必填 description 单击升级时的提示信息,知会用户进行实例升级的注意事项 您可以直接升级到最新版本,升级期间会发生5s之内的连接闪断,请确认应用程序具备重连机制 否 mode 实例的镜像格式,当前仅支持url、tag这两种格式 取值范围固定为[url、tag] mode配置为url,则会将上述所示defaultConfiguration字段下的"image"字段的值替换为"example:2.2.2" mode配置为tag后,则会将上述所示defaultConfiguration字段下的"image"字段的值替换为"2.2.2" 必填, 当mode配置之后,path和tags就成了必填项 path 实例镜像替换路径,位于defaultConfiguration字段下的值 例如,path值配置为"spec.kafka.image",则需要替换的值是"example:1.1.1" 必填 tags 实例镜像tag版本号列表。建议使用引号,否则YAML会将类似2.0的tag版本号识别为浮点数。 注意: 配置在tags下的实例版本号默认都是兼容的实例版本,即这些版本之间能进行互相升级。不兼容的版本号配置在tags列表下会造成升级完成之后实例功能有问题。 以实例镜像文件为test-x86_64-2.0.1.20210929123638.tar为例, 实例镜像文件通过docker load -i test-x86_64-2.0.1.20210929123638.tar执行完成之后,会在控制台回显如下信息: Loaded image: test-x86_64:2.0.1.20210929123638 则tag版本号为2.0.1.20210929123638,如果有多个版本镜像,则都可以通过此方式获取tag版本号, 然后将这些tag版本号配置在tags下面 必填 对于lifecycle文件中配置了upgrade字段的服务包,需要确保versionDefinition字段与被升级的operator的所管理的实例相兼容,否则会导致上传服务包或升级服务operator失败,具体规则如下: 1. 在上传服务包阶段,upgrade.replaces字段指定的被升级operator的versionDefinition字段为空时,允许上传服务包;不为空时,新的versionDefinition.tags需要与其有交集才能发布。 2. 在服务operator升级阶段,被升级的operator当前管理的实例版本必须都在新的versionDefinition.tags列表中,否则不允许升级,需要确认新版本的operator是否能够管理这些实例,如果可以,则修改versionDefinition后重新上传服务包,否则需要删除不兼容的实例后再升级。 示例:csd.yaml完整示例,以kafka为例。 apiVersion: osc.io/v1beta1 kind: CustomServiceDefinition metadata: name: kafka-csd spec: # 通过CRDRef将此CSD跟同一文件夹下的某个CRD相关联 CRDRef: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: kafkas.osc.huawei.com # CRD显示名字 displayName: kafka # CRD 描述 description: kafka Description # CRD的角色 role: serviceEntity # 公共能力引用(只针对平台能力引用) capabilityRequirements: - apiVersion: osc.io/v1 # 引用平台监控能力 kind: MonitorConfig defaultPath: vendor/monitor_config.yaml - apiVersion: osc.io/v1 # 引用平台日志能力 kind: LogConfig defaultPath: vendor/log_config.yaml # 服务依赖 serviceEntityDependencies: - service: rdsService apiVersion: rds.io/v1alpha1 # 依赖operator格式的RDS kind: rds defaultPath: vendor/rds_provider.yaml - service: redisService # 依赖Helm格式的redisService defaultPath: vendor/redis_service_values.yaml # redis的values.yaml文件 # UI控件 descriptors: spec: - description: "" displayName: "" path: {crd-name.replicas} x-descriptors: - "urn:alm:descriptor:com.tectonic.ui:podCount" status: - description: "" displayName: "" path: {crd-name.replicas} x-descriptors: - "urn:alm:descriptor:com.tectonic.ui:podCount" # CRD对应的CR样例 defaultConfiguration: |-{ "apiVersion": "osc.huawei.com/v1", "kind": "Kafka", "metadata": { "annotations": { "osc.io/occupied-port": "135,139" }, "name": "kafka-sample", "namespace": "kfk", "finalizers": [ "kafka.finalizers.osc.huawei.com" ] }, "spec": { "kafka": { "config": { }, "image": "xxx/xx/aa:1.0" "nodeIps": [], "nodeSelector": {}, "podAntiAffinity": true, "ports": { "bootstrapServer": 9092, "prometheus": 9404 }, "replicas": 3, "storageSize": "8Gi" } } } # 服务实例升级 versionDefinition: description: 您可以直接升级到最新版本,升级期间会发生5s之内的连接闪断,请确认应用程序具备重连机制 mode: url path: spec.image tags: - "2.7.0" - "2.7.1" - "2.7.2"
  • capabilityRequirements 配置能力引用需要在csd文件中声明capabilityRequirements。 能力引用只支持引入operator类型的平台能力,即平台提供的包括监控、日志等的公共能力。 可通过defaultPath配置文件路径,统一配置到vendor目录下。 capabilityRequirements配置样例 # 能力引用配置 capabilityRequirements: - apiVersion: osc.io/v1 # 引用平台监控capability kind: MonitorConfig defaultPath: vendor/monitor_config.yaml - apiVersion: osc.io/v1 # 引用平台日志capability kind: LogConfig defaultPath: vendor/log_config.yaml 表2 capabilityRequirements配置 参数名称 参数描述, 参数示例 必填 apiVersion 所引用的能力的配置版本,固定值osc.io/v1 osc.io/v1 是 kind 所引用的能力的配置类型,范围列表MonitorConfig|LogConfig MonitorConfig 是 defaultPath 默认配置文件路径,路径为vendor目录 vendor/monitor_config.yaml 是
  • role 在Openshift Operator Framework规范中,开发者定义的各类CRD资源都是对等的,没有更进一步的划分,但从实际的功能属性上来说,很容易识别出,不同CRD所处的层级和使用场景并不相同,以etcd为例,可能定义有代表服务主体本身的etcd CRD,以及表示etcd备份的backup CRD,两者客观上存在从属和依赖关系。所以,平铺的定义方式并不能很好的体现这种资源的层级和保证用户体验,在这个维度进行了细化,把CRD的功能和应用场景,按其角色分为以下两类: serviceEntity: 服务实体类资源,即提供如etcd实例CRD定义。 operation:运维功能类,服务实例安装后以独立页签的形式展示,用户可以浏览已有的operation实例以及主动下发新的operation实例,如etcd backup CRD。 其中operation属于服务实体资源的能力(Capability)范畴,与serviceEntity相比只是行为方式上有所不同。 特别地,认为Helm服务的场景是一个最基本的,只包含一个serviceEntity资源定义的场景。Operator则可以包含多个不同角色的CSD,服务包在转换为OSC服务包后,用户需要对不同角色的CRD对应的CSD文件进行定制化的配置。
  • vendor目录 公共能力目录:{OSC-Package}/manifests/vendor,用于存放平台提供的能力配置文件,用于manifests目录中的CRD引用。 公共能力目录结构: {OSC-Package}/ ├─ metadata.yaml ├─ manifests/ #【必选】新增资源目录 │ ├─ xxx_crd.yaml │ └─ xxx_csd.yaml │ └─ vendor/ #【可选】公共能力目录 │ ├─ monitor_config.yaml #【可选】监控对接的默认配置,参见如何配置监控 │ ├─ log_config.yaml #【可选】日志对接的默认配置,参见对接配置日志 │ └─ xxx_config.yaml #【可选】未来支持更多公共能力,如自定义指标、弹性伸缩、多云部署等 ├─ raw/ ├─ lifecycle.yaml └─ README.md 表1 vendor目录 名称 文件 描述 类别 必选 监控配置文件 monitor_config.yaml 对接平台的指标采集能力,可配置指标采集的维度,指标名称,指标聚合规则等,详情参考如何配置监控。 文件 否 日志配置文件 log_config.yaml 对接平台的日志采集能力,可配置日志采集路径,详情参考对接配置日志。 文件 否 父主题: 资源集合Manifests
  • 查看实例信息 登录OSC控制台,在左侧导航栏选择“服务实例”。 查询服务实例。 选择实例的部署场景(CCE或UCS),再通过条件进行筛选。 图1 查询服务实例 支持通过实例名称、区域、集群名称、命名空间和状态进行服务实例查询,直接在搜索栏选择对应条件和关键字即可。 单击实例名称,进入实例的基本信息页面。 服务实例的通用信息 参数 说明 服务版本 实例所属的服务的版本。 所属服务 实例所属的服务。 状态 当前实例的运行状态。 区域 实例所在的区域,诸如“上海一”、“北京四”等。 集群 实例所在的容器集群名称。 命名空间 实例所在的容器集群的命名空间。 创建时间 实例的创建时间。 描述 服务实例部署时填写的信息,一般用来说明该实例用于什么场景。 其他信息 为各个服务自定义的展示内容,以Redis为例,展示的元素包含实例信息、访问地址、配置修改等信息,并提供了公网访问和集群扩容能力。 父主题: 服务实例日常操作
  • 服务插件管理 OSC中有服务管理和运维能力两类插件,服务管理插件用来管理服务实例的生命周期,由服务提供商提供,当集群首次部署对应服务实例时,会自动安装对应服务的管理插件。服务运维能力插件由OSC提供,当部署的服务声明了诸如日志、监控等运维能力配置时,集群中如果没有对应的运维能力插件,OSC会自动安装。 用户申请CIE公测并审批通过,才能开通运维能力插件。 日志对接AOM服务,需要安装icagent插件。 事件对接CIA服务,请确保CIA插件正常安装。 管理服务插件 维护服务插件
  • 执行实例运维动作(可选) 服务在运行过程中,一般会对关键数据进行备份操作,在服务异常后可通过备份数据进行恢复,在云原生服务中心中称之为运维动作。服务如定义了独立的运维动作,则会在实例详情界面展示出一个“Action”页签,单击可展示服务实例当前可执行的运维操作。以Redis为例,提供了两个运维动作,即备份和恢复,选中后单击“创建”按钮,则可以创建一个备份或者恢复动作,创建完成后则可在右侧查看任务状态。 父主题: 服务实例日常操作
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 支持云审计的关键操作 表1 云审计服务支持的OSC操作列表 操作名称 资源类型 事件名称 删除仓库绑定关系 relation UnBindRegistryRelation 建立仓库绑定关系 relation BindRegistryRelation 删除服务版本 service-version DeleteServiceVersion 删除服务 service DeleteService 上传服务包 file UploadServiceVersion 更新服务 service UpdateAttributesInService 订阅服务 subscription SubscribeService 更新订阅 subscription UpdateSubscription 退订 subscription DeleteSubscription 冻结订阅 freeze FreezeSubscription 解冻订阅 unfreeze UnfreezeSubscription 创建实例 instance CreateInstance 更新实例 instance UpdateInstance 删除实例 instance DeleteInstance 创建代理 agency CreateAgency 更新插件 plugin UpdatePlugin 重建插件 plugin RecreatePlugin 更新服务接入组件 clusterbindings UpgradeClusterBinding 删除服务接入组件 clusterbindings DeleteClusterBinding 服务预上架 file PreRelease 服务上架 service ApproveService 删除服务 service DeleteService 删除指定服务版本 version DeleteVersionPackage 失败服务重试 version RetryRelease 服务锁定操作 service LockSpecifications 创建云服务应用资源 resource AddResources 更新云服务应用资源状态 resource UpdateResourcesStatus 更新云服务应用资源元数据 resource UpdateResources 添加合作伙伴 partner SubmitPartnerApplication
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 name String 存证名称 最小长度:4 最大长度:255 ev_id String 存证ID 最小长度:32 最大长度:64 file_hash String 文件内容Hash, 即存证指纹 最小长度:32 最大长度:64 block_hash String 区块哈希 最小长度:32 最大长度:64 block_height Integer 区块高度 最小值:0 最大值:9223372036854775807 create_time String 创建时间,单位:毫秒 最小长度:13 最大长度:15 tx_id String 交易ID 最小长度:32 最大长度:64 状态码: 400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:1 最大长度:20 error_msg String 错误描述 最小长度:1 最大长度:512
  • URI GET /v1/{project_id}/chains/{chain_id}/evidence/verification 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户从IAM申请到的projectid,一般为32位字符串 最小长度:32 最大长度:64 chain_id 是 String 数字资产链实例ID 最小长度:32 最大长度:64 表2 Query参数 参数 是否必选 参数类型 描述 index 否 String 通用搜索条件:取值为存证ID、证据指纹、交易ID中任意1个值 最小长度:32 最大长度:64 file_hash 否 String 证据指纹搜索条件:取值为证据指纹 最小长度:32 最大长度:64 tx_id 否 String 交易ID搜索条件:取值为交易ID 最小长度:32 最大长度:64 ev_id 否 String 存证ID搜索条件:取值为存证ID 最小长度:32 最大长度:64
  • 引用数据 将其他项目或OBS桶中的数据,引用到本项目,不可在本项目中操作该数据。 单击数据中心右上角“引用”。 选择需要引用的项目以及项目中的数据,或者选择待引用的OBS桶路径,先选择OBS桶所在区域,再选择OBS桶名称,支持选择不在同一区域的OBS桶。 图3 引用数据 单击“确定”,引用其他项目中的数据至本项目。 引用的数据和项目将显示在左侧的数据列表中。 图4 引用的数据 引用OBS类型数据时,如果数据在OBS中的存储类型为“归档存储”,则将该数据引用过来后,该数据不能用于创建作业,并不可下载。 平台系统管理员在自己的所有者、管理员、操作者项目可以引用OBS类型数据。平台系统管理员在自己的所有者、管理员、操作者项目可以解除引用OBS类型数据。其他角色的用户仅能使用引用进来的OBS类型数据。
  • 引用数据 将其他项目或OBS桶中的数据,引用到本项目,不可在本项目中操作该数据。 单击“添加数据”,类型选择“引用”。 图3 引用数据 选择需要引用的项目以及项目中的数据,或者选择待引用的OBS桶路径,先选择OBS桶所在区域,再选择OBS桶名称,支持选择不在同一区域的OBS桶。 单击“确定”,引用其他项目中的数据至本项目。 引用的数据和项目将显示在左侧的数据列表中。 图4 引用的数据 引用OBS类型数据时,如果数据在OBS中的存储类型为“归档存储”,则将该数据引用过来后,该数据不能用于创建分析作业、数据库导入数据,并不可下载、归档。 引用外部OBS桶的数据时,在页面左侧数据栏中,将显示出完整的外部桶目录结构,对于非引用路径的数据,不支持数据归档操作。例如,桶中有文件,路径为a/b/c,引用c文件,c文件的父目录也会显示在左侧数据栏中,但目录a, 目录b 不支持数据归档。 平台系统管理员在自己的所有者、管理员、开发者、上传者项目可以引用OBS类型数据。平台系统管理员在自己的所有者、管理员、开发者、项目可以解除引用OBS类型数据。其他角色的用户仅能使用引用进来的OBS类型数据。
  • 恢复数据 平台支持数据的恢复机制,您可以将归档的核心数据进行恢复,避免造成损失。 数据归档成功后,可以在“归档”页面查看归档记录,并进行恢复、删除操作。归档恢复时,您可以将数据恢复至本项目或有权限的其他项目。 数据归档成功后,选择“归档”页签。 图10 选择归档页签 选择需要恢复的数据,单击操作列“恢复”。在恢复归档数据页面,选择需要恢复数据的位置和数据。 图11 选择恢复数据的位置 单击“确定”。
  • 禁止/允许删除数据 您可以对某个数据设置禁止删除。设置禁止删除后,该目录只能添加数据,不支持删除数据。也可以通过“允许删除”取消禁止删除设置。 图7 开启禁止删除数据 支持设置最多15个数据的禁止删除状态。 如果平台或者父目录设置禁止删除状态,则对应的数据根路径或者子路径均为禁止删除状态,子路径不支持同时设置允许删除状态;如果平台或者父目录设置允许删除,则之前子路径设置的禁止删除权限失效,全部子路径允许删除。
  • 添加项目成员 前提条件 平台管理员首先通过“用户管理”功能添加平台用户,才能将该用户添加至项目中。 创建用户的详细方法请参见创建平台用户。 存在一个创建好的项目。 操作步骤 添加项目成员有两种不同的方法,请任选其中一种方法操作。 方法一 单击项目名称,进入项目“设置”页。 单击“添加”,添加成员。 图1 添加成员 输入已添加至平台的用户的全称。 图2 输入用户名全称 单击“添加”,设置用户角色。详细成员角色介绍请参见表1。 图3 设置成员角色 单击“确认”,将用户添加至项目中。 方法二 在项目列表中,单击“操作”列“分享”。 图4 分享项目 输入已添加至平台的用户的全称。 图5 输入用户名全称 单击“添加”,设置用户角色。详细成员角色介绍请参见表1。 图6 设置成员角色 单击“确认”,将用户添加至项目中。
  • 响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 face_set_id String 人脸库ID。 调用失败时无此字段。 face_set_name String 人脸库名称。 调用失败时无此字段。 faces Array of FaceSetFace objects 人脸库当中的人脸结构,详见FaceSetFace。 调用失败时无此字段。 表5 FaceSetFace 参数 参数类型 描述 bounding_box BoundingBox object 人脸在图像中的位置。 BoundingBox结构见BoundingBox。 external_fields Object 用户添加的额外字段。 external_image_id String 人脸所在的外部图片ID。 face_id String 人脸ID,由系统内部生成的唯一ID。 表6 BoundingBox 参数 参数类型 描述 width Integer 矩形框宽度。 top_left_y Integer 矩形框左上角纵坐标。 top_left_x Integer 矩形框左上角横坐标。 height Integer 矩形框高度。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参考错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见认证鉴权。 Content-Type 是 String 发送的实体的MIME类型,参数值为“application/json”。 Enterprise-Project-Id 否 String 企业项目ID。FRS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用,进行分账,当前仅支持按需计费模式。 获取方法:进入“企业项目管理”页面,单击企业项目名称,在企业项目详情页获取Enterprise-Project-Id(企业项目ID)。 说明: 创建企业项目后,在传参时,有以下三类场景。 携带正确的ID,正常使用FRS服务,账单的企业项目会被分类到企业ID对应的企业项目中。 携带格式正确但不存在的ID,正常使用FRS服务,账单的企业项目会显示对应不存在的企业项目ID。 不携带ID或格式错误ID(包含特殊字符等),正常使用FRS服务,账单的企业项目会被分类到"default"中。 表3 请求Body参数 参数名 参数类型 是否必选 说明 image_url String 与image_file、image_base64三选一 图片的URL路径,目前仅支持华为云上OBS的URL,使用时只需保证FRS有权限读取该OBS桶的数据。开通读取权限的操作请参见服务授权。 image_file File 与image_url、image_base64三选一 本地图片文件,图片不能超过8MB,建议小于1MB。上传文件时,请求格式为multipart。 image_base64 String 与image_file、image_url三选一 图像数据,Base64编码,要求: Base64编码后大小不超过8MB,建议小于1MB。 图片为JPG/JPEG/BMP/PNG格式。 external_image_id String 否 用户指定的图片外部ID,与当前图像绑定。用户没提供,系统会生成一个。 该ID长度范围为1~36位,可以包含字母、数字、中划线或者下划线,不包含其他的特殊字符。 external_fields Object 否 根据用户自定义数据类型,填入相应的数值。 需在创建人脸库时定义external_fields字段,才可以在添加人脸时使用该字段,参考自定义字段。 single boolean 否 是否将图片中的最大人脸添加至人脸库。可选值包括: true:传入的单张图片中如果包含多张人脸,则只将最大人脸添加到人脸库中。 false:默认为false。传入的单张图片中如果包含多张人脸,则将所有人脸添加至人脸库中。
  • 功能介绍 添加人脸到人脸库中。将单张图片中的人脸添加至人脸库中,支持添加最大人脸或所有人脸。 前提条件: 请确保您已开通人脸搜索服务。 约束限制: 只支持识别JPG、PNG、JPEG、BMP格式的图片。 application/json请求的body中,请使用标准Json格式。 Base64编码中请勿使用回车换行。 系统不保存用户图片。 图片大小小于8MB,由于过大图片会导致时延较长,并且图片信息量不大,建议小于1MB。 图片分辨率小于4096*2160,图片中人脸像素大于80*80,建议120*120以上。 为保证识别效果,人脸图片建议要求如下: 光照大于200lux、无反光强光阴影现象。 人脸无遮挡、整体清晰无拖尾抖动等运动模糊。 侧脸不超过30°、俯仰角小于15°、偏转角小于15°、图片中人脸保持竖置正脸。 其他的约束限制信息请参见约束与限制章节。 建议: 由于过大图片对识别算法精度无明显提升,同时会导致时延较长,建议传入图片小于1MB,一般500KB左右足够。 OBS上存储的图片也建议小于1MB。
  • 参数说明 表1 结果格式说明表 名称 类型 说明 project_id String 项目ID,获取方法请参见获取项目ID/账号名/AK/SK。 image_url String 图片的URL路径,目前仅支持华为云上OBS的URL,且人脸识别服务有权限读取该OBS桶的数据。开通读取权限的操作请参见服务授权。 image_file File 本地图片文件,图片不能超过8MB,建议小于1MB。上传文件时,请求格式为multipart。 image_base64 String 图像数据,Base64编码,要求: Base64编码后大小不超过8MB,建议。 图片为JPG/JPEG/BMP/PNG格式。 similarity Double 人脸相似度,1表示最大,0表示最小,值越大表示越相似。一般情况下超过0.93即可认为是同一个人。 face_set_name String 人脸库名称,1位到64位之间,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符。 face_set_capacity Integer 人脸库最大的容量,填写1万整数倍的数字,例如30000。默认为100000,最大值为100000,可通过创建新的人脸库进行扩容,每个用户可使用10个人脸库,每个人脸库容量为10万个人脸特征。如需扩容单个人脸库规模,请联系华为云客服确认扩容规模与价格。 face_id String 导入人脸时,系统返回的人脸编号,为8个随机生成的大小写字母组成。 external_image_id String 用户指定的图片外部ID,与当前图像绑定。用户没提供,系统会生成一个。该ID长度范围为1~36位,可以包含字母、数字、中划线或者下划线,不包含其他的特殊字符。 external_fields Json 根据用户自定义数据类型,填入相应的数值。创建人脸库时,定义该字段。具体参见自定义字段。 top_n Integer 返回查询到最相似的N张人脸,N默认为10。如果返回前5个,则该变量N的值为5。 取值范围1~1000。 threshold Double 人脸相似度阈值,低于这个阈值则不返回,取值范围[0,1],一般情况下建议取值0.93,默认为0。 offset Integer 从第几条数据读起,默认为0。 limit Integer 读取多少条,默认为5。 video_url String 视频的URL路径,目前仅支持华为云上OBS的URL,且人脸识别服务有权限读取该OBS桶的数据。开通读取权限的操作请参见服务授权。视频要求: 视频Base64编码后大小不超过8MB。 限制视频时长1~15秒。 建议帧率10fps~30fps。 封装格式:mp4、avi、flv、webm、asf、mov。 视频编码格式: h261、h263、h264、hevc、vc1、vp8、vp9、wmv3。 video_file File 本地视频文件。上传文件时,请求格式为multipart。视频要求: 视频文件大小不超过8MB,建议客户端压缩到200KB~2MB。 限制视频时长1~15秒。 建议帧率10fps~30fps。 封装格式:mp4、avi、flv、webm、asf、mov。 视频编码格式: h261、h263、h264、hevc、vc1、vp8、vp9、wmv3。 video_base64 String 视频数据,Base64编码,要求: Base64编码后大小不超过8MB,建议客户端压缩到200KB~2MB。 限制视频时长1~15秒。 建议帧率10fps~30fps。 封装格式:mp4、avi、flv、webm、asf、mov。 视频编码格式: h261、h263、h264、hevc、vc1、vp8、vp9、wmv3。 actions String 动作代码顺序列表,英文逗号(,)分隔。建议单动作,目前支持的动作有: 1:左摇头 2:右摇头 3:点头 4:嘴部动作 action_time String 该参数为动作时间数组拼接的字符串,数组的长度和actions的数量一致,每一项代表了对应次序动作的起始时间和结束时间,单位为距视频开始的毫秒数。 error_code String 调用失败时的错误码。 error_msg String 调用失败时的错误信息。 attributes String 是否返回人脸属性,希望获取的属性列表,多个属性用逗号隔开。目前支持的属性有: 0:人脸姿态 2:年龄 3:人脸关键点 4:装束(帽子、眼镜) 5:笑脸
  • 响应参数 状态码:200 表5 响应Body参数 参数 参数类型 描述 face_set_info FaceSetInfo object 人脸库信息,详见FaceSetInfo。 调用失败时无此字段。 表6 FaceSetInfo 参数 参数类型 描述 face_number Integer 人脸库中已有的人脸特征的数量。 external_fields Object 用户的自定义字段。 face_set_id String 人脸库ID,随机生成的包含八个字符的字符串。 face_set_name String 人脸库名称。 create_date String 创建时间。 face_set_capacity Integer 人脸库最大的容量。创建人脸库时,请求参数如果不设置face_set_capacity参数,默认每个人脸库最大容量为10万个人脸特征。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参考错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 功能介绍 创建用于存储人脸特征的人脸库。您最多可以创建10个人脸库,每个人脸库最大容量为10万个人脸特征。如有更大规格的需求请联系客服。 前提条件: 请确保您已开通人脸搜索服务。 默认情况下,一个人脸库最大可支持10万个人脸特征,一个用户最多可创建10个人脸库,最多可支持10*10万(100万)个人脸特征。 如您的需求超出100万个人脸特征,可通过工单或者服务热线( 4000-955-988或950808 转1)与我们联系,咨询具体解决方案。
共100000条