# 云原生服务中心 OSC > 云原生服务的生命周期管理平台 ## 产品介绍 - [图解云原生服务中心](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0007.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [什么是云原生服务中心](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0001.md): 云原生服务中心(Operator Service Center,OSC)是面向服务提供商和服务使用者的云原生服务生命周期治理平台,提供大量开箱即用的云原生服务,支持服务的开发、发布、订阅、部署、升级、更新等,帮助您简化云原生服务的生命周期管理。云原生服务中心OSC的有两大用户角色:服务提供商和服务使用者。提供商在云商店完成服务发布后,使用 - [产品优势](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0002.md): 开箱即用OSC联合生态伙伴提供了大量的开箱即用的云原生服务,不仅提供了数据库、消息、缓存等通用中间件,还提供了新技术领域的AI、大数据、高性能计算、边缘等应用,您可以根据业务需要订阅。OSC联合生态伙伴提供了大量的开箱即用的云原生服务,不仅提供了数据库、消息、缓存等通用中间件,还提供了新技术领域的AI、大数据、高性能计算、边缘等应用,您可 - [基本概念](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0004.md): 服务服务是OSC管理的最大粒度实体,由用户上传的服务包,会抽象成为服务用于统一管理。实例服务按用户指定参数部署到具体的Kubernetes集群中,称为服务的一个实例,一个服务可以拥有多个实例。集群集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。您可以理解为集群是“同一个子网中一个或多个弹性云服务器(又称:节点) - [约束与限制](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0005.md): 使用OSC部署服务前,您需要创建或已有一个可用的CCE集群,并确保集群版本在v1.15及以上。每次最多只能添加5个服务包。服务包大小不能超过4MB。支持三种服务包打包压缩格式Operator服务:支持遵循OpenShift包格式,以社区的operator-sdk开发,最终以zip工具打包出的zip的压缩包上传。Helm服务:支持遵循Hel - [与其他云服务的关系](https://support.huaweicloud.com/productdesc-osc/osc_productdesc_0006.md): 云原生服务中心需要与其他云服务协同工作,云原生服务中心和其他云服务的关系如下所示: ## 使用者指南 - [概述](https://support.huaweicloud.com/usermanual-osc/osc_su_0001.md): 服务使用者是搭建企业级应用的用户,在OSC服务中心选择所需服务和规格,进行服务订阅、服务实例部署,从而完成企业级应用的搭建。同时,还可使用服务实例运维视图辅助应用的监控运维。本文档介绍如何订阅服务、创建服务实例、服务运维操作及管理服务插件。商品服务生命周期参见图1。私有服务生命周期参见图2。 - [服务订阅和部署](https://support.huaweicloud.com/usermanual-osc/osc_su_0002.md): 已创建对应的容器基础设施(华为云CCE集群,UCS托管集群),且有足够的节点资源。支持kubernetes集群1.15以上版本。首先根据业务需要,明确服务诉求;然后查看服务目录,选择目标服务和规格;最后订阅服务并创建服务实例。登录OSC控制台,可以使用服务目录页面顶部的搜索框,按照服务名称查询所需的服务。如果不确定服务名,在服务目录页面单 - [私有服务上传和部署](https://support.huaweicloud.com/usermanual-osc/osc_su_0016.md): 已购买容器镜像服务的企业版实例,且实例可以正常运行。准备好待上传的zip或tgz格式的helm/operator-framework/osc规范压缩包以及部署时需要运行的镜像。选择对应的仓库存储源,将服务包和镜像包分别上传到OSC以及SWR仓库中,进行部署即可。选择"容器镜像仓库",用户可直接上传服务包。上传到"容器镜像仓库"的服务包,可 - [查看实例信息](https://support.huaweicloud.com/usermanual-osc/osc_su_0004.md): 登录OSC控制台,在左侧导航栏选择“服务实例”。查询服务实例。选择实例的部署场景(CCE或UCS),再通过条件进行筛选。查询服务实例支持通过实例名称、区域、集群名称、命名空间和状态进行服务实例查询,直接在搜索栏选择对应条件和关键字即可。选择实例的部署场景(CCE或UCS),再通过条件进行筛选。查询服务实例支持通过实例名称、区域、集群名称、 - [查看监控信息](https://support.huaweicloud.com/usermanual-osc/osc_su_0006.md): 云原生服务中心OSC内置了Prometheus监控能力,服务提供商可以按照自身业务情况,配置所需要展示的服务指标,指标详情查看服务介绍或咨询服务提供商。以Kafka为例,监控指标分为实例、Broker、Topic三个维度进行展示。查看监控信息功能仅支持CCE集群。 - [查看服务实例日志](https://support.huaweicloud.com/usermanual-osc/osc_su_0007.md): 服务提供商可以根据自身业务情况,配置所需要采集的业务日志,以便进行问题定位定界。如服务对接了日志采集功能,则在云原生服务中心实例详情界面会展示“日志”页签。用户单击“日志”页签可以查看日志内容。查看服务实例日志功能仅支持CCE集群。 - [升级服务实例](https://support.huaweicloud.com/usermanual-osc/osc_su_0008.md): 服务实例部署时会在容器集群内部创建一个服务插件,由服务插件来管理服务实例,服务插件可以管理多个版本的实例。如果存在新的服务实例版本,则可以在实例详情界面,单击“升级”按钮,选择所需要升级到的版本。如果升级失败则可以单击“回退”按钮,回退到升级前的版本。升级前请确保环境中所有主机处于正常运行状态,且升级过程中不能出现主机断电、断网等的情况。 - [变更实例规格](https://support.huaweicloud.com/usermanual-osc/osc_su_0009.md): 云原生服务中心OSC的服务来自不同的服务提供商,不同类别的服务实例规格变更方式存在差异,具体请咨询服务提供商,以服务实例的展示界面为准。以Kafka为例,展示如何变更实例规格。单击服务实例页面右上角的编辑按钮,编辑服务实例的yaml信息。在弹出的yaml编辑框中找到kafka和zookeeper的资源描述信息,资源使用情况一般为标准的ku - [修改配置参数(可选)](https://support.huaweicloud.com/usermanual-osc/osc_su_0010.md): 部分服务支持实例配置参数动态修改功能,在服务实例详情界面会出现一个“配置修改”页签。单击“配置修改”页签可以查看当前实例的配置并进行修改。不同服务的支持情况请查看服务详情,或咨询服务提供商。 - [执行实例运维动作(可选)](https://support.huaweicloud.com/usermanual-osc/osc_su_0011.md): 服务在运行过程中,一般会对关键数据进行备份操作,在服务异常后可通过备份数据进行恢复,在云原生服务中心中称之为运维动作。服务如定义了独立的运维动作,则会在实例详情界面展示出一个“Action”页签,单击可展示服务实例当前可执行的运维操作。以Redis为例,提供了两个运维动作,即备份和恢复,选中后单击“创建”按钮,则可以创建一个备份或者恢复动 - [管理服务插件](https://support.huaweicloud.com/usermanual-osc/osc_su_0013.md): 登录OSC控制台。进入“我的服务->我的订阅”页面,卡片模式下会展示当前所有服务的实例个数,单击某一服务查看服务详情。单击“服务管理”页签,可查看当前服务管理插件的状态,包括插件所在的区域和容器集群。服务插件状态异常时,可单击操作栏“事件”和“日志”选项,根据日志和kubernetes事件,来分析服务插件异常的原因。当服务提供商发布新版本 - [维护服务插件](https://support.huaweicloud.com/usermanual-osc/osc_su_0014.md): 登录OSC控制台。单击"服务插件"导航栏,进入“服务插件”详情页,单击选择“系统插件”页签,选择对应的区域,可查看当前区域下所有的运维插件,也可以查看指定容器集群下的运维插件。系统插件状态异常时,鼠标移动至异常状态上,可展示插件状态异常的原因。单击“日志”和“事件”,通过kubernetes事件和日志来分析异常状态的根因。系统插件OSC提 - [云审计服务支持的OSC操作列表](https://support.huaweicloud.com/usermanual-osc/osc_su_0017.md): OSC对接了云审计服务,记录了各种与服务相关的操作事件,便于日后的查询、审计和回溯。 - [在CTS事件列表查看云审计事件](https://support.huaweicloud.com/usermanual-osc/osc_su_0018.md): 云审计服务能够为您提供云服务资源的操作记录,记录的信息包括发起操作的用户身份、IP地址、具体的操作内容的信息,以及操作返回的响应信息。根据这些操作记录,您可以很方便地实现安全审计、问题跟踪、资源定位,帮助您更好地规划和利用已有资源、甄别违规或高危操作。事件即云审计服务追踪并保存的云服务资源的操作日志,操作包括用户对云服务资源新增、修改、删 ## 开发者指南 - [概述](https://support.huaweicloud.com/devg-osc/osc_ss_0078.md): OSC服务开发者指南面向OSC服务开发者,帮助开发者能够快速开发一个新服务或者将已有的服务转换成可以部署在OSC平台使用的服务。OSC为客户提供开箱即用的云原生服务,可以通过OSC部署到任意基础设施,包括云容器引擎、华为云UCS等场景。开发者可以遵从OSC自身的服务规范,或者直接使用开源Helm、Operator-Framework规范进 - [OSC服务规范介绍](https://support.huaweicloud.com/devg-osc/osc_ss_0002.md): 云原生服务中心(Operator Service Center,OSC)服务规范旨在给出一种与云平台解耦的云原生服务的标准定义,可描述云原生服务在分布式云的部署和治理。部署:云原生服务中心联合华为云分布式服务UCS,能够将应用部署到华为云集群、多云集群、本地集群、附着集群、伙伴集群五种场景,实现应用的跨云和全域部署。治理:容器化只是服务云 - [OSC服务包介绍](https://support.huaweicloud.com/devg-osc/osc_ss_0004.md): 命名规则:只允许包含大小写字母、数字、下划线、中划线及点,且不能以下划线、中划线及点结尾。{service_pack_name}-{version}.zip,例如redis-operator-1.0.0.zip。包格式:operator类型服务包支持zip格式,helm类型服务包支持tgz格式。包大小:不超过4MB。样例(以Kafka为示 - [元数据Metadata](https://support.huaweicloud.com/devg-osc/osc_ss_0005.md): 元数据文件:{OSC-Package}/metadata.yaml,配置的是服务包的基本信息,包括名称、版本、描述等相关信息。metadata.yaml样例: - [资源集合](https://support.huaweicloud.com/devg-osc/osc_ss_0007.md): {OSC-Package}/manifests,用于存放自定义资源文件以及公共能力配置,不同资源用目录进行划分。资源集合结构: - [自定义资源CRD](https://support.huaweicloud.com/devg-osc/osc_ss_0008.md): 自定义资源CRD是Kubernetes服务遵循一个自定义资源对应一个目录,遵循Kubernetes CRD规范。详细介绍参考官方CustomResourceDefinition。 - [自定义服务CSD](https://support.huaweicloud.com/devg-osc/osc_ss_0009.md): 在不同业务环境下,服务对平台有着不同的诉求,Kubernetes提供自定义资源CRD的轻量化机制。而在实践过程中,发现对于服务能力如服务依赖、服务访问、服务部署、监控日志等公共能力欠缺。因此围绕CRD自研CSD,通过声明式配置CRD的能力引用,增强服务治理能力。CSD本身属于CustomServiceDefinition类型的资源,其符合 - [vendor目录](https://support.huaweicloud.com/devg-osc/osc_ss_0010.md): 公共能力目录:{OSC-Package}/manifests/vendor,用于存放平台提供的能力配置文件,用于manifests目录中的CRD引用。公共能力目录结构: - [第三方目录Raw](https://support.huaweicloud.com/devg-osc/osc_ss_0011.md): 第三方目录:{OSC-Package}/raw。raw目录下会包含原始Helm包的内容。其他类型服务包不存在该目录。Helm包可通过oscctl工具方便地转成OSC服务包,也可通过手工转换。其中Helm规范参见Helm规范。Helm原始包结构{Helm}/ ├─ Chart.yaml ├─ values.yaml - [生命周期Lifecycle](https://support.huaweicloud.com/devg-osc/osc_ss_0012.md): 生命周期文件:{OSC-Package}/lifecycle.yaml,描述当前OSC服务包的安装,升级方式信息。lifecycle.yaml文件样例## 描述该OSC服务包的声明周期相关信息 install: strategy: deployment clusterPermissions: - rules: - [README](https://support.huaweicloud.com/devg-osc/osc_ss_0013.md): 使用说明文件:{OSC-Package}/README.md,描述该服务包的功能介绍、使用说明等信息。按照下面一级目录编写。 # 介绍 # 功能 # 版本列表 # 服务架构 # 快速上手 # 许可证使用说明文件中引用的文件或者文档链接尚未 - [接入规范说明](https://support.huaweicloud.com/devg-osc/osc_ss_0084.md): 开源OLM服务(operator-framework)服务支持自定义配置服务场景、支持架构等配置,其描述说明定义在clusterserviceversion.yaml中,具体样例如下: - [接入规范说明](https://support.huaweicloud.com/devg-osc/osc_ss_0085.md): 开源helm服务支持自定义配置服务场景、支持架构等配置,其描述说明定义在Chart.yaml中,具体样例如下: - [服务能力介绍](https://support.huaweicloud.com/devg-osc/osc_ss_0018.md): 云原生服务中心(Operator Service Center,OSC)能够提供大量开箱即用的云原生服务,支持服务的开发、发布、订阅、部署、升级、更新等,其面向对象包括服务开发者、服务使用者和服务提供商。本文旨在帮助开发者如何接入OSC平台并使用OSC能力。更高效的利用华为云基础设施OSC作为开发者与华为云基础设施的桥梁,提供了统一的对接 - [Helm服务接入OSC平台](https://support.huaweicloud.com/devg-osc/osc_ss_0079.md): 阅读本章节前,用户需要拥有一个符合Helm规范的服务包,Helm服务规范可以参考Helm规范,下面以helm开源服务grafana为例进行详细说明。oscctl工具同样支持直接在windows平台上运行,需要使用windows终端进入,执行oscctl-22.8.18/win-amd64/oscctl.exe命令,参考上面的步骤操作即可。 - [Operator服务接入OSC平台](https://support.huaweicloud.com/devg-osc/osc_ss_0080.md): 阅读本章节前,用户需要拥有一个符合Operator规范的服务包,Operator服务规范可以参考Operator规范,下面以Operator开源服务datadog-operator为例进行详细说明。 - [服务包扩展目录](https://support.huaweicloud.com/devg-osc/osc_ss_0037.md): 运维能力是在OSC服务规范基础上产生的能力,因此如果需要对接运维能力,需要先确保服务包的格式转换为OSC自身的规范才行,默认的开源规范当前只支持安装部署等基本功能。为了保证适用OSC的服务规范,将使用oscctl工具作为创建、转换OSC服务包,并且统一服务包格式。使用oscctl create命令会在manifests目录下生成一个ven - [如何配置监控](https://support.huaweicloud.com/devg-osc/osc_ss_0038.md): 对接监控,需要在csd.yaml文件中配置能力插件依赖功能声明,具体参考服务包扩展目录 capabilityRequirements示例开源的Prometheus是目前业界广泛应用的监控指标采集系统,其服务端可作为时间序列数据库,采集客户端应用不同时间周期上报的监控指标数据并存储,还可用来查询数据和图形化展示数据趋势。其针对不同的应用,提 - [对接配置日志](https://support.huaweicloud.com/devg-osc/osc_ss_0039.md): 对接日志系统,需要在csd.yaml文件中配置能力插件依赖功能声明,具体参考服务包扩展目录 capabilitiesrequirements示例。OSC内置了ops-operator插件,通过webhook的方式拦截标签匹配的工作负载(包括Deployment、StatefulSet或DaemonSet)资源,为其注入日志采集和上报功能, - [对接实例升级能力](https://support.huaweicloud.com/devg-osc/osc_ss_0042.md): 修改csd.yaml,声明实例版本定义信息。新增配置如下:具体配置参数说明可参考章节versionDefinition - [控件类型](https://support.huaweicloud.com/devg-osc/osc_ss_0044.md): 表单控件类型1. 使用默认crd.yaml文件自动生成表单由CRD中定义的openAPIV3Schema字段规定CR中可配置的参数以及这些参数的类型、范围,应用在创建CR的时候通过YAML文件指定这些参数。2. 使用自定义csd.yaml文件生成表单自动生成的创建表单已经很强大,但有时可能需要修改自定义表单的呈现方式。例如,可能需要对用户 - [基础控件](https://support.huaweicloud.com/devg-osc/osc_ss_0046.md): OSC console依据crd.yaml文件可以自动生成Operator的创建表单。crd.yaml文件中的properties(openAPIV3Schema.properties.spec.properties)对象会自动映射到对应的UI组件。目前提供的基础类型控件分别有string、number、boolean、object、ar - [specDescriptors](https://support.huaweicloud.com/devg-osc/osc_ss_0047.md): specDescriptors用于描述自定义资源中规范字段的属性。每个字段应包含以下内容:displayName -字段的用户友好名称。description -字段表示内容的简单描述信息。path -对象中字段以点分隔的路径。restriction(可选):指定控件使用场景。x-descriptors(可选) -字段能力的UI组件信息。 - [statusDescriptors](https://support.huaweicloud.com/devg-osc/osc_ss_0048.md): statusDescriptor用于描述自定义资源中状态字段的属性,其配置在csd.yaml文件的status字段。statusDescriptors的结构与specDescriptors相似,包括相同的字段。textx-descriptors: 文本形式公开实例的状态字段。例子:2. link此描述符用来公开实例的外部链接。它需要实例的 - [表单控件配置组合示例](https://support.huaweicloud.com/devg-osc/osc_ss_0049.md): csd.yaml文件中配置添加如下配置:# 配置表单控件 descriptors: spec: - displayName: Image description: The docker image name and version of Portworx Enterprise. path: image - [安装Kubebuilder](https://support.huaweicloud.com/devg-osc/osc_ss_0020.md): 已安装go v1.16+。已安装make。已安装docker 17.03+。已安装Kubernetes v1.15.0+ 。已安装kustomize,安装方法请参见安装 kustomize。已安装controller-gen,安装方法请参见安装controller-gen。Kubebuilder是基于custom resource def - [CRD介绍](https://support.huaweicloud.com/devg-osc/osc_ss_0022.md): CRD(CustomResourceDefinition)是一种自定义的Kubernetes资源,在定义CRD后,可通过在集群内创建对应 CR(CustomResource)对应用进行统一管理。格式示例请参见CRD典型格式。在定义CRD时,需同时定义基于OpenAPI的校验规则,其中包含创建CR时的字段及取值范围,以便校验用户创建的CR中 - [创建Operator项目](https://support.huaweicloud.com/devg-osc/osc_ss_0023.md): Operator是Kubernetes的扩展软件,通过定制资源管理应用和其他组件,实现一定自动运维能力。可以在不改动Kubernetes源码的情况下,通过一个或多个Operator来扩展集群能力,遵照自身业务需求、场景等灵活开发,节省运维成本。流程包括安装Kubernetes、构建Operator和实现Operator。本章节以应用名称为 - [创建API和Controller](https://support.huaweicloud.com/devg-osc/osc_ss_0024.md): 根据以上设计的CR,在项目工程中创建对应的CRD类型:通过kubebuilder create api命令,可以发现在重复下载controller-gen的二进制文件,包括后续使用Makefile去编译operator的二进制文件及打包镜像时,都可能会重复下载使用controller-gen二进制文件,建议提前安装controller-g - [定义API](https://support.huaweicloud.com/devg-osc/osc_ss_0026.md): 在设计的CR spec中,包含size、image、storage属性,因此需要修改api/v1/hwfka_types.go中HwfkaSpec和HwfkaStatus部分,为应用定义参数和状态属性。使用Kubebuilder,可通过在API结构的属性上定义Markers,自动生成CRD中的spec.validation.openAPI - [实现Controller](https://support.huaweicloud.com/devg-osc/osc_ss_0027.md): 在创建Kafka实例时,Kafka-Operator需要创建的Kubernetes资源如下:1个StatefulSet,包含3个Pod分别启动ZooKeeper;1个Service,用来暴露ZooKeeper访问地址;1个StatefulSet,包含3个Pod分别启动Hwfka broker;1个Service,用来暴露Hwfka访问地址 - [生成代码和资源描述文件](https://support.huaweicloud.com/devg-osc/osc_ss_0028.md): 修改api/v1/memcached_types.go或controller中的markers之后,需要重新生成代码和资源描述文件。该步骤将根据API定义自动生成CRD和RBAC。 - [制作实例镜像](https://support.huaweicloud.com/devg-osc/osc_ss_0030.md): 下载JRE:https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz。下载Apache Kafka二进制包:https://archive.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz。下载 - [制作Operator镜像](https://support.huaweicloud.com/devg-osc/osc_ss_0031.md): 修改hwfka-operator/Dockerfile内容如下:FROM centos:latest COPY bin/manager / RUN chmod ug+x /manager WORKDIR /构建容器镜像命令如下:$ make && make docker-build IMG=hwfka-operator:v0.0.1 - [创建服务包模板](https://support.huaweicloud.com/devg-osc/osc_ss_0033.md): 通过OSC提供的oscctl工具创建服务包模板,oscctl工具使用详情请参见oscctl工具使用。使用oscctl工具创建服务包模板。# 使用oscctl工具,创建服务包 $ oscctl create -o ./hwfka-operator-package Successfully created original package t - [修改服务包内容](https://support.huaweicloud.com/devg-osc/osc_ss_0034.md): 修改lifecycle.yaml文件。该文件包括OSC服务包的生命周期的相关信息,例如:安装方式、安装时需要的集群/命名空间级别权限、日志目录等。install: clusterPermissions: # 集群级别权限,请按照Kubernetes RABC相关规范填写 - rules: - apiGroups: - [生成服务包](https://support.huaweicloud.com/devg-osc/osc_ss_0035.md): 最终的服务目录结构如下:打包服务包命令如下:$ tar -zcvf hwfka-operator-package.tgz hwfka-operator-package - [oscctl工具使用](https://support.huaweicloud.com/devg-osc/osc_ss_0051.md): oscctl是一款用于生成华为云OSC服务包脚手架或者将开源Helm或Operator服务包转换为OSC服务包的命令行工具。下载链接:https://oscctl.obs.cn-east-3.myhuaweicloud.com/oscctl-22.6.23.tar.gz将下载后的oscctl工具安装包解压至本地后,将二进制文件oscctl - [CRD典型格式](https://support.huaweicloud.com/devg-osc/osc_ss_0054.md): 以v1版本为例:在Kubernetes中创建CRD时,将自动创建其对应的Kubernetes API,为RESTful endpoint形式,在namespace或cluster范围内可以访问其进行CRUD操作。其格式如下:示例:*代表所有namespace,可以使用指定namespace名称查询特定namespace下的CR。 - [Controller实现](https://support.huaweicloud.com/devg-osc/osc_ss_0055.md): 修改controllers/hwfka_controller.go文件为如下内容:func (r *HwfkaReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { log := r.Log.WithValues("hwfka - [挂载存储](https://support.huaweicloud.com/devg-osc/osc_ss_0056.md): 在Kubernetes中,通过PersistentVolume(PV)方式挂载存储,典型的步骤如下:创建PV,为集群提供存储服务。apiVersion: v1 kind: PersistentVolume metadata: name: mypv1 annotations: # 访问控制: 使用 group - [创建存储](https://support.huaweicloud.com/devg-osc/osc_ss_0057.md): 通过在集群中创建PVC的方式创建存储,典型的创建方式如下:EVS云硬盘apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-evs-auto-example namespace: default annotations: everest.io/di - [安装Controller](https://support.huaweicloud.com/devg-osc/osc_ss_0052.md): 基于模板生成YAML文件,下载kustomize二进制压缩包:https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v3.8.1/kustomize_v3.8.1_linux_amd64.tar.gz构建控制器所使用的Go语言controller- ## 提供商指南 - [概述](https://support.huaweicloud.com/accessg-osc/osc_sp_0001.md): 服务提供商是面向OSC合作伙伴,致力于与OSC合作并对外提供商用服务的企业或开发者,本文档介绍提供商如何上传和发布商用服务。OSC为客户提供开箱即用的云原生服务,可以通过OSC部署到任意基础设施,包括华为云CCE集群、第三方集群等场景。服务提供商在发布服务时需要提供服务包,服务包中包含部署需要的配置文件以及镜像,并按照OSC可识别的路径放 - [前置检查](https://support.huaweicloud.com/accessg-osc/osc_sp_0003.md): 服务包发布到云商店中,需要提供病毒扫描报告,保证发布上架的服务中不存在任何病毒,并在发布商品时提供给云商店运营人员审核,审核通过后商品方可发布成功。确保Helm模板中的镜像配置都引用values.yaml中的配置,如果不满足,请参见排查和编辑镜像地址排查和整改。确保operator包中的镜像配置都引用*.clusterservicever - [服务包目录结构约束](https://support.huaweicloud.com/accessg-osc/osc_sp_0005.md): OSC作为一个服务生命周期管理平台,有自定义的服务模型,服务需满足目录格式要求才能被OSC解析,发布到OSC上。package目录只有一个部署包,如果是由Helm改造,就是{serviceName}-{Version}.tgz,如果是Operator改造,是{serviceName}-{Version}.zip,如果是OSC格式转换,是{ - [服务包镜像名称约束](https://support.huaweicloud.com/accessg-osc/osc_sp_0006.md): 镜像目录存放部署目录中需要使用到的镜像文件,镜像文件以tar格式存储。镜像文件命名规范只允许包含大小写字母、数字、下划线、中划线及点,且不能以下划线、中划线及点结尾。images目录下存放服务运行所需的容器镜像,根据服务实际情况确定支持单CPU架构还是多CPU架构:单CPU架构:一般制作生成的容器镜像,其默认只能在某一种CPU架构的节点上 - [服务内容说明](https://support.huaweicloud.com/accessg-osc/osc_sp_0007.md): 服务商用发布版本上架到OSC云原生市场后,会读取服务包的部分描述信息并展示在服务包详情中,因此需要用户在服务包中填写必要的信息,从而保证详情页面展示正常。根据服务包格式类型,需补充说明内容如下:Helm Chart服务包Chart服务包其主体描述信息存储在Chart.yaml文件中,其中Chart.yaml文件中有如下几个必填字段内容:v - [镜像拉取配置说明](https://support.huaweicloud.com/accessg-osc/osc_sp_0020.md): 此配置主要针对用户发布的服务包中带有镜像,需要授权给对应的购买用户者下载使用时需要增加的步骤。用户需要在用户部署的deployment.yaml、statefulset.yaml等包含镜像下载的文件中增加配置。配置如下: - [制作服务包目录](https://support.huaweicloud.com/accessg-osc/osc_sp_0009.md): 新建一个文件夹,可任意命名。以etcd服务为例,暂定命名为etcd,在etcd文件夹下创建两个子目录,分别命名为package,images。目录结构为: - [放置镜像到images目录](https://support.huaweicloud.com/accessg-osc/osc_sp_0010.md): images目录下存放服务部署时需要的所有镜像。以etcd为例,etcd服务包含x86和ARM两种CPU架构的镜像,分别叫etcd-3.5.0-x86_64.tar,etcd-3.5.0-aarch64.tar,那么目录结构为:有的服务比较复杂,依赖其它的服务,比如kafka依赖zookeeper,zookeeper的镜像也要放置在ima - [打包到package目录](https://support.huaweicloud.com/accessg-osc/osc_sp_0011.md): Helm模板或者operator包有两个修改点:标记服务的来源,即是来源于开源、华为或者生态伙伴;统一镜像地址,OSC格式包引用lifecycle.yaml及csd.yaml中配置,Helm模板引用values.yaml中的配置,operator引用*.clusterserviceversion.yaml中的配置。提供商上传服务包后,镜像 - [替换镜像地址配置](https://support.huaweicloud.com/accessg-osc/osc_sp_0012.md): OSC需替换values.yaml或者*.clusterserviceversion.yaml中的镜像地址,mapping.yaml文件确定OSC在values.yaml或者*.clusterserviceversion.yaml中哪些字段用于配置镜像地址。mapping.yaml有多种不同的字段替换方式,镜像根据实际情况选择对应字段,会 - [前置说明](https://support.huaweicloud.com/accessg-osc/osc_sp_0014.md): 上传商用服务的账号须具有ISV权限,具体申请方式请参见如何加入华为云云商店。使用商用服务发布的账号需要在上海一region下创建一个OBS桶,桶创建要求如下:OBS桶创建参数说明参数值说明区域上海一只能选上海一,不能选其它区域,OSC虽然是Global服务,但本身部署在上海一。默认加密关闭OSC无法获取到OBS加密密钥,因此不能打开桶的默 - [创建服务](https://support.huaweicloud.com/accessg-osc/osc_sp_0015.md): 名称:填写需要上传的服务包中的名称。描述:用于描述此服务的相关功能描述等。模板仓库:用于存储服务包中的operator、helm chart或者osc规范包的模板文件。镜像仓库:用于存储服务包中的容器镜像。如果用户没有对应的仓库组织,可单击“新建组织”跳转到对应页面进行创建。可参考创建组织。 - [新增版本](https://support.huaweicloud.com/accessg-osc/osc_sp_0021.md): 如果没有OBS桶,则可以单击“新建桶”进行跳转到对应页面进行创建并上传服务包。当前OSC仅支持中心region(上海一)下的桶对接使用。当前OSC仅支持中心region(上海一)下的桶对接使用。 - [提交验证](https://support.huaweicloud.com/accessg-osc/osc_sp_0016.md): 用户已经在“我的服务”-“私有服务”中进行部署验证通过。 - [注册资产](https://support.huaweicloud.com/accessg-osc/osc_sp_0022.md): 用户已经将对应服务包提交验证申请,并由管理员审批通过。 - [发布服务](https://support.huaweicloud.com/accessg-osc/osc_sp_0019.md): OSC负责管理服务包,商品的正式发布需要到华为云云商店卖家中心发布,交付方式选择”容器”,其它信息请参见商品发布说明。发布服务必须使用通过云商店认证的账号登录,如果没有通过云商店认证的账号,请申请账号,具体请参见云商店计划。 - [上架服务新版本](https://support.huaweicloud.com/accessg-osc/osc_sp_0018.md): 服务发布上架后,将会对外提供服务。当用户的服务需要上线新特性时,则需要上架新的版本服务包,服务新版本上架流程具体步骤如下: ## 常见问题 - [单租户下多IAM用户使用企业仓库场景如何配置权限?](https://support.huaweicloud.com/osc_faq/osc_faq_0002.md): 用户使用华为云账号上传服务包会按照社区Open Container Initiative规范,以制品包的形式存储在容器镜像服务的用户企业仓库当中。当需要华为云账号下的多个IAM用户使用OSC私有服务时,需要使用华为云账号在控制台统一身份认证处为IAM用户配置用户组和访问SWR企业仓库的权限,保证IAM用户可以正常使用OSC私有服务。统一身 - [单租户下如何使用IAM系统策略对各IAM子用户进行细粒度权限划分](https://support.huaweicloud.com/osc_faq/osc_faq_0025.md): 当华为云租户需要对各IAM用户进行细粒度权限控制时,要使用到IAM策略。关于策略的详细介绍参见IAM权限管理文档。OSC作为UCS的子服务,其细粒度权限的划分包括UCS FullAccess和UCS ReadOnlyAccess两个系统策略。其中UCS FullAccess系统策略包含OSC所有接口的使用权限,UCS ReadOnlyAc - [单租户下多IAM用户使用企业仓库场景如何配置权限?](https://support.huaweicloud.com/osc_faq/osc_faq_0002.md): 用户使用华为云账号上传服务包会按照社区Open Container Initiative规范,以制品包的形式存储在容器镜像服务的用户企业仓库当中。当需要华为云账号下的多个IAM用户使用OSC私有服务时,需要使用华为云账号在控制台统一身份认证处为IAM用户配置用户组和访问SWR企业仓库的权限,保证IAM用户可以正常使用OSC私有服务。统一身 - [单租户下如何使用IAM系统策略对各IAM子用户进行细粒度权限划分](https://support.huaweicloud.com/osc_faq/osc_faq_0025.md): 当华为云租户需要对各IAM用户进行细粒度权限控制时,要使用到IAM策略。关于策略的详细介绍参见IAM权限管理文档。OSC作为UCS的子服务,其细粒度权限的划分包括UCS FullAccess和UCS ReadOnlyAccess两个系统策略。其中UCS FullAccess系统策略包含OSC所有接口的使用权限,UCS ReadOnlyAc - [初次使用私有服务上传功能前,如何关联企业仓库实例?](https://support.huaweicloud.com/osc_faq/osc_faq_0004.md): 在云原生服务中心控制台,OSC支持用户使用容器镜像仓库以及容器镜像仓库企业版,普通的镜像仓库可以免费体验但配额有一定限制,超过限制后将无法再上传,此时用户可以删除旧的服务包或者绑定容器镜像仓库企业版,企业版仓库对上传的服务包没有限定数量。用户需要先创建企业仓库实例,重新关联仓库实例后,即可正常使用上传功能。假如初次购买企业版实例未创建“虚 - [集群中服务Operator CR被误删后,页面删除实例失败时应如何处理?](https://support.huaweicloud.com/osc_faq/osc_faq_0026.md): 用户在OSC平台上架了一个服务,并且成功发布服务以及通过服务安装了一个服务实例,然后用户在集群控制节点上手动删除了服务Operator CR,后续用户在OSC服务实例页面想要删除服务实例时,发现实例删除报错,报错信息“timeout to handle resource instance, status Deleting, last er - [商用服务预上架失败,报"缺少必要的服务提供者的联系信息"](https://support.huaweicloud.com/osc_faq/osc_faq_0027.md): 合作伙伴使用账号进行商品发布,在触发安全扫描功能后,等待一段时间报"初始化失败"错误,鼠标放置上面展示详细错误信息,信息报"缺少必要的服务提供者的联系信息"。报此错误主要是由于ISV用户上传的商用服务包中缺少相关的服务提供者联系信息,这会导致用户对服务包存在相关诉求而无法快速联系对应提供者,因此要求用户在软件包中进行描述。上传服务包为he - [服务Operator资源被误删后,删除实例失败时如何清理?](https://support.huaweicloud.com/osc_faq/osc_faq_0028.md): 在CCE云容器引擎页面,由于用户误删了服务Operator以及oc-operator的Deployment相关资源,此时在OSC服务实例页面删除服务实例时,实例删除失败,报错信息“timeout to handle resource instance, status Deleting, last error: waiting for re - [集群安装新版本服务包后,crd不会自动更新](https://support.huaweicloud.com/osc_faq/osc_faq_0030.md): 用户卸载服务包后,crd资源仍会保留;假如要安装新版本服务包,且新版本的crd资源与旧的crd资源同名,需要用户手动删除旧版本crd资源后重新上传新版本的crd资源。kubectl get crdkubectl get crd |grep {crd_name}以redis服务为例:kubectl delete crd {resource - [如何确保容器镜像仓库允许创建至少一个组织?](https://support.huaweicloud.com/osc_faq/osc_faq_0029.md): 用户在上传私有服务时,云原生服务中心将会在容器镜像仓库新建一个独立的组织用于存储上传的数据包。因此用户使用此仓库时需要确保容器镜像仓库允许创建至少一个组织,以避免上传服务包失败。 - [如何解决界面显示运行中,但是实际集群中并没有该服务实例问题](https://support.huaweicloud.com/osc_faq/osc_faq_0031.md): 用户在云原生服务中心中部署Operator类型或Helm类型服务包时,可能因为在部署前刚删除同名服务包后立即部署,导致Kubernetes集群正在处理删除中的组件。因为新部署的服务或服务实例与Kubernetes待删除的组件是同名的,所以可能产生云原生服务中心界面显示部署成功(因为Kubernetes队列正在处理,可以从集群中查到该同名资 - [初次使用私有服务上传功能前,如何关联企业仓库实例?](https://support.huaweicloud.com/osc_faq/osc_faq_0004.md): 在云原生服务中心控制台,OSC支持用户使用容器镜像仓库以及容器镜像仓库企业版,普通的镜像仓库可以免费体验但配额有一定限制,超过限制后将无法再上传,此时用户可以删除旧的服务包或者绑定容器镜像仓库企业版,企业版仓库对上传的服务包没有限定数量。用户需要先创建企业仓库实例,重新关联仓库实例后,即可正常使用上传功能。假如初次购买企业版实例未创建“虚 - [集群中服务Operator CR被误删后,页面删除实例失败时应如何处理?](https://support.huaweicloud.com/osc_faq/osc_faq_0026.md): 用户在OSC平台上架了一个服务,并且成功发布服务以及通过服务安装了一个服务实例,然后用户在集群控制节点上手动删除了服务Operator CR,后续用户在OSC服务实例页面想要删除服务实例时,发现实例删除报错,报错信息“timeout to handle resource instance, status Deleting, last er - [商用服务预上架失败,报"缺少必要的服务提供者的联系信息"](https://support.huaweicloud.com/osc_faq/osc_faq_0027.md): 合作伙伴使用账号进行商品发布,在触发安全扫描功能后,等待一段时间报"初始化失败"错误,鼠标放置上面展示详细错误信息,信息报"缺少必要的服务提供者的联系信息"。报此错误主要是由于ISV用户上传的商用服务包中缺少相关的服务提供者联系信息,这会导致用户对服务包存在相关诉求而无法快速联系对应提供者,因此要求用户在软件包中进行描述。上传服务包为he - [服务Operator资源被误删后,删除实例失败时如何清理?](https://support.huaweicloud.com/osc_faq/osc_faq_0028.md): 在CCE云容器引擎页面,由于用户误删了服务Operator以及oc-operator的Deployment相关资源,此时在OSC服务实例页面删除服务实例时,实例删除失败,报错信息“timeout to handle resource instance, status Deleting, last error: waiting for re - [集群安装新版本服务包后,crd不会自动更新](https://support.huaweicloud.com/osc_faq/osc_faq_0030.md): 用户卸载服务包后,crd资源仍会保留;假如要安装新版本服务包,且新版本的crd资源与旧的crd资源同名,需要用户手动删除旧版本crd资源后重新上传新版本的crd资源。kubectl get crdkubectl get crd |grep {crd_name}以redis服务为例:kubectl delete crd {resource - [如何确保容器镜像仓库允许创建至少一个组织?](https://support.huaweicloud.com/osc_faq/osc_faq_0029.md): 用户在上传私有服务时,云原生服务中心将会在容器镜像仓库新建一个独立的组织用于存储上传的数据包。因此用户使用此仓库时需要确保容器镜像仓库允许创建至少一个组织,以避免上传服务包失败。 - [如何解决界面显示运行中,但是实际集群中并没有该服务实例问题](https://support.huaweicloud.com/osc_faq/osc_faq_0031.md): 用户在云原生服务中心中部署Operator类型或Helm类型服务包时,可能因为在部署前刚删除同名服务包后立即部署,导致Kubernetes集群正在处理删除中的组件。因为新部署的服务或服务实例与Kubernetes待删除的组件是同名的,所以可能产生云原生服务中心界面显示部署成功(因为Kubernetes队列正在处理,可以从集群中查到该同名资 - [服务插件误删后应该如何处理?](https://support.huaweicloud.com/osc_faq/osc_faq_0007.md): 用户在云原生服务中心订阅服务或者上传私有服务后并部署实例,云原生服务中心会自动安装服务插件,用户在后台进行kubectl命令操作时误删除了oc-operator的deployment,导致后续无法继续安装云原生服务。oc-operator服务是云原生服务中心用于安装operator或者helm等服务的插件,其负责对应服务的生命周期管理如安 - [服务包配置了日志相关yaml,但是页面上不显示日志可能是什么原因?](https://support.huaweicloud.com/osc_faq/osc_faq_0008.md): 用户在云原生服务中心订阅服务或者上传私有服务后并部署实例,云原生服务中心会解析服务包,如果服务包中有日志相关配置文件,云原生服务中心会自动对接华为云AOM提供日志相关能力,并且在页面上可以浏览相关日志。如果没有显示日志,则可以先进行如下的检查。 - [如何清理集群中OSC冗余插件数据](https://support.huaweicloud.com/osc_faq/osc_faq_0032.md): 用户使用OSC平台部署了相关OSC服务后,因为自身原因需要将集群中的OSC等插件信息清理掉,可以参考此章节进行处理。确保集群可以执行kubectl命令,以避免无法执行清理命令。kubectl get secret -nosc-ockubectl delete secret -nosc-oc sh.helm.release.v1.{ccea - [如何解决系统插件或服务Operator一直处于安装中](https://support.huaweicloud.com/osc_faq/osc_faq_0033.md): Operator-Chef在部署服务插件的过程中会访问Kubernetes提供的相关接口,例如:Create、Update等,在执行各个操作接口时,其超时时间为10秒,如果超过10秒可能会因为插件一直不能够正常部署造成一直处于安装中的状态。其根本原因是因为网络不稳定导致 - [服务插件误删后应该如何处理?](https://support.huaweicloud.com/osc_faq/osc_faq_0007.md): 用户在云原生服务中心订阅服务或者上传私有服务后并部署实例,云原生服务中心会自动安装服务插件,用户在后台进行kubectl命令操作时误删除了oc-operator的deployment,导致后续无法继续安装云原生服务。oc-operator服务是云原生服务中心用于安装operator或者helm等服务的插件,其负责对应服务的生命周期管理如安 - [服务包配置了日志相关yaml,但是页面上不显示日志可能是什么原因?](https://support.huaweicloud.com/osc_faq/osc_faq_0008.md): 用户在云原生服务中心订阅服务或者上传私有服务后并部署实例,云原生服务中心会解析服务包,如果服务包中有日志相关配置文件,云原生服务中心会自动对接华为云AOM提供日志相关能力,并且在页面上可以浏览相关日志。如果没有显示日志,则可以先进行如下的检查。 - [如何清理集群中OSC冗余插件数据](https://support.huaweicloud.com/osc_faq/osc_faq_0032.md): 用户使用OSC平台部署了相关OSC服务后,因为自身原因需要将集群中的OSC等插件信息清理掉,可以参考此章节进行处理。确保集群可以执行kubectl命令,以避免无法执行清理命令。kubectl get secret -nosc-ockubectl delete secret -nosc-oc sh.helm.release.v1.{ccea - [如何解决系统插件或服务Operator一直处于安装中](https://support.huaweicloud.com/osc_faq/osc_faq_0033.md): Operator-Chef在部署服务插件的过程中会访问Kubernetes提供的相关接口,例如:Create、Update等,在执行各个操作接口时,其超时时间为10秒,如果超过10秒可能会因为插件一直不能够正常部署造成一直处于安装中的状态。其根本原因是因为网络不稳定导致