×

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

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

不建议使用红帽支持的 Operator SDK 版本创建新的 Operator 项目。拥有现有 Operator 项目的 Operator 作者可以使用 OpenShift Dedicated 发布的 Operator SDK CLI 工具版本来维护其项目并创建针对较新版本的 OpenShift Dedicated 的 Operator 版本。

以下与 Operator 项目相关的基础镜像 *未* 被弃用。这些基础镜像的运行时功能和配置 API 仍受支持,用于修复错误和解决 CVE。

  • 基于 Ansible 的 Operator 项目的基础镜像

  • 基于 Helm 的 Operator 项目的基础镜像

有关不受支持的社区维护的 Operator SDK 版本的信息,请参见 Operator SDK (Operator Framework)

Operator SDK CLI 语法
$ operator-sdk <command> [<subcommand>] [<argument>] [<flags>]

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

bundle

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

validate

bundle validate 子命令验证 Operator bundle。

表 1. bundle validate 标志
标志 描述

-h, --help

bundle validate 子命令的帮助输出。

--index-builder (字符串)

用于拉取和解压 bundle 镜像的工具。仅在验证 bundle 镜像时使用。可用选项包括 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 子命令包含用于生成 Kustomize Operator 数据的子命令。

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

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 <security_context>

使用指定的安全上下文运行 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 安全准入”。

其他资源