第 4 章 ClusterExtension [olm.operatorframework.io/v1]


描述
ClusterExtension 是 clusterextensions API 的 Schema
类型
object

4.1. 规格

Expand
属性类型描述

apiVersion

string

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

spec 是一个可选字段,用于定义 ClusterExtension 的所需状态。

status

object

status 是一个可选字段,用于定义 ClusterExtension 的观察状态。

4.1.1. .spec

描述
spec 是一个可选字段,用于定义 ClusterExtension 的所需状态。
类型
object
必填
  • namespace
  • serviceAccount
  • source
Expand
属性类型描述

install

object

install 是一个可选字段,用于配置 ClusterExtension 的安装选项,如 pre-flight 检查配置。

namespace

string

namespace 是 Kubernetes 命名空间的引用。这是提供的 ServiceAccount 必须存在的命名空间。它还指定将扩展命名空间应用到的默认命名空间。有些扩展可能包含要应用到其他命名空间中的命名空间范围的资源。此命名空间必须存在。

命名空间是必需的,不可变,遵循 [RFC 1123] 中定义的 DNS 标签标准。它只能包含小写字母数字字符或连字符(-),以字母数字字符开头和结尾,且不超过 63 个字符

[RFC 1123]: https://tools.ietf.org/html/rfc1123

serviceAccount

object

ServiceAccount 是一个对 ServiceAccount 的引用,用于执行与管理扩展所需的集群的所有交互。ServiceAccount 必须配置有执行这些交互所需的权限。ServiceAccount 必须存在于 spec. serviceAccount 中引用的命名空间中。

source

object

source 是一个必填字段,用于选择此 ClusterExtension 的安装源。通过设置 sourceType 来执行选择。

Catalog 目前是唯一实施的 sourceType,将 sourcetype 设置为 "Catalog" 需要也定义 catalog 字段。

以下是源定义的最小示例(在 yaml 中):

source: sourceType: Catalog catalog: packageName: example-package

4.1.2. .spec.install

描述
install 是一个可选字段,用于配置 ClusterExtension 的安装选项,如 pre-flight 检查配置。
类型
object
Expand
属性类型描述

preflight

object

preflight 是一个可选字段,可用于配置在安装或升级 packageName 字段中指定的软件包的内容前运行的检查。

指定后,它会替换安装/升级操作的默认 preflight 配置。如果没有指定,则使用默认配置。

4.1.3. .spec.install.preflight

描述

preflight 是一个可选字段,可用于配置在安装或升级 packageName 字段中指定的软件包的内容前运行的检查。

指定后,它会替换安装/升级操作的默认 preflight 配置。如果没有指定,则使用默认配置。

类型
object
必填
  • crdUpgradeSafety
Expand
属性类型描述

crdUpgradeSafety

object

crdUpgradeSafety 用于配置在升级安装内容前运行的 CRD Upgrade Safety pre-flight 检查。

CRD 升级 Safety pre-flight 检查可防止升级 CRD 的意外后果,如数据丢失。

4.1.4. .spec.install.preflight.crdUpgradeSafety

描述

crdUpgradeSafety 用于配置在升级安装内容前运行的 CRD Upgrade Safety pre-flight 检查。

CRD 升级 Safety pre-flight 检查可防止升级 CRD 的意外后果,如数据丢失。

类型
object
必填
  • 强制
Expand
属性类型描述

强制

string

enforcement 是一个必填字段,用于配置 CRD Upgrade Safety pre-flight 检查的状态。

允许的值是 "None" 或 "Strict"。默认值为 "Strict"。

当设置为 "None" 时,在执行升级操作时会跳过 CRD Upgrade Safety pre-flight 检查。这应该谨慎使用,因为可能会发生数据丢失等意外的结果。

当设置为 "Strict" 时,CRD 升级 Safety pre-flight 检查将在执行升级操作时运行。

4.1.5. .spec.serviceAccount

描述
ServiceAccount 是一个对 ServiceAccount 的引用,用于执行与管理扩展所需的集群的所有交互。ServiceAccount 必须配置有执行这些交互所需的权限。ServiceAccount 必须存在于 spec. serviceAccount 中引用的命名空间中。
类型
object
必填
  • name
Expand
属性类型描述

name

string

name 是必需的,不可变地引用到用于安装和管理 packageName 字段中指定的软件包内容的 ServiceAccount 名称。

此 ServiceAccount 必须存在于 installNamespace 中。

名称遵循 [RFC 1123] 中定义的 DNS 子域标准。它必须包含小写字母数字字符、连字符(-)或句点(.),以字母数字字符开头和结尾,且不超过 253 个字符。

有效值的一些示例有: - some-serviceaccount - 123-serviceaccount - 1-serviceaccount-2 - someserviceaccount - some.serviceaccount

无效值的一些示例有: -some-serviceaccount - some-serviceaccount-

[RFC 1123]: https://tools.ietf.org/html/rfc1123

4.1.6. .spec.source

描述

source 是一个必填字段,用于选择此 ClusterExtension 的安装源。通过设置 sourceType 来执行选择。

Catalog 目前是唯一实施的 sourceType,将 sourcetype 设置为 "Catalog" 需要也定义 catalog 字段。

以下是源定义的最小示例(在 yaml 中):

source: sourceType: Catalog catalog: packageName: example-package

类型
object
必填
  • sourceType
Expand
属性类型描述

catalog

object

目录用于配置如何从目录中提供信息。当 sourceType 为 "Catalog" 时,需要此字段,否则禁止此字段。

sourceType

string

sourceType 是安装源类型的所需引用。

允许的值是 "Catalog"

当此字段设置为"Catalog"时,将从集群中现有的 ClusterCatalog 资源获取确定要安装的相应内容捆绑包的信息。使用 Catalog sourceType 时,还必须设置 catalog 字段。

4.1.7. .spec.source.catalog

描述
目录用于配置如何从目录中提供信息。当 sourceType 为 "Catalog" 时,需要此字段,否则禁止此字段。
类型
object
必填
  • packageName
Expand
属性类型描述

Channels

数组(字符串)

频道是属于 packageName 字段中指定的软件包的一组频道的可选引用。

"channel"是扩展的一个软件包授权更新流。

列表中的每个频道都必须遵循 [RFC 1123] 中定义的 DNS 子域标准。它必须包含小写字母数字字符、连字符(-)或句点(.),以字母数字字符开头和结尾,且不超过 253 个字符。不指定超过 256 个频道。

指定后,它会限制一组可安装的捆绑包和自动升级路径。此约束是带有 version 字段的 AND 操作。例如: - Given channel 设置为 "foo" - Given version 设置为 ">=1.0.0, <1.5.0" - 只有频道 "foo" AND 满足版本范围比较中的捆绑包将被视为可安装 - 自动升级将受所选频道定义的升级边缘

如果未指定,则使用所有频道之间的升级边缘来识别有效的自动升级路径。

有效值的一些示例包括: - 1.1.x - alpha - stable - stable-v1 - v1-stable - dev-preview - preview - community

无效值的一些示例为: -some-channel - some-channel- - thisisareallylongchannelname thatisgreaterthanthemaximumlength - original_40 - --default-channel

[RFC 1123]: https://tools.ietf.org/html/rfc1123

packageName

string

packagename 是要安装的软件包名称的引用,用于过滤目录中的内容。

packageName 是必需的,不可变,并遵循 [RFC 1123] 中定义的 DNS 子域标准。它必须包含小写字母数字字符、连字符(-)或句点(.),以字母数字字符开头和结尾,且不超过 253 个字符。

有效值的一些示例包括: - some-package - 123-package - 1-package-2 - somepackage

无效的值的一些示例有: -some-package - some-package- - thisisareallylongpackagename thatisgreaterthanthemaximumlength - some.package

[RFC 1123]: https://tools.ietf.org/html/rfc1123

selector

object

selector 是一个可选字段,可用于过滤捆绑包选择过程中使用的 ClusterCatalogs 集合。

如果未指定,则所有 ClusterCatalogs 将在捆绑包选择过程中使用。

upgradeConstraintPolicy

string

upgradeConstraintPolicy 是一个可选字段,用于控制目录中定义的升级路径是否为 packageName 字段中引用的软件包强制执行。

允许的值是:"CatalogProvided" 或 "SelfCertified" 或 omitted。

当此字段设置为"CatalogProvided"时,只有在满足软件包作者指定的升级限制时才进行自动升级。

当此字段设置为 "SelfCertified" 时,软件包作者指定的升级限制将被忽略。这允许升级和降级到软件包的任何版本。这被视为危险的操作,因为它可能会导致未知和潜在结果,如数据丢失。假设用户使用此选项时,用户已独立验证更改。

当省略此字段时,默认值为 "CatalogProvided"。

version

string

version 是一个可选 semver 约束(特定版本或版本范围)。如果未指定,将安装最新的可用版本。

可接受的版本范围不超过 64 个字符。版本范围由逗号分隔的值以及一个或多个比较运算符组成,称为比较字符串。可以使用 OR 运算符(||)添加其他比较字符串。

# range compares

要指定版本范围,您可以使用类似 ">=3.0, <3.6" 的比较字符串。在指定范围时,将自动在该范围内进行自动更新。示例比较字符串表示"安装大于或等于 3.0.0 的任何版本,但小于 3.6.0"。它还要求,如果在初始安装后的版本范围内有任何升级可用,则应自动执行这些升级。

# pinned Versions

要指定要安装的具体版本,您可以使用一个 "pins" 到特定版本的版本范围。当固定到特定版本时,不会发生自动更新。固定版本范围的示例为 "0.6.0",即 "only install version 0.6.0 且永远不会从这个版本升级"。

ip basic compare Operators

基本比较运算符及其含义是: - "=", equal (not aliased to an operator)- "!=", not equal - "<", less than - ">", greater than - ">=", than OR equal to - " and than to

# 通配符比较

在所有比较操作中使用 "x"、"X" 和 "" 字符作为通配符字符。使用通配符字符的一些示例: - "1.2.x"、"1.2.X" 和 "1.2." 等同于 ">=1.2.0, < 1.3.0" - ">= 1.2.x", ">= 1.2.X", 和 ">= 1.2.X"。" swig 2.X" 和 "5-4 2." 等同于 "< 3" - "x", "X", 和 "*" 等同于 ">= 0.0.0"

# patch Release compares

当您想要指定直到下一个主版本的次版本时,您可以使用 "~" 字符来执行补丁比较。有些示例: - "~1.2.3" 等同于 ">=1.2.3, <1.3.0" - "~1" 和 "~1.x" 等同于 ">=1, <2" - "~2.3" 等同于 ">=2.3, <2.4" - "~1.2.x" 等同于 ">=1.2.0, <1.3.0"

# 主发行版本比较

您可以使用 "^" 字符在 stable 1.0.0 版本发布后进行主版本比较。如果没有发布稳定版本,//次版本会定义稳定性级别。一些示例: - "^1.2.3" 等同于 ">=1.2.3, <2.0.0" - "^1.2.x" 等同于 ">=1.2.0, <2.0.0" - "^2.3" 等同于 ">=2.3, <3" - "^2.x" 等同于 ">=2.0.0, <3" - "^0.2.3" 等同于 ">=2.0.2.3",<0.3.0" - "^0.2"等同于 ">=0.2.0, <0.3.0" - "^0.0.3" is equvalent to ">=0.0.3, <0.0.4" - "^0.0" 等同于 ">=0.0.0, <0.1.0" - "^0" - "^0" 等同于 ">=0.0.0, <1.0.0"

# OR compares can use the "||" 字符来代表版本范围内的 OR 操作。一些示例: - ">=1.2.3, <2.0.0 || >3.0.0" - "^0 || ^3 || ^5"

有关 semver 的更多信息,请参阅 https://semver.org/

4.1.8. .spec.source.catalog.selector

描述

selector 是一个可选字段,可用于过滤捆绑包选择过程中使用的 ClusterCatalogs 集合。

如果未指定,则所有 ClusterCatalogs 将在捆绑包选择过程中使用。

类型
object
Expand
属性类型描述

matchExpressions

array

matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。

matchExpressions[]

对象

标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。

matchLabels

对象(字符串)

matchLabels 是 {key,value} 对的映射。MatchLabels 映射中的单个 {key,value} 等同于 matchExpressions 的一个元素,其 key 字段是 "key",运算符是 "In",值数组仅包含 "value"。要求的逻辑关系是 AND。

4.1.9. .spec.source.catalog.selector.matchExpressions

描述
matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。
类型
数组

4.1.10. .spec.source.catalog.selector.matchExpressions[]

描述
标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。
类型
object
必填
  • key
  • operator
Expand
属性类型描述

key

字符串

key 是选择器应用到的标签键。

operator

字符串

运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。

数组(字符串)

值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。

4.1.11. .status

描述
status 是一个可选字段,用于定义 ClusterExtension 的观察状态。
类型
object
Expand
属性类型描述

conditions

数组

适用于所有 spec.source 变体的条件类型集合是 Installed 和 Progressing。

Installed 条件代表该 ClusterExtension 是否已安装捆绑包。当 Installed 为 True 且 Reason 为 Succeeded 时,捆绑包已被成功安装。当 Installed 为 False 且 Reason 为 Failed 时,捆绑包无法安装。

Progressing 条件代表 ClusterExtension 是否提升到一个新的状态。当 Progressing 为 True 且 Reason 为 Succeeded 时,ClusterExtension 会对新状态进行进度。当 Progressing 为 True 且 Reason 为 Retrying 时,ClusterExtension 遇到了在后续协调尝试中可以解决的错误。当 Progressing 为 False 且 Reason 为 Blocked 时,ClusterExtension 遇到一个错误,需要手动干预以进行恢复。

当 ClusterExtension 从目录中提供时,如果也可能会通信弃用条件。它们从软件包所有者显示,以指导用户离开特定软件包、频道或捆绑包。如果请求的捆绑包版本在目录中已弃用,则设置 BundleDeprecated。如果请求的频道在目录中已弃用,则 ChannelDeprecated 会被设置。如果请求的软件包在目录中已弃用,则设置 PackageDeprecated。deprecated 是一个在出现任何已弃用条件时出现的 rollup 条件。

conditions[]

object

condition 包含此 API 资源当前状态的一个方面的详细信息。

install

object

install 是此 ClusterExtension 的当前安装状态表示。

4.1.12. .status.conditions

描述

适用于所有 spec.source 变体的条件类型集合是 Installed 和 Progressing。

Installed 条件代表该 ClusterExtension 是否已安装捆绑包。当 Installed 为 True 且 Reason 为 Succeeded 时,捆绑包已被成功安装。当 Installed 为 False 且 Reason 为 Failed 时,捆绑包无法安装。

Progressing 条件代表 ClusterExtension 是否提升到一个新的状态。当 Progressing 为 True 且 Reason 为 Succeeded 时,ClusterExtension 会对新状态进行进度。当 Progressing 为 True 且 Reason 为 Retrying 时,ClusterExtension 遇到了在后续协调尝试中可以解决的错误。当 Progressing 为 False 且 Reason 为 Blocked 时,ClusterExtension 遇到一个错误,需要手动干预以进行恢复。

当 ClusterExtension 从目录中提供时,如果也可能会通信弃用条件。它们从软件包所有者显示,以指导用户离开特定软件包、频道或捆绑包。如果请求的捆绑包版本在目录中已弃用,则设置 BundleDeprecated。如果请求的频道在目录中已弃用,则 ChannelDeprecated 会被设置。如果请求的软件包在目录中已弃用,则设置 PackageDeprecated。deprecated 是一个在出现任何已弃用条件时出现的 rollup 条件。

类型
array

4.1.13. .status.conditions[]

描述
condition 包含此 API 资源当前状态的一个方面的详细信息。
类型
object
必填
  • lastTransitionTime
  • message
  • reason
  • status
  • type
Expand
属性类型描述

lastTransitionTime

字符串

lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。

message

字符串

Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。

observedGeneration

整数

observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。

reason

字符串

reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。

status

字符串

条件的状态,True, False, Unknown 之一。

type

字符串

CamelCase 或 foo.example.com/CamelCase 中的条件类型。

4.1.14. .status.install

描述
install 是此 ClusterExtension 的当前安装状态表示。
类型
object
必填
  • bundle
Expand
属性类型描述

bundle

object

bundle 是一个必填字段,代表捆绑包的标识属性。

"bundle"是一组版本化的内容,代表需要应用到集群以安装软件包的资源。

4.1.15. .status.install.bundle

描述

bundle 是一个必填字段,代表捆绑包的标识属性。

"bundle"是一组版本化的内容,代表需要应用到集群以安装软件包的资源。

类型
object
必填
  • name
  • version
Expand
属性类型描述

name

string

名称是必需的,并遵循 [RFC 1123] 中定义的 DNS 子域标准。它必须包含小写字母数字字符、连字符(-)或句点(.),以字母数字字符开头和结尾,且不超过 253 个字符。

version

string

Version 是一个必填字段,它是此捆绑包代表版本的引用,它遵循 https://semver.org/ 中定义的语义版本标准。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat