第 4 章 ClusterExtension [olm.operatorframework.io/v1]
- 描述
- ClusterExtension 是 clusterextensions API 的 Schema
- 类型
-
object
4.1. 规格 复制链接链接已复制到粘贴板!
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| spec 是一个可选字段,用于定义 ClusterExtension 的所需状态。 |
|
| status 是一个可选字段,用于定义 ClusterExtension 的观察状态。 |
4.1.1. .spec 复制链接链接已复制到粘贴板!
- 描述
- spec 是一个可选字段,用于定义 ClusterExtension 的所需状态。
- 类型
-
object
- 必填
-
namespace
-
serviceAccount
-
source
-
属性 | 类型 | 描述 |
---|---|---|
|
| install 是一个可选字段,用于配置 ClusterExtension 的安装选项,如 pre-flight 检查配置。 |
|
| namespace 是 Kubernetes 命名空间的引用。这是提供的 ServiceAccount 必须存在的命名空间。它还指定将扩展命名空间应用到的默认命名空间。有些扩展可能包含要应用到其他命名空间中的命名空间范围的资源。此命名空间必须存在。 命名空间是必需的,不可变,遵循 [RFC 1123] 中定义的 DNS 标签标准。它只能包含小写字母数字字符或连字符(-),以字母数字字符开头和结尾,且不超过 63 个字符 [RFC 1123]: https://tools.ietf.org/html/rfc1123 |
|
| ServiceAccount 是一个对 ServiceAccount 的引用,用于执行与管理扩展所需的集群的所有交互。ServiceAccount 必须配置有执行这些交互所需的权限。ServiceAccount 必须存在于 spec. serviceAccount 中引用的命名空间中。 |
|
| 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
属性 | 类型 | 描述 |
---|---|---|
|
| preflight 是一个可选字段,可用于配置在安装或升级 packageName 字段中指定的软件包的内容前运行的检查。 指定后,它会替换安装/升级操作的默认 preflight 配置。如果没有指定,则使用默认配置。 |
4.1.3. .spec.install.preflight 复制链接链接已复制到粘贴板!
- 描述
preflight 是一个可选字段,可用于配置在安装或升级 packageName 字段中指定的软件包的内容前运行的检查。
指定后,它会替换安装/升级操作的默认 preflight 配置。如果没有指定,则使用默认配置。
- 类型
-
object
- 必填
-
crdUpgradeSafety
-
属性 | 类型 | 描述 |
---|---|---|
|
| 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
- 必填
-
强制
-
属性 | 类型 | 描述 |
---|---|---|
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| 目录用于配置如何从目录中提供信息。当 sourceType 为 "Catalog" 时,需要此字段,否则禁止此字段。 |
|
| sourceType 是安装源类型的所需引用。 允许的值是 "Catalog" 当此字段设置为"Catalog"时,将从集群中现有的 ClusterCatalog 资源获取确定要安装的相应内容捆绑包的信息。使用 Catalog sourceType 时,还必须设置 catalog 字段。 |
4.1.7. .spec.source.catalog 复制链接链接已复制到粘贴板!
- 描述
- 目录用于配置如何从目录中提供信息。当 sourceType 为 "Catalog" 时,需要此字段,否则禁止此字段。
- 类型
-
object
- 必填
-
packageName
-
属性 | 类型 | 描述 |
---|---|---|
|
| 频道是属于 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 是要安装的软件包名称的引用,用于过滤目录中的内容。 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 是一个可选字段,可用于过滤捆绑包选择过程中使用的 ClusterCatalogs 集合。 如果未指定,则所有 ClusterCatalogs 将在捆绑包选择过程中使用。 |
|
| upgradeConstraintPolicy 是一个可选字段,用于控制目录中定义的升级路径是否为 packageName 字段中引用的软件包强制执行。 允许的值是:"CatalogProvided" 或 "SelfCertified" 或 omitted。 当此字段设置为"CatalogProvided"时,只有在满足软件包作者指定的升级限制时才进行自动升级。 当此字段设置为 "SelfCertified" 时,软件包作者指定的升级限制将被忽略。这允许升级和降级到软件包的任何版本。这被视为危险的操作,因为它可能会导致未知和潜在结果,如数据丢失。假设用户使用此选项时,用户已独立验证更改。 当省略此字段时,默认值为 "CatalogProvided"。 |
|
| 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
属性 | 类型 | 描述 |
---|---|---|
|
| matchExpressions 是标签选择器要求列表。要求的逻辑关系是 AND。 |
|
| 标签选择器要求是一个选择器,其中包含与键和值相关的值、键和值。 |
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| key 是选择器应用到的标签键。 |
|
| 运算符代表一个键与一组值的关系。有效的运算符是 In、NotIn、Exists 和 DoesNotExist。 |
|
| 值是字符串值的数组。如果运算符是 In 或 NotIn,则值数组必须是非空的。如果运算符是 Exists 或 DoesNotExist,则值数组必须为空。这个数组会在策略性合并补丁中被替换。 |
4.1.11. .status 复制链接链接已复制到粘贴板!
- 描述
- status 是一个可选字段,用于定义 ClusterExtension 的观察状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 适用于所有 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 条件。 |
|
| condition 包含此 API 资源当前状态的一个方面的详细信息。 |
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| lastTransitionTime 是条件从一个状态转换到另一个状态最后一次的时间。这应该是底层条件变化的时间。如果为未知,则使用 API 字段更改的时间是可以接受的。 |
|
| Message 是人类可读的消息,指示有关转换的详细信息。这可能是一个空字符串。 |
|
| observedGeneration 代表 .metadata.generation,这是条件设置所基于的条件。例如,如果 .metadata.generation 目前为 12,但 .status.conditions[x].observedGeneration 是 9,则代表条件与实例的当前状态已不匹配。 |
|
| reason 包含程序标识符,指示条件最后一次转换的原因。特定条件类型的制作者可能会定义预期的值和此字段的含义,以及这些值是否被视为有保证的 API。该值应该是 CamelCase 字符串。此字段可能不是空的。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| CamelCase 或 foo.example.com/CamelCase 中的条件类型。 |
4.1.14. .status.install 复制链接链接已复制到粘贴板!
- 描述
- install 是此 ClusterExtension 的当前安装状态表示。
- 类型
-
object
- 必填
-
bundle
-
属性 | 类型 | 描述 |
---|---|---|
|
| bundle 是一个必填字段,代表捆绑包的标识属性。 "bundle"是一组版本化的内容,代表需要应用到集群以安装软件包的资源。 |
4.1.15. .status.install.bundle 复制链接链接已复制到粘贴板!
- 描述
bundle 是一个必填字段,代表捆绑包的标识属性。
"bundle"是一组版本化的内容,代表需要应用到集群以安装软件包的资源。
- 类型
-
object
- 必填
-
name
-
version
-
属性 | 类型 | 描述 |
---|---|---|
|
| 名称是必需的,并遵循 [RFC 1123] 中定义的 DNS 子域标准。它必须包含小写字母数字字符、连字符(-)或句点(.),以字母数字字符开头和结尾,且不超过 253 个字符。 |
|
| Version 是一个必填字段,它是此捆绑包代表版本的引用,它遵循 https://semver.org/ 中定义的语义版本标准。 |