$ operator-sdk bundle validate <bundle_dir_or_image> <flags>
作为Operator作者,您可以在Operator SDK中运行bundle validate
命令来验证Operator bundle的内容和格式。您可以对远程Operator bundle镜像或本地Operator bundle目录运行此命令。
Red Hat支持的Operator SDK CLI工具版本(包括Operator项目的相关脚手架和测试工具)已弃用,并计划在未来版本的Red Hat OpenShift Service on AWS中移除。Red Hat将在当前发布周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的Red Hat OpenShift Service on AWS版本中移除。 不建议使用Red Hat支持的Operator SDK版本创建新的Operator项目。拥有现有Operator项目的Operator作者可以使用Red Hat OpenShift Service on AWS发布的Operator SDK CLI工具版本来维护其项目并创建针对较新版本的Red Hat OpenShift Service on AWS的Operator版本。 以下与Operator项目相关的基础镜像未被弃用。这些基础镜像的运行时功能和配置API仍然支持错误修复和解决CVE。
有关不受支持的社区维护的Operator SDK版本的信息,请参阅 Operator SDK (Operator Framework)。 |
虽然Operator SDK scorecard
命令可以根据配置文件和测试镜像对您的Operator运行测试,但bundle validate
子命令可以验证本地bundle目录和远程bundle镜像的内容和结构。
bundle validate
命令语法$ operator-sdk bundle validate <bundle_dir_or_image> <flags>
当您使用 |
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等问题。可选验证器始终还会运行默认测试。
bundle validate
命令语法$ operator-sdk bundle validate <bundle_dir_or_image>
--select-optional <test_label>
名称 | 描述 | 标签 |
---|---|---|
Operator Framework |
此验证器会针对Operator Framework提供的整套验证器测试Operator bundle。 |
|
OperatorHub |
此验证器会测试Operator bundle与OperatorHub的兼容性。 |
|
最佳实践 |
此验证器会测试Operator bundle是否符合Operator Framework定义的最佳实践。它会检查诸如空CRD描述或不受支持的Operator Lifecycle Manager (OLM)资源等问题。 |
|
每次输入bundle validate
命令时,都会运行默认验证器。您可以使用--select-optional
标志运行可选验证器。可选验证器会除了默认测试之外运行测试。
使用Operator SDK生成的Operator项目
如果要对本地bundle目录运行默认验证器,请从您的Operator项目目录输入以下命令
$ operator-sdk bundle validate ./bundle
如果要对远程Operator bundle镜像运行默认验证器,请输入以下命令
$ operator-sdk bundle validate \
<bundle_registry>/<bundle_image_name>:<tag>
其中
指定托管bundle的注册表,例如quay.io/example
。
指定bundle镜像的名称,例如memcached-operator
。
指定bundle镜像的标签,例如v1.36.1
。
如果要验证Operator bundle镜像,则必须将您的镜像托管在远程注册表中。Operator SDK会拉取镜像并在本地构建它,然后再运行测试。 |
如果要对Operator bundle运行其他验证器,请输入以下命令
$ operator-sdk bundle validate \
<bundle_dir_or_image> \
--select-optional <test_label>
其中
指定本地bundle目录或远程bundle镜像,例如~/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