8.2. Operator SDK CLI 参考
Operator SDK 命令行界面(CLI)是一个开发组件,旨在更轻松地编写 Operator。
红帽支持的 Operator SDK CLI 工具版本(包括 Operator 项目的相关构建和测试工具)已被弃用,计划在以后的 OpenShift Container Platform 发行版本中删除。红帽将在当前发行生命周期中提供对这个功能的程序错误修复和支持,但此功能将不再获得改进,并将在以后的 OpenShift Container Platform 版本中删除。
对于创建新 Operator 项目,不建议使用红帽支持的 Operator SDK 版本。现有 Operator 项目的 Operator 作者可以使用 OpenShift Container Platform 4.16 发布的 Operator SDK CLI 工具版本来维护其项目,并创建针对较新版本的 OpenShift Container Platform 的 Operator 发行版本。
以下与 Operator 项目相关的基础镜像 没有被弃用。这些基础镜像的运行时功能和配置 API 仍然会有程序错误修复和并提供对相关 CVE 的解决方案。
- 基于 Ansible 的 Operator 项目的基础镜像
- 基于 Helm 的 Operator 项目的基础镜像
有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。
有关 Operator SDK 不支持的、社区维护版本的信息,请参阅 Operator SDK (Operator Framework)。
operator SDK CLI 语法
operator-sdk <command> [<subcommand>] [<argument>] [<flags>]
$ operator-sdk <command> [<subcommand>] [<argument>] [<flags>]如需有关 Operator SDK 的完整文档,请参阅 Operators。
8.2.1. bundle
					operator-sdk bundle 命令管理 Operator 捆绑包元数据。
				
8.2.1.1. validate
						bundle validate 子命令会验证 Operator 捆绑包。
					
| 标记 | 描述 | 
|---|---|
| 
										 | 
										 | 
| 
										 | 
										拉取和解包捆绑包镜像的工具。仅在验证捆绑包镜像时使用。可用选项是  | 
| 
										 | 列出所有可用的可选验证器。设置后,不会运行验证器。 | 
| 
										 | 
										选择要运行的可选验证器的标签选择器。当使用  | 
8.2.2. cleanup
					operator-sdk cleanup 命令会销毁并删除为通过 run 命令部署的 Operator 创建的资源。
				
| 标记 | 描述 | 
|---|---|
| 
									 | 
									 | 
| 
									 | 
									用于 CLI 请求的  | 
| 
									 | 如果存在,代表在其中运行 CLI 请求的命名空间。 | 
| 
									 | 
									失败前,等待命令完成的时间。默认值为  | 
8.2.3. completion
					operator-sdk completion 命令生成 shell completion,以便更迅速、更轻松地发出 CLI 命令。
				
| 子命令 | 描述 | 
|---|---|
| 
									 | 生成 bash completion。 | 
| 
									 | 生成 zsh completion。 | 
| 标记 | 描述 | 
|---|---|
| 
									 | 使用方法帮助输出。 | 
例如:
operator-sdk completion bash
$ operator-sdk completion bash输出示例
bash completion for operator-sdk -*- shell-script -*- ex: ts=4 sw=4 et filetype=sh
# bash completion for operator-sdk                         -*- shell-script -*-
...
# ex: ts=4 sw=4 et filetype=sh8.2.4. create
					operator-sdk create 命令用于创建或 scaffold Kubernetes API。
				
8.2.4.1. api
						create api 子命令构建 Kubernetes API。子命令必须在 init 命令初始化的项目中运行。
					
| 标记 | 描述 | 
|---|---|
| 
										 | 
										 | 
8.2.5. generate
					operator-sdk generate 命令调用特定的生成器来生成代码或清单。
				
8.2.5.1. bundle
						generate bundle 子命令为您的 Operator 项目生成一组捆绑包清单、元数据和 bundle.Dockerfile 文件。
					
							通常,您首先运行 generate kustomize manifests 子命令来生成由 generate bundle 子命令使用的输入 Kustomize 基础。但是,您可以使用初始项目中的 make bundle 命令按顺序自动运行这些命令。
						
| 标记 | 描述 | 
|---|---|
| 
										 | 
										捆绑包所属频道的以逗号分隔的列表。默认值为  | 
| 
										 | 
										 | 
| 
										 | 捆绑包的默认频道。 | 
| 
										 | 
										Operator 清单的根目录,如部署和 RBAC。这个目录与传递给  | 
| 
										 | 
										 | 
| 
										 | 
										从中读取现有捆绑包的目录。这个目录是捆绑包  | 
| 
										 | 
										包含 Kustomize 基础的目录以及用于捆绑包清单的  | 
| 
										 | 生成捆绑包清单。 | 
| 
										 | 生成捆绑包元数据和 Dockerfile。 | 
| 
										 | 将捆绑包写入的目录。 | 
| 
										 | 
										如果捆绑包元数据和 Dockerfile 存在,则覆盖它们。默认值为  | 
| 
										 | 捆绑包的软件包名称。 | 
| 
										 | 在静默模式下运行。 | 
| 
										 | 将捆绑包清单写入标准输出。 | 
| 
										 | 生成的捆绑包中的 Operator 语义版本。仅在创建新捆绑包或升级 Operator 时设置。 | 
8.2.5.2. kustomize
						generate kustomize 子命令包含为 Operator 生成 Kustomize 数据的子命令。
					
8.2.5.2.1. 清单
							generate kustomize manifests 子命令生成或重新生成 Kustomize 基础以及 config/manifests 目录中的 kustomization.yaml 文件,用于其他 Operator SDK 命令构建捆绑包清单。在默认情况下,这个命令会以互动方式询问 UI 元数据,即清单基础的重要组件,除非基础已存在或设置了 --interactive=false 标志。
						
| 标记 | 描述 | 
|---|---|
| 
											 | API 类型定义的根目录。 | 
| 
											 | 
											 | 
| 
											 | 包含现有 Kustomize 文件的目录。 | 
| 
											 | 
											当设置为  | 
| 
											 | 写入 Kustomize 文件的目录。 | 
| 
											 | 软件包名称。 | 
| 
											 | 在静默模式下运行。 | 
8.2.6. init
					operator-sdk init 命令初始化 Operator 项目,并为给定插件生成或 scaffolds 默认项目目录布局。
				
这个命令会写入以下文件:
- boilerplate 许可证文件
- 
							带有域和库的PROJECT文件
- 
							构建项目的Makefile
- 
							go.mod文件带有项目依赖项
- 
							用于自定义清单的 kustomization.yaml文件
- 用于为管理器清单自定义镜像的补丁文件
- 启用 Prometheus 指标的补丁文件
- 
							运行的 main.go文件
| 标记 | 描述 | 
|---|---|
| 
									 | 
									 | 
| 
									 | 
									插件的名称和可选版本,用于初始化项目。可用插件包括  | 
| 
									 | 
									项目版本。可用值为  | 
8.2.7. run
					operator-sdk run 命令提供可在各种环境中启动 Operator 的选项。
				
8.2.7.1. bundle
						run bundle 子命令使用 Operator Lifecycle Manager(OLM)以捆绑包格式部署 Operator。
					
| 标记 | 描述 | 
|---|---|
| 
										 | 
										在其中注入捆绑包的索引镜像。默认镜像为  | 
| 
										 | 
										安装 Operator 的集群服务版本(CSV)支持的模式,如  | 
| 
										 | 
										安装超时。默认值为  | 
| 
										 | 
										用于 CLI 请求的  | 
| 
										 | 如果存在,代表在其中运行 CLI 请求的命名空间。 | 
| 
										 | 
										指定用于目录 pod 的安全上下文。允许的值包括  | 
| 
										 | 
										 | 
- 
								restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。
8.2.7.2. bundle-upgrade
						run bundle-upgrade 子命令升级之前使用 Operator Lifecycle Manager(OLM)以捆绑包格式安装的 Operator。
					
| 标记 | 描述 | 
|---|---|
| 
										 | 
										升级超时。默认值为  | 
| 
										 | 
										用于 CLI 请求的  | 
| 
										 | 如果存在,代表在其中运行 CLI 请求的命名空间。 | 
| 
										 | 
										指定用于目录 pod 的安全上下文。允许的值包括  | 
| 
										 | 
										 | 
- 
								restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。
8.2.8. scorecard
					operator-sdk scorecard 命令运行 scorecard 工具来验证 Operator 捆绑包并提供改进建议。该命令使用一个参数,可以是捆绑包镜像,也可以是包含清单和元数据的目录。如果参数包含镜像标签,则镜像必须远程存在。
				
| 标记 | 描述 | 
|---|---|
| 
									 | 
									scorecard 配置文件的路径。默认路径为  | 
| 
									 | 
									 | 
| 
									 | 
									 | 
| 
									 | 列出哪些测试可以运行。 | 
| 
									 | 运行测试镜像的命名空间。 | 
| 
									 | 
									结果的输出格式。可用值为  | 
| 
									 | 
									使用指定安全上下文运行 scorecard 的选项。允许的值包括  | 
| 
									 | 标识选择器以确定要运行哪个测试。 | 
| 
									 | 
									用于测试的服务帐户。默认值为  | 
| 
									 | 运行测试后禁用资源清理。 | 
| 
									 | 
									等待测试完成的时间,如  | 
- 
							restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。