云服务器内容精选
-
接入流程 用户参考附录oscctl工具使用中的链接下载oscctl工具oscctl-22.8.18.tar.gz,并放在linux执行机中。 执行下面命令解压服务。 # 解压工具包$ tar -xvzf oscctl-22.8.18.tar.gzoscctl-22.8.18/oscctl-22.8.18/linux-x86_64/oscctl-22.8.18/linux-x86_64/oscctloscctl-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 grafana-5.5.7.tgz -o grafana-5.5.7.zipSuccessfully converted original package to OSC package! 查看转换后的服务包结构。 grafana-5.5.7├── lifecycle.yaml # operator生命周期文件,helm类型内容为空├── manifests │ ├── helmrelease_crd.yaml # osc定义helm release的crd服务│ └── helmrelease_csd.yaml # osc附加能力定义文件,需和crd文件联动使用├── metadata.yaml└── raw # raw目录下存放的是原始的grafana helm包 ├── Chart.yaml ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ └── tests │ └── test-connection.yaml ├── README.md └── values.yaml 生成的服务包如果需要配置OSC平台运维功能,请参考对接运维能力(可选);如果不需要配置OSC平台运维功能,请直接查看《OSC服务使用者指南》了解如何上传服务包进行使用。 oscctl工具同样支持直接在windows平台上运行,需要使用windows终端进入,执行oscctl-22.8.18/win-amd64/oscctl.exe命令,参考上面的步骤操作即可。
-
自定义控件 基于CRD自动生成表单的基础能力控件已经能很好的呈现表单输入,但是为了对用户更友好,更好的表达字段的含义以及隐藏一些非面向用户的字段,因此引入了x-descriptors描述符来定义自定义的控件。 x-descriptors描述符主要用于specDescriptors和statusDescriptors定义自定义控件。 specDescriptors: password(密码输入框):支持密码类型字段输入。 select(下拉框):设置一些可选项,简化用户输入成本。 imagePullPolicy(镜像拉取策略):预置了K8S镜像拉取策略。 k8sResourcePrefix(K8S资源对象):支持设置资源类型并查询展示。 podCount(Pod数量):设置pod数量。 fieldDependency(显示联动):支持控件之间的依赖,控制显示隐藏。 resourceRequirements(资源配置):K8S原生资源规则配置,配置request和limit。 hwDnatElbAccess(公网访问):支持通过弹性公网IP访问实例。 hidden(字段隐藏):支持对基于CRD自动生成控件的字段表单隐藏。 statusDescriptors: text(展示文本): 实例的状态字段一般文本展示。 link(访问链接): 公开实例的外部链接。 specDescriptors statusDescriptors 父主题: 表单控件
-
接入规范说明 开源helm服务支持自定义配置服务场景、支持架构等配置,其描述说明定义在Chart.yaml中,具体样例如下: apiVersion: v1description: "nginx \n"maintainers:- email: support@rancher.com name: Rancher Labs Supportname: helm-instance-updateversion: 1.0.2annotations: scenes: CCE,U CS source: ISV architecture: x86_64,aarch64 categories: database devices: CPU,GPU,NPU industries: education,media 参数名称 参数描述 参数示例 必选 source 包来源,取值范围:{ISV, OpenSource, HuaweiProvided},分别表示独立服务供应商、开源服务、华为自有服务,仅支持配置一个值。默认值为OpenSource OpenSource 否 architecture 支持架构列表,取值范围:{x86_64, aarch64},默认值为x86_64 x86_64,aarch64 否 categories 分类列表,范围不限,如"AI, Database",注意,当前同一个服务不同版本须配置相同内容,一旦配置后当前不支持修改 Database 否 devices 实例运行需要使用的硬件设备列表,取值范围:{CPU, GPU, NPU},默认值为CPU CPU,GPU 否 industries 行业列表,范围不限,如"education,media" education 否 scenes 部署平台列表,取值列表:{CCE,UCS},分别表示CCE平台和UCS平台,大小写敏感,默认值为CCE。 CCE,UCS 否 父主题: Helm规范
-
服务包约束 命名规则:只允许包含大小写字母、数字、下划线、中划线及点,且不能以下划线、中划线及点结尾。{service_pack_name}-{version}.zip,例如redis-operator-1.0.0.zip。 包格式:operator类型服务包支持zip格式,helm类型服务包支持tgz格式。 包大小:不超过4MB。 样例(以Kafka为示例): {OSC-Package}/├─ metadata.yaml├─ manifests/│ ├─ xxx_crd.yaml│ ├─ xxx_csd.yaml│ └─ vendor/│ ├─ monitor_config.yaml│ ├─ logs_config.yaml├─ raw/│ ├─ Chart.yaml │ ├─ values.yaml │ ├─ values.schema.json │ ├─ charts/ │ └─ templates │ └─ xxx.yaml└─ lifecycle.yaml
-
资源集合 {OSC-Package}/manifests,用于存放自定义资源文件以及公共能力配置,不同资源用目录进行划分。 资源集合结构: {OSC-Package}/├─ metadata.yaml ├─ manifests/ #【必选】资源集合│ ├─ xxx_crd.yaml #【必选】自定义资源文件│ ├─ xxx_csd.yaml #【可选】自定义服务文件│ └─ vendor/ #【可选】公共能力目录├─ raw/ ├─ lifecycle.yaml └─ README.md 表1 资源集合结构 目录或文件名称 描述 必选 xxx_crd.yaml 服务包的资源,例如kafka、redis,一个服务包可以包含一个或者多个具体资源目录。 是,至少一个 xxx_csd.yaml 自定义服务文件,每个csd文件对应于一个crd文件。 否 公共能力目录 公共能力目录,存放全部资源CR引用的能力配置文件。 否 父主题: 资源集合Manifests
-
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/v1kind: rdsspec: ... redis_service_values.yaml apiVersion: osc.io/v1kind: redisspec: 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/v1beta1kind: CustomServiceDefinitionmetadata: name: kafka-csdspec: # 通过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"
-
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文件进行定制化的配置。
-
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 是
-
简介 云原生服务中心(Operator Service Center,OSC)服务规范旨在给出一种与云平台解耦的云原生服务的标准定义,可描述云原生服务在分布式云的部署和治理。 部署:云原生服务中心联合华为云分布式服务UCS,能够将应用部署到华为云集群、多云集群、本地集群、附着集群、伙伴集群五种场景,实现应用的跨云和全域部署。 治理:容器化只是服务云原生化的第一步,服务部署之后需要治理,不仅包括监控、日志、告警等基本运维能力,还包括弹性伸缩、数据备份恢复、故障迁移、故障恢复等高级运维能力,这些能力是服务高可靠、高可用、高SLA的必要条件。严重依赖云平台的能力,对开发者而言都是重复开发工作,高效快速地赋予服务这些能力是开发者面临的一个难题。 当前最常用的服务管理标准Helm和Operator都没有提供开箱即用的治理能力,为此华为云推出了云原生服务中心OSC,开发者基于服务规范和华为云OSC快速赋予服务全域部署能力和治理能力。
-
服务生命周期 服务包分为商品服务包和私有服务包。商品包只能由具备ISV资质的租户(服务提供商)进行发布,发布前需经过服务包格式校验、镜像扫描、镜像地址替换、服务自验证等流程,经审核后方可上架。上架后的服务可被其他租户(服务使用者)所使用。而私有包可以由任何一个租户发布,发布后仅由租户自己使用。 商品服务生命周期 服务提供商将服务包上传到华为云云市场,发布成为云市场的商品服务。 服务使用者在云市场购买商品服务,该商品服务变成该用户的已订阅服务。 服务使用者通过已订阅服务创建服务实例。 服务使用者可对服务实例进行编辑、升级、监控等治理操作。 服务使用者可针对不需要的服务实例进行销毁。 图2 商品服务生命周期 私有服务生命周期 华为云租户将服务包上传为私有服务。 华为云租户使用私有服务创建服务实例。 华为云租户可对服务实例进行编辑、升级、监控等治理操作。 华为云租户可针对不需要的服务实例进行销毁。 图3 私有服务生命周期
-
特性 云原生服务由业务功能和运维功能两部分组成,业务功能由开发者完成,运维能力可以由开发者自行提供,也可以直接接入OSC服务规范,托管于平台,让平台来提供。后者开发完成的服务,在OSC云平台可以确保业务功能正常并实现自动化运维。 核心特性 指定部署平台:选择服务可部署的应用平台,支持云容器引擎、华为云UCS应用部署平台。 声明式对接平台运维能力:在服务包中添加运维能力对应的配置文件,无需修改业务代码,就能对接监控、日志、弹性伸缩等运维能力。 服务编排:可指定服务之间的拓扑依赖关系。 兼容社区规范:全面兼容Helm和Operator Framework服务管理规范。
-
statusDescriptors statusDescriptor用于描述自定义资源中状态字段的属性,其配置在csd.yaml文件的status字段。statusDescriptors的结构与specDescriptors相似,包括相同的字段。 text x-descriptors: 文本形式公开实例的状态字段。 status: [PATH_TO_THE_FIELD]: [FIELD_VALUE] 例子: - description: 版本 displayName: 版本 path: version x-descriptors: - urn:alm:descriptor:text 2. link 此描述符用来公开实例的外部链接。它需要实例的状态块中的输出格式: status: [PATH_TO_THE_FIELD]: [FIELD_VALUE] 例子: - description: 开启公网访问后,可通过弹性公网IP访问,集群模式暂不支持 displayName: CCE集群内访问地址 path: publishedEndpoint restriction: scenes: - CCE x-descriptors: - urn:alm:descriptor:com.huawei.ui:link 实例status字段具体值信息如下: status: publishedEndpoint: 'http://kafka-1wppvf-broker.default.svc.cluster' 父主题: 自定义控件
-
术语 表1 主要术语 名称 介绍 服务包 符合OSC服务包规范的一系列文件聚合,分为公有包和私有包,分别由服务提供商和一般租户开发。 服务目录 OSC平台提供,对公共服务包进行聚合呈现。 公共能力 由OSC平台提供的监控、运维等能力,所有服务包均可通过在vendor目录中声明配置文件,使用公共能力。 订阅 对已发布的商品服务进行订阅,以备进行服务部署。 服务实例 用户通过部署服务后创建的实例。 自定义资源 服务开发者根据自身需求定制的Kubernetes资源对象。 自定义服务 OSC设计的通过声明式为CRD增强服务能力,包括能力引用,服务依赖,服务访问,交互体验等。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格