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 的完整文档,请参阅 Operators

8.2.1. bundle

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

8.2.1.1. validate

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

表 8.1. bundle validate 标记
标记描述

-h--help

bundle validate 子命令的帮助输出。

--index-builder(字符串)

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

--list-optional

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

--select-optional(字符串)

选择要运行的可选验证器的标签选择器。当使用 --list-optional 标志运行时,会列出可用的可选验证器。

8.2.2. cleanup

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

表 8.2. cleanup 标记
标记描述

-h--help

run bundle 子命令的帮助输出。

--kubeconfig (string)

用于 CLI 请求的 kubeconfig 文件的路径。

-n--namespace (字符串)

如果存在,代表在其中运行 CLI 请求的命名空间。

--timeout <duration>

失败前,等待命令完成的时间。默认值为 2m0s

8.2.3. completion

operator-sdk completion 命令生成 shell completion,以便更迅速、更轻松地发出 CLI 命令。

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

bash

生成 bash completion。

zsh

生成 zsh completion。

表 8.4. completion 标记
标记描述

-h, --help

使用方法帮助输出。

例如:

$ operator-sdk completion bash

输出示例

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

8.2.4. create

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

8.2.4.1. api

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

表 8.5. create api 标记
标记描述

-h--help

run bundle 子命令的帮助输出。

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 命令按顺序自动运行这些命令。

表 8.6. generate bundle 标记
标记描述

--channels(字符串)

捆绑包所属频道的以逗号分隔的列表。默认值为 alpha

--crds-dir(字符串)

CustomResoureDefinition 清单的根目录。

--default-channel(字符串)

捆绑包的默认频道。

--deploy-dir(字符串)

Operator 清单的根目录,如部署和 RBAC。这个目录与传递给 --input-dir 标记的目录不同。

-h--help

generate bundle 的帮助信息

--input-dir(字符串)

从中读取现有捆绑包的目录。这个目录是捆绑包 manifests 目录的父目录,它与 --deploy-dir 目录不同。

--kustomize-dir(字符串)

包含 Kustomize 基础的目录以及用于捆绑包清单的 kustomization.yaml 文件。默认路径为 config/manifests

--manifests

生成捆绑包清单。

--metadata

生成捆绑包元数据和 Dockerfile。

--output-dir(字符串)

将捆绑包写入的目录。

--overwrite

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

--package(字符串)

捆绑包的软件包名称。

-q--quiet

在静默模式下运行。

--stdout

将捆绑包清单写入标准输出。

--version(字符串)

生成的捆绑包中的 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 标志。

表 8.7. generate kustomize manifests 标记
标记描述

--apis-dir(字符串)

API 类型定义的根目录。

-h--help

generate kustomize manifests 的帮助信息。

--input-dir(字符串)

包含现有 Kustomize 文件的目录。

--interactive

当设置为 false 时,如果没有 Kustomize 基础,则会出现交互式命令提示符来接受自定义元数据。

--output-dir(字符串)

写入 Kustomize 文件的目录。

--package(字符串)

软件包名称。

-q--quiet

在静默模式下运行。

8.2.6. init

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

这个命令会写入以下文件:

  • boilerplate 许可证文件
  • 带有域和库的PROJECT 文件
  • 构建项目的Makefile
  • go.mod 文件带有项目依赖项
  • 用于自定义清单的 kustomization.yaml 文件
  • 用于为管理器清单自定义镜像的补丁文件
  • 启用 Prometheus 指标的补丁文件
  • 运行的 main.go 文件
表 8.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(默认值)。

8.2.7. run

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

8.2.7.1. bundle

run bundle 子命令使用 Operator Lifecycle Manager(OLM)以捆绑包格式部署 Operator。

表 8.9. run bundle 标记
标记描述

--index-image(字符串)

在其中注入捆绑包的索引镜像。默认镜像为 quay.io/operator-framework/upstream-opm-builder:latest

--install-mode <install_mode_value>

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

--timeout <duration>

安装超时。默认值为 2m0s

--kubeconfig (string)

用于 CLI 请求的 kubeconfig 文件的路径。

-n--namespace (字符串)

如果存在,代表在其中运行 CLI 请求的命名空间。

--security-context-config <security_context>

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

-h--help

run bundle 子命令的帮助输出。

  1. restricted 安全上下文与 default 命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。

其他资源

8.2.7.2. bundle-upgrade

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

表 8.10. run bundle-upgrade 标记
标记描述

--timeout <duration>

升级超时。默认值为 2m0s

--kubeconfig (string)

用于 CLI 请求的 kubeconfig 文件的路径。

-n--namespace (字符串)

如果存在,代表在其中运行 CLI 请求的命名空间。

--security-context-config <security_context>

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

-h--help

run bundle 子命令的帮助输出。

  1. restricted 安全上下文与 default 命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。

8.2.8. scorecard

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

表 8.11. scorecard 标记
标记描述

-c, --config(字符串)

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

-h--help

scorecard 命令的帮助输出。

--kubeconfig (string)

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

等待测试完成的时间,如 35s。默认值为 30s

  1. restricted 安全上下文与 default 命名空间不兼容。要在生产环境中配置 Operator 的 pod 安全准入,请参阅"Complying with pod 安全准入"。如需有关 pod 安全准入的更多信息,请参阅"了解和管理 pod 安全准入"。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.