检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
创建API和Controller 根据以上设计的CR,在项目工程中创建对应的CRD类型: $ kubebuilder create api --group osctest --version v1 --kind Hwfka Create Resource [y/n] y Create
"k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // HwfkaSpec defines the desired
CRD典型格式 以v1版本为例: apiVersion: apiextensions.k8s.io/v1 # 创建 CRD kind: CustomResourceDefinition metadata: # 名称必须采用复数 <plural-name>.<group>.<domain>
因此如果需要对接运维能力,需要先确保服务包的格式转换为OSC自身的规范才行,默认的开源规范当前只支持安装部署等基本功能。 运维能力扩展 为了保证适用OSC的服务规范,将使用oscctl工具作为创建、转换OSC服务包,并且统一服务包格式。使用oscctl create命令会在man
内容进行忽略。 服务生命周期 服务包分为商品服务包和私有服务包。商品包只能由具备ISV资质的租户(服务提供商)进行发布,发布前需经过服务包格式校验、镜像扫描、镜像地址替换、服务自验证等流程,经审核后方可上架。上架后的服务可被其他租户(服务使用者)所使用。而私有包可以由任何一个租户发布,发布后仅由租户自己使用。
根据服务包格式类型,需补充说明内容如下: Helm Chart服务包 Chart服务包其主体描述信息存储在Chart.yaml文件中,其中Chart.yaml文件中有如下几个必填字段内容: version: 1.0.0 name: example-helm apiVersion:
_name}-{version}.zip,例如redis-operator-1.0.0.zip。 包格式:operator类型服务包支持zip格式,helm类型服务包支持tgz格式。 包大小:不超过4MB。 样例(以Kafka为示例): {OSC-Package}/ ├─ metadata
OSC console依据crd.yaml文件可以自动生成Operator的创建表单。crd.yaml文件中的properties(openAPIV3Schema.properties.spec.properties)对象会自动映射到对应的UI组件。 目前提供的基础类型控件分别有st
规范。 OSC服务平台支持部署上述两种开源的服务包,但是如需同时使用OSC对外提供的运维和表单控件能力,则需要将部署包转换为符合OSC规范格式的服务包,工具的转换使用可以参考章节oscctl工具使用。 Operator规范 Helm规范 父主题: OSC服务规范
Helm规范 Helm的包格式被称为chart,描述Kubernetes相关资源的文件集合。chart包含: Chart.yaml values.yaml values.schema.json charts目录 templates目录 {Helm}/ ├─ Chart.yaml
中带有+的版本号。 服务包各个文件命名以及约束 名称 格式 建议参数说明 用途 必选 服务包 {ServiceName}-{Version}.zip 建议服务名+版本号+zip命名 用于发布到OSC市场的最终交付包,zip格式压缩包。 是 服务包目录 {ServiceName} 建议服务名来命名
Operator代码示例 CRD典型格式 Controller实现 挂载存储 创建存储 父主题: 附录
CR(CustomResource)对应用进行统一管理。格式示例请参见CRD典型格式。 OpenAPI校验 在定义CRD时,需同时定义基于OpenAPI的校验规则,其中包含创建CR时的字段及取值范围,以便校验用户创建的CR中字段值的合法性。使用Kubebuilder,可通过在API中定义Marker,自动生成spec
打包到package目录 Helm模板或者operator包有两个修改点: 标记服务的来源,即是来源于开源、华为或者生态伙伴; 统一镜像地址,OSC格式包引用lifecycle.yaml及csd.yaml中配置,Helm模板引用values.yaml中的配置,operator引用*.clusterserviceversion
服务包镜像名称约束 镜像目录存放部署目录中需要使用到的镜像文件,镜像文件以tar格式存储。镜像文件命名规范只允许包含大小写字母、数字、下划线、中划线及点,且不能以下划线、中划线及点结尾。 images目录下存放服务运行所需的容器镜像,根据服务实际情况确定支持单CPU架构还是多CPU架构:
服务包大小不能超过4MB。 支持三种服务包打包压缩格式 Operator服务:支持遵循OpenShift包格式,以社区的operator-sdk开发,最终以zip工具打包出的zip的压缩包上传。 Helm服务:支持遵循Helm包格式,以tar工具打包出的tgz或tar.gz的压缩包上传。
使用说明文件:{OSC-Package}/README.md,描述该服务包的功能介绍、使用说明等信息。按照下面一级目录编写。 <!--Markdown格式,按照以下目录结构--> # 介绍 # 功能 # 版本列表 # 服务架构 # 快速上手 <!-- 可提供链接 或者 文字--> #
私有服务上传和部署 前提条件 已购买容器镜像服务的企业版实例,且实例可以正常运行。 准备好待上传的zip或tgz格式的helm/operator-framework/osc规范压缩包以及部署时需要运行的镜像。 服务部署流程 选择对应的仓库存储源,将服务包和镜像包分别上传到OSC以及SWR仓库中,进行部署即可。
CSD本身属于CustomServiceDefinition类型的资源,其符合k8s资源的通用定义方法。其apiVersion和kind是固定的,metadata.name可自行配置: apiVersion: osc.io/v1beta1 kind: CustomServiceDefinition
by name (optional). 上传的服务包为operator-framework格式,则需要在xxx.clusterserviceversion.yaml文件中进行增加相关配置。 apiVersion: operators.coreos.com/v1alpha1 kind: