$ operator-sdk bundle validate <bundle_dir_or_image> <flags>
作为 Operator 作者,您可以在 Operator SDK 中运行`bundle validate` 命令来验证 Operator bundle 的内容和格式。您可以对远程 Operator bundle 镜像或本地 Operator bundle 目录运行此命令。
红帽支持的 Operator SDK CLI 工具版本(包括相关的脚手架和 Operator 项目测试工具)已弃用,并计划在未来的 OpenShift Dedicated 版本中移除。红帽将在当前版本生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 OpenShift Dedicated 版本中移除。 不建议使用红帽支持的 Operator SDK 版本创建新的 Operator 项目。拥有现有 Operator 项目的 Operator 作者可以使用随 OpenShift Dedicated 发布的 Operator SDK CLI 工具版本来维护其项目并创建针对较新版本的 OpenShift Dedicated 的 Operator 版本。 以下与 Operator 项目相关的基础镜像_未_被弃用。这些基础镜像的运行时功能和配置 API 仍然支持错误修复和解决 CVE。
有关不受支持的、社区维护的 Operator SDK 版本的信息,请参阅Operator SDK (Operator Framework)。 |
虽然 Operator SDK `scorecard` 命令可以根据配置文件和测试镜像对您的 Operator 运行测试,但`bundle validate` 子命令可以验证本地 bundle 目录和远程 bundle 镜像的内容和结构。
$ operator-sdk bundle validate <bundle_dir_or_image> <flags>
当您使用`make bundle` 命令构建 bundle 时,`bundle validate` 命令会自动运行。 |
bundle 镜像会在验证之前从远程注册表中拉取并在本地构建。本地 bundle 目录必须包含 Operator 元数据和清单。bundle 元数据和清单必须具有与以下 bundle 布局类似的结构
./bundle
├── manifests
│ ├── cache.my.domain_memcacheds.yaml
│ └── memcached-operator.clusterserviceversion.yaml
└── metadata
└── annotations.yaml
如果未检测到错误,bundle 测试将通过验证并以退出代码`0`结束。
INFO[0000] All validation tests have completed successfully
如果检测到错误,测试将无法通过验证并以退出代码`1`结束。
ERRO[0000] Error: Value cache.example.com/v1alpha1, Kind=Memcached: CRD "cache.example.com/v1alpha1, Kind=Memcached" is present in bundle "" but not defined in CSV
只要未检测到错误,导致警告的 bundle 测试仍然可以通过验证并以退出代码`0`结束。测试仅在出现错误时才会失败。
WARN[0000] Warning: Value : (memcached-operator.v0.0.1) annotations not found
INFO[0000] All validation tests have completed successfully
有关`bundle validate` 子命令的更多信息,请运行
$ operator-sdk bundle validate -h
Operator SDK 附带预定义的验证器,这些验证器被排列成套件。如果您运行`bundle validate` 命令而不指定验证器,则会运行默认测试。默认测试会验证 bundle 是否符合 Operator Framework 社区定义的规范。有关更多信息,请参阅“bundle 格式”。
您可以运行可选验证器来测试 OperatorHub 兼容性或已弃用的 Kubernetes API 等问题。可选验证器始终会除默认测试外额外运行。
$ operator-sdk bundle validate <bundle_dir_or_image>
--select-optional <test_label>
名称 | 描述 | 标签 |
---|---|---|
操作符框架 |
此验证器针对操作符框架提供的整套验证器测试操作符捆绑包。 |
|
OperatorHub |
此验证器测试操作符捆绑包与 OperatorHub 的兼容性。 |
|
最佳实践 |
此验证器测试操作符捆绑包是否符合操作符框架定义的最佳实践。它会检查诸如空的 CRD 描述或不受支持的操作符生命周期管理器 (OLM) 资源等问题。 |
|
每次输入bundle validate
命令时,默认验证器都会运行测试。您可以使用--select-optional
标志运行可选验证器。可选验证器除了默认测试之外还会运行其他测试。
使用 Operator SDK 生成的操作符项目
如果要针对本地捆绑包目录运行默认验证器,请从您的操作符项目目录输入以下命令:
$ operator-sdk bundle validate ./bundle
如果要针对远程操作符捆绑包镜像运行默认验证器,请输入以下命令:
$ operator-sdk bundle validate \
<bundle_registry>/<bundle_image_name>:<tag>
其中
指定托管捆绑包的注册表,例如quay.io/example
。
指定捆绑包镜像的名称,例如memcached-operator
。
指定捆绑包镜像的标签,例如v1.36.1
。
如果要验证操作符捆绑包镜像,则必须将您的镜像托管在远程注册表中。Operator SDK 会拉取镜像并在本地构建它,然后再运行测试。 |
如果要针对操作符捆绑包运行其他验证器,请输入以下命令:
$ operator-sdk bundle validate \
<bundle_dir_or_image> \
--select-optional <test_label>
其中
指定本地捆绑包目录或远程捆绑包镜像,例如~/projects/memcached
或quay.io/example/memcached-operator:v1.36.1
。
指定要运行的验证器的名称,例如name=good-practices
。
ERRO[0000] Error: Value apiextensions.k8s.io/v1, Kind=CustomResource: unsupported media type registry+v1 for bundle object
WARN[0000] Warning: Value k8sevent.v0.0.1: owned CRD "k8sevents.k8s.k8sevent.com" has an empty description