
# 服务包目录结构约束
OSC作为一个服务生命周期管理平台，有自定义的服务模型，服务需满足目录格式要求才能被OSC解析，发布到OSC上。
```
{ServiceName}-{Version}.zip                #【必选】服务包
└─{ServiceName}/                         #【必选】服务包目录
     ├─package/                          #【必选】部署包目录 
     │   ├─{serviceName}-{Version}.zip  #【必选】开源operator部署包或者转换后的osc格式部署包
     │   └─{serviceName}-{Version}.tgz  #【必选】Helm部署包
     └─images/                           #【可选】镜像目录
          ├─{images1}.tar                #【可选】镜像文件
          ├─{images2}.tar
          ├─ ...
          └─ mapping.yaml                 #【可选】镜像地址替换映射文件
```
![](https://support.huaweicloud.com/accessg-osc/public_sys-resources/notice_3.0-zh-cn.png)
package目录只有一个部署包，如果是由Helm改造，就是{serviceName}-{Version}.tgz，如果是Operator改造，是{serviceName}-{Version}.zip，如果是OSC格式转换，是{serviceName}-{Version}.zip。
命名规范：
- serviceName：服务名称。目前服务名称仅接受英文大小写字母、数字及中划线（-）的组合。在服务发布中，创建服务名称其输入长度最大为64个字符。
- version：服务的版本号。服务版本号请遵循SemVer规范进行书写，但不支持SemVer中带有+的版本号。
 
服务包各个文件命名以及约束
| 名称          | 格式                          | 建议参数说明          | 用途                                                                   | 必选 |
|:---|:---|:---|:---|:---|
| 服务包         | {ServiceName}-{Version}.zip | 建议服务名+版本号+zip命名 | 用于发布到OSC市场的最终交付包，zip格式压缩包。                                           | 是  |
| 服务包目录       | {ServiceName}               | 建议服务名来命名        | 总服务包目录。                                                              | 是  |
| 部署包目录       | package                     | 固定名称，不可修改       | OSC兼容两种开源规范，Helm和Operator，package目录用于存放服务的Helm模板或者Operator包，两种类型二选一。 | 是  |
| osc部署包      | {serviceName}-{Version}.zip | 服务名+版本号+zip命名   | osc部署包，参考《OSC服务开发者指南》章节2.2《服务包规范》转换operator或Helm生成的服务包。              | 是  |
| operator部署包 | {serviceName}-{Version}.zip | 服务名+版本号+zip命名   | operator部署包，参考Operator framework方式生成。                                | 是  |
| helm部署包     | {serviceName}-{Version}.tgz | 服务名+版本号+tgz命名   | Helm部署包，参考开源Helm格式生成即可。                                              | 是  |
| 镜像目录        | images                      | 固定名称，不可修改       | 存放服务包的镜像目录，当镜像是让用户从外部拉取，镜像目录可不要。                                     | 否  |
| 镜像文件        | {images}.tar                | 镜像文件，tar格式结尾    | 镜像文件。                                                                | 否  |
| 镜像地址索引文件    | mapping.yaml                | 固定名称，不可修改       | OSC通过这个文件判断Helm模板或者Operator包中配置镜像的字段，以便将这些镜像地址替换成OSC仓库中实际的镜像地址。      | 否  |
   
**示例**
- etcd Operator服务
  ```
  etcd.zip
      | --- etcd/
          | --- package/
              | --- etcd-operator-0.9.4.zip        #etcd Operator包，必须是zip格式的压缩包
          | --- images/
              | --- etcd-operator-0.9.4.tar        #etcd Operator的镜像
              | --- etcd-3.5.0.tar                 #etcd 的镜像
              | --- mapping.yaml
  ```
  
- etcd Helm服务
  ```
  etcd.zip
      | --- etcd/
          | --- package/
              | --- etcd-helm-6.7.0.tgz            #etcd helm模板包，必须为tgz的格式
          | --- images/
                | --- etcd-3.5.0.tar              # etcd 的镜像
                | --- mapping.yaml
  ```
  
 
