×

Operator SDK 命令行界面 (CLI) 是一款旨在简化编写 Operator 的开发工具包。

Red Hat 支持的 Operator SDK CLI 工具版本(包括与 Operator 项目相关的脚手架和测试工具)已弃用,并计划在未来版本的 OpenShift Container Platform 中移除。Red Hat 将在此版本的生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 OpenShift Container Platform 版本中移除。

不建议使用 Red Hat 支持的 Operator SDK 版本创建新的 Operator 项目。拥有现有 Operator 项目的操作员作者可以使用 OpenShift Container Platform 4.17 发布的 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>]

拥有 Kubernetes 基于集群(例如 OpenShift Container Platform)的集群管理员访问权限的操作员作者可以使用 Operator SDK CLI 基于 Go、Ansible 或 Helm 开发他们自己的 Operator。Kubebuilder 作为 Go 基于 Operator 的脚手架解决方案嵌入到 Operator SDK 中,这意味着现有的 Kubebuilder 项目可以与 Operator SDK 原样使用并继续工作。

bundle(捆绑包)

operator-sdk bundle 命令管理 Operator 捆绑包元数据。

validate(验证)

bundle validate 子命令验证 Operator 捆绑包。

表 1. bundle validate 标志
标志 描述

-h, --help

bundle validate 子命令的帮助输出。

--index-builder (字符串)

用于拉取和解压捆绑包镜像的工具。仅在验证捆绑包镜像时使用。可用选项包括 docker(默认值)、podmannone

--list-optional

列出所有可用的可选验证器。设置后,不运行任何验证器。

--select-optional (字符串)

标签选择器,用于选择要运行的可选验证器。与--list-optional标志一起运行时,列出可用的可选验证器。

cleanup(清理)

operator-sdk cleanup 命令销毁并删除为使用run命令部署的 Operator 创建的资源。

表 2. cleanup 标志
标志 描述

-h, --help

run bundle 子命令的帮助输出。

--kubeconfig (字符串)

CLI 请求要使用的kubeconfig文件的路径。

-n, --namespace (字符串)

如果存在,则运行 CLI 请求的命名空间。

--timeout <持续时间>

命令完成前等待的时间,超时则报错。默认值为2m0s

completion

operator-sdk completion 命令生成 shell 自动补全功能,使 CLI 命令的发出更快更容易。

表 3. completion 子命令
子命令 描述

bash

生成 bash 自动补全功能。

zsh

生成 zsh 自动补全功能。

表 4. completion 标记
标志 描述

-h, --help

使用方法帮助输出。

例如

$ operator-sdk completion bash
示例输出
# bash completion for operator-sdk                         -*- shell-script -*-
...
# ex: ts=4 sw=4 et filetype=sh

create

operator-sdk create 命令用于创建或构建 Kubernetes API。

api

create api 子命令构建 Kubernetes API。此子命令必须在使用init命令初始化的项目中运行。

表 5. create api 标记
标志 描述

-h, --help

run bundle 子命令的帮助输出。

generate

operator-sdk generate 命令调用特定的生成器来生成代码或清单文件。

bundle

generate bundle 子命令为您的 Operator 项目生成一组 bundle 清单文件、元数据和bundle.Dockerfile文件。

通常,您首先运行generate kustomize manifests子命令来生成generate bundle子命令使用的输入Kustomize基础。但是,您可以在初始化的项目中使用make bundle命令来自动按顺序运行这些命令。

表 6. generate bundle 标记
标志 描述

--channels (字符串)

bundle所属的通道的逗号分隔列表。默认值为alpha

--crds-dir (字符串)

CustomResoureDefinition清单文件的根目录。

--default-channel (字符串)

bundle的默认通道。

--deploy-dir (字符串)

Operator 清单文件(例如部署和 RBAC)的根目录。此目录与传递给--input-dir标记的目录不同。

-h, --help

generate bundle 帮助信息

--input-dir (字符串)

从中读取现有 bundle 的目录。此目录是 bundle manifests 目录的父目录,与--deploy-dir目录不同。

--kustomize-dir (字符串)

包含 Kustomize 基础和 bundle 清单文件的kustomization.yaml文件的目录。默认路径为config/manifests

--manifests

生成 bundle 清单文件。

--metadata

生成 bundle 元数据和 Dockerfile。

--output-dir (字符串)

写入 bundle 的目录。

--overwrite

如果 bundle 元数据和 Dockerfile 存在,则覆盖它们。默认值为true

--package (字符串)

bundle 的包名称。

-q, --quiet

在静默模式下运行。

--stdout

将 bundle 清单文件写入标准输出。

--version (字符串)

生成的 bundle 中 Operator 的语义版本。仅在创建新的 bundle 或升级 Operator 时设置。

其他资源
  • 请参阅打包 Operator,了解包含使用make bundle命令调用generate bundle子命令的完整流程。

kustomize

generate kustomize 子命令包含用于生成 Operator 的Kustomize数据的子命令。

manifests

generate kustomize manifests 子命令在config/manifests目录中生成或重新生成 Kustomize 基础和kustomization.yaml文件,这些文件用于通过其他 Operator SDK 命令构建 bundle 清单文件。除非已存在基础或您设置了--interactive=false标记,否则此命令默认情况下会交互式地询问 UI 元数据(清单基础的重要组成部分)。

表 7. generate kustomize manifests 标记
标志 描述

--apis-dir (字符串)

API 类型定义的根目录。

-h, --help

generate kustomize manifests 帮助信息。

--input-dir (字符串)

包含现有 Kustomize 文件的目录。

--interactive

设置为false时,如果不存在 Kustomize 基础,则会显示交互式命令提示符以接受自定义元数据。

--output-dir (字符串)

写入 Kustomize 文件的目录。

--package (字符串)

包名称。

-q, --quiet

在静默模式下运行。

init

operator-sdk init 命令初始化 Operator 项目并为给定的插件生成或构建默认项目目录布局。

此命令写入以下文件:

  • 样板许可证文件

  • 包含域和存储库的PROJECT文件

  • 用于构建项目的Makefile

  • 包含项目依赖项的go.mod文件

  • 用于自定义清单文件的kustomization.yaml文件

  • 用于自定义管理器清单文件映像的补丁文件

  • 用于启用 Prometheus 指标的补丁文件

  • 用于运行的main.go文件

表 8. init 标记
标志 描述

--help, -h

init 命令的帮助输出。

--plugins (字符串)

用于初始化项目的插件的名称和可选版本。可用的插件有ansible.sdk.operatorframework.io/v1go.kubebuilder.io/v2go.kubebuilder.io/v3helm.sdk.operatorframework.io/v1

--project-version

项目版本。可用值为23-alpha(默认值)。

run

operator-sdk run 命令提供可在各种环境中启动 Operator 的选项。

bundle

run bundle 子命令使用 Operator Lifecycle Manager (OLM) 部署 bundle 格式的 Operator。

表 9. run bundle 标记
标志 描述

--index-image (字符串)

用于注入 bundle 的索引镜像。默认镜像为quay.io/operator-framework/upstream-opm-builder:latest

--install-mode <install_mode_value>

Operator 的集群服务版本 (CSV) 支持的安装模式,例如AllNamespacesSingleNamespace

--timeout <持续时间>

安装超时。默认值为2m0s

--kubeconfig (字符串)

CLI 请求要使用的kubeconfig文件的路径。

-n, --namespace (字符串)

如果存在,则运行 CLI 请求的命名空间。

--security-context-config <security_context>

指定用于目录 pod 的安全上下文。允许的值包括restrictedlegacy。默认值为legacy[1]

-h, --help

run bundle 子命令的帮助输出。

  1. restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 Pod 安全准入,请参见“遵守 Pod 安全准入”。有关 Pod 安全准入的更多信息,请参见“了解和管理 Pod 安全准入”。

其他资源

bundle-upgrade

run bundle-upgrade 子命令用于升级之前使用 Operator Lifecycle Manager (OLM) 以 bundle 格式安装的 Operator。

表 10. run bundle-upgrade 标志
标志 描述

--timeout <持续时间>

升级超时时间。默认值为 2m0s

--kubeconfig (字符串)

CLI 请求要使用的kubeconfig文件的路径。

-n, --namespace (字符串)

如果存在,则运行 CLI 请求的命名空间。

--security-context-config <security_context>

指定用于目录 pod 的安全上下文。允许的值包括restrictedlegacy。默认值为legacy[1]

-h, --help

run bundle 子命令的帮助输出。

  1. restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 Pod 安全准入,请参见“遵守 Pod 安全准入”。有关 Pod 安全准入的更多信息,请参见“了解和管理 Pod 安全准入”。

scorecard

operator-sdk scorecard 命令运行 scorecard 工具来验证 Operator bundle 并提供改进建议。该命令接受一个参数,可以是 bundle 镜像或包含清单和元数据的目录。如果参数包含镜像标签,则该镜像必须远程存在。

表 11. scorecard 标志
标志 描述

-c, --config (字符串)

scorecard 配置文件的路径。默认路径为 bundle/tests/scorecard/config.yaml

-h, --help

scorecard 命令的帮助输出。

--kubeconfig (字符串)

kubeconfig 文件的路径。

-L, --list

列出可运行的测试。

-n, --namespace (字符串)

运行测试镜像的命名空间。

-o, --output (字符串)

结果的输出格式。可用值为 text(默认值)和 json

--pod-security

使用指定的安全上下文运行 scorecard 的选项。允许的值包括 restrictedlegacy。默认值为 legacy[1]

-l, --selector (字符串)

标签选择器,用于确定要运行哪些测试。

-s, --service-account (字符串)

用于测试的服务帐户。默认值为 default

-x, --skip-cleanup

禁用测试运行后的资源清理。

-w, --wait-time

等待测试完成的秒数,例如 35s。默认值为 30s

  1. restricted安全上下文与default命名空间不兼容。要在生产环境中配置 Operator 的 Pod 安全准入,请参见“遵守 Pod 安全准入”。有关 Pod 安全准入的更多信息,请参见“了解和管理 Pod 安全准入”。

其他资源