1.4.10.2. 订阅 YAML 表
字段 | 描述 |
---|---|
apiVersion |
必需。将值设为 |
kind |
必需。将值设为 |
metadata.name | 必需。用于标识订阅的名称。 |
metadata.namespace | 必需。用于订阅的命名空间资源。 |
metadata.labels | 可选。订阅的标签。 |
spec.channel |
可选。为订阅定义频道的命名空间名称("Namespace/Name")。定义 |
spec.sourceNamespace |
可选。将可部署资源存储在 hub 集群上的源命名空间。仅将该字段用于命名空间频道。定义 |
spec.source |
可选。存储可部署资源的 Helm 仓库的路径名称 ("URL")。仅将该字段用于 Helm 仓库频道。定义 |
spec.name |
对于 |
spec.packageFilter | 可选。定义用来查找目标可部署资源或一个可部署资源子集的参数。如果定义了多个过滤器条件,则可部署资源必须满足所有过滤器条件。 |
spec.packageFilter.version |
可选。可部署资源的一个或多个版本。您可以使用 |
spec.packageFilter.annotations | 可选。可部署资源的注解。 |
spec.packageOverrides | 可选。用于为订阅中所订阅的 Kubernetes 资源(如 Helm chart、可部署资源或频道中的其他 Kubernetes 资源)定义覆盖的部分。 |
spec.packageOverrides.packageName | 可选,但在设置覆盖时是必需的。标识将被覆盖的 Kubernetes 资源。 |
spec.packageOverrides.packageAlias | 可选。为将被覆盖的 Kubernetes 资源指定别名。 |
spec.packageOverrides.packageOverrides | 可选。用于覆盖 Kubernetes 资源的参数和替换值配置。 |
spec.placement | 必需。标识需要放置可部署资源的订阅集群,或标识定义集群的放置规则。使用放置配置为多集群部署定义值。 |
spec.placement.local |
可选,但对于独立集群或者您想要直接管理的集群是必需的。定义是否必须在本地部署订阅。将值设为 |
spec.placement.clusters |
可选。定义要放置订阅的集群。仅使用 |
spec.placement.clusters.name | 可选,但在定义订阅集群时是必需的。订阅集群的一个或多个名称。 |
spec.placement.clusterSelector |
可选。定义标签选择器,用于标识要放置订阅的集群。仅使用 |
spec.placement.placementRef |
可选。定义用于订阅的放置规则。仅使用 |
spec.placement.placementRef.name | 可选,但在使用放置规则时是必需的。订阅的放置规则名称。 |
spec.placement.placementRef.kind |
可选,但在使用放置规则时是必需的。将值设为 |
spec.overrides | 可选。需要覆盖的任何参数和值,如特定于集群的设置。 |
spec.overrides.clusterName | 可选。参数和值将被覆盖的一个或多个集群的名称。 |
spec.overrides.clusterOverrides | 可选。要覆盖的参数和值的配置。 |
spec.timeWindow | 可选。定义用于在订阅处于活跃状态或受阻时配置时间窗的设置。 |
spec.timeWindow.type | 可选,但在配置时间窗时是必需的。表示订阅在配置的时间窗内是处于活跃状态还是受阻。只有在订阅处于活跃状态时才会进行订阅的部署。 |
spec.timeWindow.location | 可选,但在配置时间窗时是必需的。为时间窗配置的时间范围的时区。所有时区都必须使用 Time Zone (tz) 数据库名称格式。如需更多信息,请参阅Time Zone 数据库。 |
spec.timeWindow.daysofweek |
可选,但在配置时间窗时是必需的。表示当使用了时间范围来创建时间窗时的每周天数。每周天数列表必须定义为数组,如 |
spec.timeWindow.hours | 可选,但在配置时间窗时是必需的。定义时间窗的时间范围。必须为每个时间窗定义小时范围的开始时间和结束时间。您可以为订阅定义多个时间窗范围。 |
spec.timeWindow.hours.start |
可选,但在配置时间窗时是必需的。定义时间窗开始的时间戳。时间戳必须使用 Go 编程语言 Kitchen 格式 |
spec.timeWindow.hours.end |
可选,但在配置时间窗时是必需的。定义时间窗结束的时间戳。时间戳必须使用 Go 编程语言 Kitchen 格式 |
备注:
-
在定义 YAML 时,订阅可以使用
packageFilters
来指向多个 Helm chart、可部署资源或其他 Kubernetes 资源。但是,订阅只会部署一个 chart、可部署资源或其他资源的最新版本。 -
对于时间窗,当您定义一个时间窗的时间范围时,必须将开始时间设置在结束时间之前。如果您要为订阅定义多个时间窗,时间窗的时间范围不能重叠。实际时间范围基于
subscription-controller
容器时间,可以设置为与您所在的时间和位置不同的时间和位置。 - 在订阅规格中,您还可以定义 Helm 发行版本的放置位置作为订阅定义的一部分。每个订阅都可以引用现有的放置规则,或者在订阅定义中直接定义放置规则。
-
当您要在
spec.placement
部分中定义订阅的放置位置时,对于多集群环境仅使用cclusters
、clusterSelector
或placementRef
中的一个。 如果您包含多个放置设置,则会使用一个设置,其他设置将被忽略。以下优先级用于决定订阅 operator 使用哪个设置:
-
placementRef
-
clusters
-
clusterSelector
-
您的订阅类似以下 YAML 内容:
apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: name: nginx namespace: ns-sub-1 labels: app: nginx-app-details spec: channel: ns-ch/predev-ch name: nginx-ingress packageFilter: version: "1.36.x" placement: placementRef: kind: PlacementRule name: towhichcluster overrides: - clusterName: "/" clusterOverrides: - path: "metadata.namespace" value: default