用户自定义 OCI 构件

Harbor 现在可以扩展对 K8s 数据模型(如 Kubeflow 数据模型)上的机器学习的支持。实际上,它们仍然是 OCI 构件。这些构件遵循 Harbor 特定的配置,以便 Harbor 可以以某种方式显示其丰富的元数据和图标。它们被称为用户自定义 OCI 构件。

Harbor 特定配置

Harbor 特定配置在 OCI 构件的清单文件中定义了注解键。

  • io.goharbor.artifact.v1alpha1.skip-list string
    它位于 manifest.config.annotations 中。
    可选属性。跳过键的列表。Harbor 将忽略配置 JSON 层中的这些键。此键的值应为字符串类型,并以逗号分隔。

  • io.goharbor.artifact.v1alpha1.icon empty string
    它位于 manifest.layers[].annotations 中。
    构件图标的标识符。此键的值应为空字符串。只会处理键,不会使用值。如果构件使用了图标,则图标必须是构建构件时的构件层。注意:图标的 mediaType 支持 “image/gif, image/png, image/jpeg”。

OCI 清单示例

展示用户自定义 OCI 构件的示例

{
    "schemaVersion": 2,
    "config": {
        "mediaType": "application/vnd.caicloud.model.config.v1alpha1+json",
        "digest": "sha256:be948daf0e22f264ea70b713ea0db35050ae659c185706aa2fad74834455fe8c",
        "size": 187,
        "annotations": {
            "io.goharbor.artifact.v1alpha1.skip-list": "metrics,git"
        }
    },
    "layers": [
        {
            "mediaType": "image/png",
            "digest": "sha256:d923b93eadde0af5c639a972710a4d919066aba5d0dfbf4b9385099f70272da0",
            "size": 166015,
            "annotations": {
                "io.goharbor.artifact.v1alpha1.icon": ""
            }
        },
        {
            "mediaType": "application/tar+gzip",
            "digest": "sha256:d923b93eadde0af5c639a972710a4d919066aba5d0dfbf4b9385099f70272da0",
            "size": 166015
        }
    ]
}

用户自定义 OCI 构件示例

如果您对用户自定义 OCI 构件感兴趣,ORMB 是一个很好的例子。