diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml index 508ad3935..6053e30ff 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmagents.yaml @@ -1643,6 +1643,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdate: description: RollingUpdate - overrides deployment update params. properties: @@ -1683,7 +1687,7 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true selectAllByDefault: - description: 'SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector. with selectAllScrapes: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector Operator selects all exist serviceScrapes with selectAllScrapes: false - selects nothing' + description: 'SelectAllByDefault changes default behavior for empty CRD selectors, such ServiceScrapeSelector. with selectAllByDefault: true and empty serviceScrapeSelector and ServiceScrapeNamespaceSelector Operator selects all exist serviceScrapes with selectAllByDefault: false - selects nothing' type: boolean serviceAccountName: description: ServiceAccountName is the name of the ServiceAccount to use to run the VMAgent Pods. diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml index 3f17ae22c..842bee9d3 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalertmanagers.yaml @@ -536,6 +536,10 @@ spec: description: Retention Time duration VMAlertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). pattern: '[0-9]+(ms|s|m|h)' type: string + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdateStrategy: description: RollingUpdateStrategy defines strategy for application updates Default is OnDelete, in this case operator handles update process Can be changed for RollingUpdate type: string @@ -558,7 +562,7 @@ spec: type: object x-kubernetes-preserve-unknown-fields: true selectAllByDefault: - description: 'SelectAllByDefault changes default behavior for empty CRD selectors, such ConfigSelector. with selectAllScrapes: true and undefined ConfigSelector and ConfigNamespaceSelector Operator selects all exist alertManagerConfigs with selectAllScrapes: false - selects nothing' + description: 'SelectAllByDefault changes default behavior for empty CRD selectors, such ConfigSelector. with selectAllByDefault: true and undefined ConfigSelector and ConfigNamespaceSelector Operator selects all exist alertManagerConfigs with selectAllByDefault: false - selects nothing' type: boolean serviceAccountName: description: ServiceAccountName is the name of the ServiceAccount to use diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml index 1e2ad7535..0cd442321 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmalerts.yaml @@ -1184,6 +1184,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdate: description: RollingUpdate - overrides deployment update params. properties: diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml index a8f41f3f7..c9ff7a4b4 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmauths.yaml @@ -410,6 +410,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer runtimeClassName: description: RuntimeClassName - defines runtime class for kubernetes pod. https://kubernetes.io/docs/concepts/containers/runtime-class/ type: string diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml index 771eaf54a..f0f61b288 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmclusters.yaml @@ -337,6 +337,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdate: description: RollingUpdate - overrides deployment update params. properties: @@ -917,6 +921,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdateStrategy: description: RollingUpdateStrategy defines strategy for application updates Default is OnDelete, in this case operator handles update process Can be changed for RollingUpdate type: string @@ -1670,6 +1678,10 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer rollingUpdateStrategy: description: RollingUpdateStrategy defines strategy for application updates Default is OnDelete, in this case operator handles update process Can be changed for RollingUpdate type: string diff --git a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml index ce76ed2bc..a1f2c59f3 100644 --- a/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml +++ b/crd-catalog/VictoriaMetrics/operator/operator.victoriametrics.com/v1beta1/vmsingles.yaml @@ -292,6 +292,10 @@ spec: retentionPeriod: description: RetentionPeriod for the stored metrics Note VictoriaMetrics has data/ and indexdb/ folders metrics from data/ removed eventually as soon as partition leaves retention period reverse index data at indexdb rotates once at the half of configured retention period https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#retention type: string + revisionHistoryLimitCount: + description: The number of old ReplicaSets to retain to allow rollback in deployment or maximum number of revisions that will be maintained in the StatefulSet's revision history. Defaults to 10. + format: int32 + type: integer runtimeClassName: description: RuntimeClassName - defines runtime class for kubernetes pod. https://kubernetes.io/docs/concepts/containers/runtime-class/ type: string diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/backuppolicytemplates.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/backuppolicytemplates.yaml index d45328bdf..1dabcbdd5 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/backuppolicytemplates.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/backuppolicytemplates.yaml @@ -320,7 +320,7 @@ spec: type: object strategy: default: Any - description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector.' + description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' enum: - Any - All @@ -380,6 +380,14 @@ spec: serviceAccountName: description: serviceAccountName specifies the service account to run the backup workload. type: string + strategy: + description: 'PodSelectionStrategy specifies the strategy to select when multiple pods are selected for backup target. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' + enum: + - Any + - All + type: string + required: + - role type: object targetVolumes: description: targetVolumes specifies which volumes from the target should be mounted in the backup workload. @@ -479,6 +487,14 @@ spec: role: description: 'select instance of corresponding role for backup, role are: - the name of Leader/Follower/Leaner for Consensus component. - primary or secondary for Replication component. finally, invalid role of the component will be ignored. such as if workload type is Replication and component''s replicas is 1, the secondary role is invalid. and it also will be ignored when component is Stateful/Stateless. the role will be transformed to a role LabelSelector for BackupPolicy''s target attribute.' type: string + strategy: + description: 'PodSelectionStrategy specifies the strategy to select when multiple pods are selected for backup target. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' + enum: + - Any + - All + type: string + required: + - role type: object required: - backupMethods diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml index eca66e108..58f8f53d4 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/clusters.yaml @@ -685,20 +685,16 @@ spec: description: 'If ServiceType is LoadBalancer, cloud provider related parameters can be put here More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer.' type: object componentSelector: - description: ComponentSelector extends the ServiceSpec.Selector by allowing you to specify a component as selectors for the service. For component-level services, a default component selector with the component name will be added automatically. if GeneratePodOrdinalService sets to true, ComponentSelector must be specified. + description: ComponentSelector extends the ServiceSpec.Selector by allowing you to specify a component as selectors for the service. type: string - generatePodOrdinalService: - default: false - description: 'GeneratePodOrdinalService indicates whether to create a corresponding Service for each Pod of the selected Component. If sets to true, a set of Service will be automatically generated for each Pod. and ComponentSelector must be specified. They can be referred to by adding the PodOrdinal to the defined ServiceName with named pattern -. For example, a Service might be defined as follows: - name: my-service serviceName: my-service generatePodOrdinalService: true componentSelector: my-component spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 Assuming that the Component has 3 replicas, then three services would be generated: my-service-0, my-service-1, and my-service-2, each pointing to its respective Pod.' - type: boolean name: - description: Name defines the name or namePrefix of the service. if GeneratePodOrdinalService sets to true, the Name indicates the namePrefix of the service and the fullName will be generated with named pattern -. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. + description: Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. type: string roleSelector: description: RoleSelector extends the ServiceSpec.Selector by allowing you to specify defined role as selector for the service. if GeneratePodOrdinalService sets to true, RoleSelector will be ignored. type: string serviceName: - description: 'ServiceName defines the name or namePrefix of the underlying service object. if GeneratePodOrdinalService sets to true, the ServiceName indicates the namePrefix of the underlying service object. otherwise, it indicates the name of the underlying service object. If not specified, the default service name with different patterns will be used: - : for cluster-level services - -: for component-level services - --: for pod-level services when GeneratePodOrdinalService set to true Only one default service name is allowed. Cannot be updated.' + description: 'ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: - : for cluster-level services - -: for component-level services Only one default service name is allowed. Cannot be updated.' type: string spec: description: Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -887,86 +883,6 @@ spec: additionalProperties: description: ClusterComponentStatus records components status. properties: - consensusSetStatus: - description: consensusSetStatus specifies the mapping of role and pod name. - properties: - followers: - description: Followers status. - items: - properties: - accessMode: - default: ReadWrite - description: accessMode defines what service this pod provides. - enum: - - None - - Readonly - - ReadWrite - type: string - name: - default: leader - description: Defines the role name. - type: string - pod: - default: Unknown - description: Pod name. - type: string - required: - - accessMode - - name - - pod - type: object - type: array - leader: - description: Leader status. - properties: - accessMode: - default: ReadWrite - description: accessMode defines what service this pod provides. - enum: - - None - - Readonly - - ReadWrite - type: string - name: - default: leader - description: Defines the role name. - type: string - pod: - default: Unknown - description: Pod name. - type: string - required: - - accessMode - - name - - pod - type: object - learner: - description: Learner status. - properties: - accessMode: - default: ReadWrite - description: accessMode defines what service this pod provides. - enum: - - None - - Readonly - - ReadWrite - type: string - name: - default: leader - description: Defines the role name. - type: string - pod: - default: Unknown - description: Pod name. - type: string - required: - - accessMode - - name - - pod - type: object - required: - - leader - type: object membersStatus: description: members' status. items: @@ -1033,34 +949,6 @@ spec: description: podsReadyTime what time point of all component pods are ready, this time is the ready time of the last component pod. format: date-time type: string - replicationSetStatus: - description: replicationSetStatus specifies the mapping of role and pod name. - properties: - primary: - description: Primary status. - properties: - pod: - default: Unknown - description: Pod name. - type: string - required: - - pod - type: object - secondaries: - description: Secondaries status. - items: - properties: - pod: - default: Unknown - description: Pod name. - type: string - required: - - pod - type: object - type: array - required: - - primary - type: object type: object description: components record the current status information of all components of the cluster. type: object diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml index 25b88e863..c62805b47 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/configurations.yaml @@ -166,8 +166,12 @@ spec: maxLength: 63 pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ type: string + payload: + description: Payload holds the configuration-related rerender. + type: object + x-kubernetes-preserve-unknown-fields: true version: - description: version is the version of configuration template. + description: 'Deprecated: Please use payload instead. version is the version of configuration template.' type: string required: - name diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml index a162319d5..c790ae86d 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1alpha1/opsrequests.yaml @@ -118,7 +118,7 @@ spec: description: componentName cluster component name. type: string services: - description: Setting the list of services to be exposed. + description: Setting the list of services to be exposed or removed. items: properties: annotations: @@ -127,25 +127,71 @@ spec: description: 'If ServiceType is LoadBalancer, cloud provider related parameters can be put here More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer.' type: object name: - description: Service name - maxLength: 15 + description: Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. type: string + ports: + description: 'The list of ports that are exposed by this service. If Ports are not provided, the default Services Ports defined in the ClusterDefinition or ComponentDefinition that are neither of NodePort nor LoadBalancer service type will be used. If there is no corresponding Service defined in the ClusterDefinition or ComponentDefinition, the expose operation will fail. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + items: + description: ServicePort contains information on service's port. + properties: + appProtocol: + description: "The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: \n * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). \n * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 over cleartext as described in https://www.rfc-editor.org/rfc/rfc7540 * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 \n * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol." + type: string + name: + description: The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. + type: string + nodePort: + description: 'The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + type: integer + port: + description: The port that will be exposed by this service. + format: int32 + type: integer + protocol: + default: TCP + description: The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is TCP. + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: 'Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod''s container ports. If this is not specified, the value of the ''port'' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the ''port'' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + x-kubernetes-int-or-string: true + required: + - port + type: object + type: array + x-kubernetes-list-map-keys: + - port + - protocol + x-kubernetes-list-type: map + roleSelector: + description: RoleSelector extends the ServiceSpec.Selector by allowing you to specify defined role as selector for the service. + type: string + selector: + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + type: object + x-kubernetes-map-type: atomic serviceType: - default: ClusterIP - description: 'serviceType determines how the Service is exposed. Valid options are ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types.' - enum: - - ClusterIP - - NodePort - - LoadBalancer + description: 'type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' type: string - x-kubernetes-preserve-unknown-fields: true required: - name type: object type: array + switch: + description: switch defines the switch of expose operation. if switch is set to Enable, the service will be exposed. if switch is set to Disable, the service will be removed. + enum: + - Enable + - Disable + type: string required: - componentName - services + - switch type: object type: array x-kubernetes-list-map-keys: diff --git a/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backuppolicies.yaml b/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backuppolicies.yaml index 5218802d6..8cde64dfe 100644 --- a/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backuppolicies.yaml +++ b/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backuppolicies.yaml @@ -250,7 +250,7 @@ spec: type: object strategy: default: Any - description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector.' + description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' enum: - Any - All @@ -414,7 +414,7 @@ spec: type: object strategy: default: Any - description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector.' + description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' enum: - Any - All diff --git a/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backups.yaml b/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backups.yaml index f87a9bf46..dfcc4b04d 100644 --- a/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backups.yaml +++ b/crd-catalog/apecloud/kubeblocks/dataprotection.kubeblocks.io/v1alpha1/backups.yaml @@ -387,7 +387,7 @@ spec: type: object strategy: default: Any - description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector.' + description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' enum: - Any - All @@ -590,7 +590,7 @@ spec: type: object strategy: default: Any - description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector.' + description: 'strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector.' enum: - Any - All diff --git a/crd-catalog/cert-manager/cert-manager/acme.cert-manager.io/v1/challenges.yaml b/crd-catalog/cert-manager/cert-manager/acme.cert-manager.io/v1/challenges.yaml index 0b295d6ef..acb20edff 100644 --- a/crd-catalog/cert-manager/cert-manager/acme.cert-manager.io/v1/challenges.yaml +++ b/crd-catalog/cert-manager/cert-manager/acme.cert-manager.io/v1/challenges.yaml @@ -609,7 +609,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -639,6 +639,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -696,7 +708,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -726,6 +738,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -782,7 +806,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -812,6 +836,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -869,7 +905,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -899,6 +935,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: diff --git a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/certificates.yaml b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/certificates.yaml index f45e249ce..f23480fb7 100644 --- a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/certificates.yaml +++ b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/certificates.yaml @@ -155,6 +155,13 @@ spec: required: - name type: object + profile: + description: "Profile specifies the key and certificate encryption algorithms and the HMAC algorithm used to create the PKCS12 keystore. Default value is `LegacyRC2` for backward compatibility. \n If provided, allowed values are: `LegacyRC2`: Deprecated. Not supported by default in OpenSSL 3 or Java 20. `LegacyDES`: Less secure algorithm. Use this option for maximal compatibility. `Modern2023`: Secure algorithm. Use this option in case you have to always use secure algorithms (eg. because of company policy). Please note that the security of the algorithm is not that important in reality, because the unencrypted certificate and private key are also stored in the Secret." + enum: + - LegacyRC2 + - LegacyDES + - Modern2023 + type: string required: - create - passwordSecretRef @@ -164,7 +171,7 @@ spec: description: "Requested X.509 certificate subject, represented using the LDAP \"String Representation of a Distinguished Name\" [1]. Important: the LDAP string format also specifies the order of the attributes in the subject, this is important when issuing certs for LDAP authentication. Example: `CN=foo,DC=corp,DC=example,DC=com` More info [1]: https://datatracker.ietf.org/doc/html/rfc4514 More info: https://github.com/cert-manager/cert-manager/issues/3203 More info: https://github.com/cert-manager/cert-manager/issues/4424 \n Cannot be set if the `subject` or `commonName` field is set. This is an Alpha Feature and is only enabled with the `--feature-gates=LiteralCertificateSubject=true` option set on both the controller and webhook components." type: string nameConstraints: - description: "x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate. More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 \n This is an Alpha Feature and is only enabled with the `--feature-gates=useCertificateRequestNameConstraints=true` option set on both the controller and webhook components." + description: "x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate. More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 \n This is an Alpha Feature and is only enabled with the `--feature-gates=NameConstraints=true` option set on both the controller and webhook components." properties: critical: description: if true then the name constraints are marked critical. @@ -218,6 +225,18 @@ spec: type: array type: object type: object + otherNames: + description: '`otherNames` is an escape hatch for SAN that allows any type. We currently restrict the support to string like otherNames, cf RFC 5280 p 37 Any UTF8 String valued otherName can be passed with by setting the keys oid: x.x.x.x and UTF8Value: somevalue for `otherName`. Most commonly this would be UPN set with oid: 1.3.6.1.4.1.311.20.2.3 You should ensure that any OID passed is valid for the UTF8String type as we do not explicitly validate this.' + items: + properties: + oid: + description: OID is the object identifier for the otherName SAN. The object identifier must be expressed as a dotted string, for example, "1.2.840.113556.1.4.221". + type: string + utf8Value: + description: utf8Value is the string value of the otherName SAN. The utf8Value accepts any valid UTF8 string to set as value for the otherName SAN. + type: string + type: object + type: array privateKey: description: Private key options. These include the key algorithm and size, the used encoding and the rotation policy. properties: diff --git a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/clusterissuers.yaml b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/clusterissuers.yaml index 1488f9d0b..3b899d02d 100644 --- a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/clusterissuers.yaml +++ b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/clusterissuers.yaml @@ -651,7 +651,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -681,6 +681,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -738,7 +750,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -768,6 +780,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -824,7 +848,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -854,6 +878,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -911,7 +947,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -941,6 +977,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: diff --git a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/issuers.yaml b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/issuers.yaml index c20dcd94e..30692ee7c 100644 --- a/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/issuers.yaml +++ b/crd-catalog/cert-manager/cert-manager/cert-manager.io/v1/issuers.yaml @@ -651,7 +651,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -681,6 +681,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -738,7 +750,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -768,6 +780,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -824,7 +848,7 @@ spec: description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -854,6 +878,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: @@ -911,7 +947,7 @@ spec: description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, in this case pods. + description: A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -941,6 +977,18 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + description: MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. properties: diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/authservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/authservices.yaml index 4e6fce76c..a12a8d532 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/authservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/authservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/consulresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/consulresolvers.yaml index 37001f627..9380c79f1 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/consulresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/consulresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/devportals.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/devportals.yaml index 5297566c5..5e772e5aa 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/devportals.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/devportals.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesendpointresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesendpointresolvers.yaml index 70d6f5a16..777b40146 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesendpointresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesendpointresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesserviceresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesserviceresolvers.yaml index aaa16c27c..f34869ac1 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesserviceresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/kubernetesserviceresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/logservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/logservices.yaml index 1814ad54b..08d434f38 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/logservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/logservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/mappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/mappings.yaml index 1a1eeb2ff..9b502cfdf 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/mappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/mappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/modules.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/modules.yaml index 901a0d594..6cde1f496 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/modules.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/modules.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/ratelimitservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/ratelimitservices.yaml index 0f4439656..7bac0b5e6 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/ratelimitservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/ratelimitservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tcpmappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tcpmappings.yaml index 2cb3990f5..f1e062d03 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tcpmappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tcpmappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tlscontexts.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tlscontexts.yaml index 9b2dea7f7..d69997a28 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tlscontexts.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tlscontexts.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tracingservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tracingservices.yaml index df9371151..43d3dc822 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tracingservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v1/tracingservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/authservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/authservices.yaml index 10702701f..c3fed184b 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/authservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/authservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/consulresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/consulresolvers.yaml index 9be3382fb..93da0322f 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/consulresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/consulresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/devportals.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/devportals.yaml index 384c29ea1..41a95d30a 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/devportals.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/devportals.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/hosts.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/hosts.yaml index fb64073bb..37358b329 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/hosts.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/hosts.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesendpointresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesendpointresolvers.yaml index 659009aa3..2923125c7 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesendpointresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesendpointresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesserviceresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesserviceresolvers.yaml index 0357ad43b..72ad3b7b6 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesserviceresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/kubernetesserviceresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/logservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/logservices.yaml index 85862fc4c..2e27ff268 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/logservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/logservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/mappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/mappings.yaml index 8167b50c3..5ba22abd1 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/mappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/mappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/modules.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/modules.yaml index 60973b875..64d37ebb1 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/modules.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/modules.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/ratelimitservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/ratelimitservices.yaml index d6193da2a..a6ab3c163 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/ratelimitservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/ratelimitservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tcpmappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tcpmappings.yaml index 588900204..bd262a50b 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tcpmappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tcpmappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tlscontexts.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tlscontexts.yaml index c6683ad03..bc653ea24 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tlscontexts.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tlscontexts.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tracingservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tracingservices.yaml index 8914ca765..4c006cd5b 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tracingservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v2/tracingservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/authservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/authservices.yaml index a343cb8f1..5f3082ba4 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/authservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/authservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/consulresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/consulresolvers.yaml index 12d0614b2..81db57bbc 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/consulresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/consulresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/devportals.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/devportals.yaml index d2697f991..6fab9653e 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/devportals.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/devportals.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/hosts.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/hosts.yaml index 1ba306f35..6f781b3cf 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/hosts.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/hosts.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesendpointresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesendpointresolvers.yaml index f4cf3728c..d62b538c2 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesendpointresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesendpointresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesserviceresolvers.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesserviceresolvers.yaml index e3ec0ae6b..006d6901e 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesserviceresolvers.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/kubernetesserviceresolvers.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/logservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/logservices.yaml index 04e830427..b1e3db565 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/logservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/logservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/mappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/mappings.yaml index 5f6e4625f..bb3c5c1ca 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/mappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/mappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/modules.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/modules.yaml index 403777b63..9beabcd8d 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/modules.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/modules.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/ratelimitservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/ratelimitservices.yaml index 6efdea911..6b42fc8b6 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/ratelimitservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/ratelimitservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tcpmappings.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tcpmappings.yaml index 536ce7da9..9009707bc 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tcpmappings.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tcpmappings.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tlscontexts.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tlscontexts.yaml index 55cf8343d..adeece598 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tlscontexts.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tlscontexts.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tracingservices.yaml b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tracingservices.yaml index 2dfb3ec0b..8b76133fc 100644 --- a/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tracingservices.yaml +++ b/crd-catalog/emissary-ingress/emissary/getambassador.io/v3alpha1/tracingservices.yaml @@ -12,6 +12,8 @@ spec: service: name: emissary-apiext namespace: emissary-system + path: /webhooks/crd-convert + port: 443 conversionReviewVersions: - v1 group: getambassador.io diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml index 7cba972b8..c4894b022 100644 --- a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml @@ -133,7 +133,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -445,7 +445,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string query: type: string @@ -676,7 +676,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string region: type: string @@ -859,7 +859,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string organization: type: string @@ -1059,7 +1059,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string region: type: string @@ -1233,7 +1233,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string query: type: string @@ -1402,7 +1402,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string transformDeleteStrategy: description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -1457,7 +1457,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: type: string @@ -1586,7 +1586,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string test: properties: @@ -1666,7 +1666,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string port: type: integer @@ -1822,7 +1822,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string transformDeleteStrategy: description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -1962,7 +1962,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string transformDeleteStrategy: description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -2071,7 +2071,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string scheme: type: string @@ -2207,7 +2207,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string region: type: string @@ -2370,7 +2370,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -3063,7 +3063,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string script: description: Script can be a inline script or a path to a script that needs to be executed On windows executed via powershell and in darwin and linux executed using bash @@ -3383,7 +3383,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string path: description: Path to folder or object storage, e.g. `s3://`, `gcs://`, `/path/tp/folder` @@ -3710,7 +3710,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string query: description: Query to be executed. Please see https://github.com/askgitdev/askgit for more details regarding syntax @@ -3877,7 +3877,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string project: type: string @@ -4045,7 +4045,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string ntlm: description: NTLM when set to true will do authentication using NTLM v1 protocol @@ -4251,7 +4251,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string packetCount: type: integer @@ -4362,7 +4362,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string port: description: Port on which the server is running @@ -4454,7 +4454,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string spec: type: object @@ -4556,7 +4556,9 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. + type: string + namespaceSelector: properties: fieldSelector: type: string @@ -4564,7 +4566,7 @@ spec: type: string name: type: string - type: string + type: object ready: type: boolean resource: @@ -4654,7 +4656,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -4799,7 +4801,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -4950,7 +4952,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -5128,7 +5130,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -5318,7 +5320,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string namespaceAnnotations: additionalProperties: @@ -5412,7 +5414,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -5607,7 +5609,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string path: type: string @@ -5690,7 +5692,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -5871,7 +5873,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -6042,7 +6044,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: properties: @@ -6239,7 +6241,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string password: description: Password for the restic repository @@ -6433,7 +6435,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string objectPath: description: glob path to restrict matches to a subset @@ -6585,7 +6587,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string thresholdMillis: format: int64 @@ -6650,7 +6652,7 @@ spec: description: Name of the check type: string namespace: - description: Namespace of the check + description: Namespace to insert the check into, if different to the namespace the canary is defined, e.g. type: string test: properties: diff --git a/crd-catalog/istio/istio/security.istio.io/v1beta1/peerauthentications.yaml b/crd-catalog/istio/istio/security.istio.io/v1beta1/peerauthentications.yaml index 18a56f37b..8c595c662 100644 --- a/crd-catalog/istio/istio/security.istio.io/v1beta1/peerauthentications.yaml +++ b/crd-catalog/istio/istio/security.istio.io/v1beta1/peerauthentications.yaml @@ -67,7 +67,7 @@ spec: description: Port specific mutual TLS settings. type: object selector: - description: The selector determines the workloads to apply the ChannelAuthentication on. + description: The selector determines the workloads to apply the PeerAuthentication on. properties: matchLabels: additionalProperties: diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml index 0b0971d92..21f5469a7 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1/gateways.yaml @@ -295,6 +295,8 @@ spec: rule: 'self.all(l, l.protocol in [''HTTPS'', ''TLS''] ? has(l.tls) : true)' - message: tls must not be specified for protocols ['HTTP', 'TCP', 'UDP'] rule: 'self.all(l, l.protocol in [''HTTP'', ''TCP'', ''UDP''] ? !has(l.tls) : true)' + - message: tls mode must be Terminate for protocol HTTPS + rule: 'self.all(l, (l.protocol == ''HTTPS'' && has(l.tls)) ? (l.tls.mode == '''' || l.tls.mode == ''Terminate'') : true)' - message: hostname must not be specified for protocols ['TCP', 'UDP'] rule: 'self.all(l, l.protocol in [''TCP'', ''UDP''] ? (!has(l.hostname) || l.hostname == '''') : true)' - message: Listener name must be unique within the Gateway diff --git a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml index a9abb9aac..0f4f281f0 100644 --- a/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml +++ b/crd-catalog/kubernetes-sigs/gateway-api/gateway.networking.k8s.io/v1beta1/gateways.yaml @@ -295,6 +295,8 @@ spec: rule: 'self.all(l, l.protocol in [''HTTPS'', ''TLS''] ? has(l.tls) : true)' - message: tls must not be specified for protocols ['HTTP', 'TCP', 'UDP'] rule: 'self.all(l, l.protocol in [''HTTP'', ''TCP'', ''UDP''] ? !has(l.tls) : true)' + - message: tls mode must be Terminate for protocol HTTPS + rule: 'self.all(l, (l.protocol == ''HTTPS'' && has(l.tls)) ? (l.tls.mode == '''' || l.tls.mode == ''Terminate'') : true)' - message: hostname must not be specified for protocols ['TCP', 'UDP'] rule: 'self.all(l, l.protocol in [''TCP'', ''UDP''] ? (!has(l.hostname) || l.hostname == '''') : true)' - message: Listener name must be unique within the Gateway diff --git a/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshhttproutes.yaml b/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshhttproutes.yaml index bf8001f69..5b9672be2 100644 --- a/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshhttproutes.yaml +++ b/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshhttproutes.yaml @@ -66,6 +66,11 @@ spec: description: To matches destination services of requests and holds configuration. items: properties: + hostnames: + description: Hostnames is only valid when targeting MeshGateway and limits the effects of the rules to requests to this hostname. Given hostnames must intersect with the hostname of the listeners the route attaches to. + items: + type: string + type: array rules: description: Rules contains the routing rules applies to a combination of top-level targetRef and the targetRef in this entry. items: diff --git a/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshratelimits.yaml b/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshratelimits.yaml index f9999a77b..8c1b81bab 100644 --- a/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshratelimits.yaml +++ b/crd-catalog/kumahq/kuma/kuma.io/v1alpha1/meshratelimits.yaml @@ -195,6 +195,139 @@ spec: description: Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshServiceSubset` type: object type: object + to: + description: To list makes a match between clients and corresponding configurations + items: + properties: + default: + description: Default is a configuration specific to the group of clients referenced in 'targetRef' + properties: + local: + description: LocalConf defines local http or/and tcp rate limit configuration + properties: + http: + description: LocalHTTP defines confguration of local HTTP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter + properties: + disabled: + description: Define if rate limiting should be disabled. + type: boolean + onRateLimit: + description: Describes the actions to take on a rate limit event + properties: + headers: + description: The Headers to be added to the HTTP response on a rate limit event + properties: + add: + items: + properties: + name: + maxLength: 256 + minLength: 1 + pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$ + type: string + value: + type: string + required: + - name + - value + type: object + maxItems: 16 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + set: + items: + properties: + name: + maxLength: 256 + minLength: 1 + pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$ + type: string + value: + type: string + required: + - name + - value + type: object + maxItems: 16 + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + type: object + status: + description: The HTTP status code to be set on a rate limit event + format: int32 + type: integer + type: object + requestRate: + description: Defines how many requests are allowed per interval. + properties: + interval: + description: The interval the number of units is accounted for. + type: string + num: + description: Number of units per interval (depending on usage it can be a number of requests, or a number of connections). + format: int32 + type: integer + required: + - interval + - num + type: object + type: object + tcp: + description: LocalTCP defines confguration of local TCP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter + properties: + connectionRate: + description: Defines how many connections are allowed per interval. + properties: + interval: + description: The interval the number of units is accounted for. + type: string + num: + description: Number of units per interval (depending on usage it can be a number of requests, or a number of connections). + format: int32 + type: integer + required: + - interval + - num + type: object + disabled: + description: 'Define if rate limiting should be disabled. Default: false' + type: boolean + type: object + type: object + type: object + targetRef: + description: TargetRef is a reference to the resource that represents a group of clients. + properties: + kind: + description: Kind of the referenced resource + enum: + - Mesh + - MeshSubset + - MeshGateway + - MeshService + - MeshServiceSubset + - MeshHTTPRoute + type: string + mesh: + description: Mesh is reserved for future use to identify cross mesh resources. + type: string + name: + description: 'Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and `MeshGatewayRoute`' + type: string + tags: + additionalProperties: + type: string + description: Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshServiceSubset` + type: object + type: object + required: + - targetRef + type: object + type: array required: - targetRef type: object diff --git a/crd-catalog/litmuschaos/chaos-operator/litmuschaos.io/v1alpha1/chaosengines.yaml b/crd-catalog/litmuschaos/chaos-operator/litmuschaos.io/v1alpha1/chaosengines.yaml index 1db782b3b..88ba82c69 100644 --- a/crd-catalog/litmuschaos/chaos-operator/litmuschaos.io/v1alpha1/chaosengines.yaml +++ b/crd-catalog/litmuschaos/chaos-operator/litmuschaos.io/v1alpha1/chaosengines.yaml @@ -1487,6 +1487,8 @@ spec: type: integer stopOnFailure: type: boolean + verbosity: + type: string required: - probeTimeout - interval diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimagedatasources.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimagedatasources.yaml index 9d3c2d35e..5a62a042b 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimagedatasources.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimagedatasources.yaml @@ -83,6 +83,7 @@ spec: - download - upload - export-from-volume + - restore type: string uuid: type: string diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimages.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimages.yaml index 5a0876b65..e9ed9dfdd 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimages.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backingimages.yaml @@ -79,6 +79,7 @@ spec: - download - upload - export-from-volume + - restore type: string type: object status: diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backupbackingimages.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backupbackingimages.yaml new file mode 100644 index 000000000..d5745814f --- /dev/null +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backupbackingimages.yaml @@ -0,0 +1,138 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + labels: + longhorn-manager: '' + name: backupbackingimages.longhorn.io +spec: + group: longhorn.io + names: + kind: BackupBackingImage + listKind: BackupBackingImageList + plural: backupbackingimages + shortNames: + - lhbbi + singular: backupbackingimage + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The backing image name + jsonPath: .status.backingImage + name: BackingImage + type: string + - description: The backing image size + jsonPath: .status.size + name: Size + type: string + - description: The backing image backup upload finished time + jsonPath: .status.backupCreatedAt + name: BackupCreatedAt + type: string + - description: The backing image backup state + jsonPath: .status.state + name: State + type: string + - description: The last synced time + jsonPath: .status.lastSyncedAt + name: LastSyncedAt + type: string + name: v1beta2 + schema: + openAPIV3Schema: + description: BackupBackingImage is where Longhorn stores backing image backup object. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BackupBackingImageSpec defines the desired state of the Longhorn backing image backup + properties: + labels: + additionalProperties: + type: string + description: The labels of backing image backup. + type: object + syncRequestedAt: + description: The time to request run sync the remote backing image backup. + format: date-time + nullable: true + type: string + userCreated: + description: Is this CR created by user through API or UI. Required + type: boolean + required: + - userCreated + type: object + status: + description: BackupBackingImageStatus defines the observed state of the Longhorn backing image backup + properties: + backingImage: + description: The backing image name. + type: string + backupCreatedAt: + description: The backing image backup upload finished time. + type: string + checksum: + description: The checksum of the backing image. + type: string + compressionMethod: + description: Compression method + type: string + error: + description: The error message when taking the backing image backup. + type: string + labels: + additionalProperties: + type: string + description: The labels of backing image backup. + nullable: true + type: object + lastSyncedAt: + description: The last time that the backing image backup was synced with the remote backup target. + format: date-time + nullable: true + type: string + managerAddress: + description: The address of the backing image manager that runs backing image backup. + type: string + messages: + additionalProperties: + type: string + description: The error messages when listing or inspecting backing image backup. + nullable: true + type: object + ownerID: + description: The node ID on which the controller is responsible to reconcile this CR. + type: string + progress: + description: The backing image backup progress. + type: integer + size: + description: The backing image size. + format: int64 + type: integer + state: + description: The backing image backup creation state. Can be "", "InProgress", "Completed", "Error", "Unknown". + type: string + url: + description: The backing image backup URL. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: '' + plural: '' + conditions: [] + storedVersions: [] diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/engines.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/engines.yaml index f489fea4f..5abdb6969 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/engines.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/engines.yaml @@ -63,7 +63,7 @@ spec: active: type: boolean backendStoreDriver: - description: Deprecated. + description: 'Deprecated: Replaced by field `dataEngine`.' type: string backupVolume: type: string @@ -104,6 +104,11 @@ spec: type: boolean salvageRequested: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string unmapMarkSnapChainRemovedEnabled: type: boolean upgradedReplicaAddressMap: @@ -270,6 +275,11 @@ spec: type: object salvageExecuted: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string snapshots: additionalProperties: properties: diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/instancemanagers.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/instancemanagers.yaml index 27751c12a..5aa0324c9 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/instancemanagers.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/instancemanagers.yaml @@ -54,11 +54,8 @@ spec: metadata: type: object spec: - description: InstanceManagerSpec defines the desired state of the Longhorn instancer manager + description: InstanceManagerSpec defines the desired state of the Longhorn instance manager properties: - backendStoreDriver: - description: Deprecated. - type: string dataEngine: type: string image: @@ -87,7 +84,7 @@ spec: spec: properties: backendStoreDriver: - description: Deprecated. + description: 'Deprecated: Replaced by field `dataEngine`.' type: string dataEngine: type: string @@ -129,7 +126,7 @@ spec: spec: properties: backendStoreDriver: - description: Deprecated. + description: 'Deprecated: Replaced by field `dataEngine`.' type: string dataEngine: type: string @@ -171,6 +168,9 @@ spec: spec: properties: backendStoreDriver: + description: 'Deprecated: Replaced by field `dataEngine`.' + type: string + dataEngine: type: string name: type: string diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/replicas.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/replicas.yaml index 787eee869..384a0b6f9 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/replicas.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/replicas.yaml @@ -67,7 +67,7 @@ spec: active: type: boolean backendStoreDriver: - description: Deprecated. + description: 'Deprecated: Replaced by field `dataEngine`.' type: string backingImage: type: string @@ -109,6 +109,11 @@ spec: type: boolean salvageRequested: type: boolean + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string unmapMarkDiskChainRemovedEnabled: type: boolean volumeName: diff --git a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/volumes.yaml b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/volumes.yaml index 8ebca2d03..3249454f5 100644 --- a/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/volumes.yaml +++ b/crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/volumes.yaml @@ -85,7 +85,7 @@ spec: - rwx type: string backendStoreDriver: - description: Deprecated. + description: 'Deprecated: Replaced by field `dataEngine`.' type: string backingImage: type: string @@ -197,6 +197,11 @@ spec: - enabled - fast-check type: string + snapshotMaxCount: + type: integer + snapshotMaxSize: + format: int64 + type: string staleReplicaTimeout: type: integer unmapMarkSnapChainRemoved: diff --git a/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml b/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml index c2dc17c36..1bec2c4f9 100644 --- a/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml +++ b/crd-catalog/minio/operator/minio.min.io/v2/tenants.yaml @@ -308,18 +308,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -363,6 +351,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -551,6 +541,43 @@ spec: sources: items: properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + name: + type: string + optional: + type: boolean + path: + type: string + signerName: + type: string + required: + - path + type: object configMap: properties: items: @@ -1105,6 +1132,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -1155,6 +1190,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -1713,6 +1756,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -1781,6 +1834,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -1847,6 +1910,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -1915,6 +1988,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -2453,6 +2536,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -2521,6 +2614,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -2587,6 +2690,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -2655,6 +2768,16 @@ spec: type: object type: object x-kubernetes-map-type: atomic + matchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + items: + type: string + type: array + x-kubernetes-list-type: atomic namespaceSelector: properties: matchExpressions: @@ -2996,18 +3119,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -3051,6 +3162,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -3105,6 +3218,17 @@ spec: - type type: object type: array + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object phase: type: string type: object @@ -3366,6 +3490,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -3416,6 +3548,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -3937,18 +4077,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -3992,6 +4120,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -4046,6 +4176,17 @@ spec: - type type: object type: array + currentVolumeAttributesClassName: + type: string + modifyVolumeStatus: + properties: + status: + type: string + targetVolumeAttributesClassName: + type: string + required: + - status + type: object phase: type: string type: object @@ -4298,18 +4439,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -4353,6 +4482,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -4541,6 +4672,43 @@ spec: sources: items: properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + name: + type: string + optional: + type: boolean + path: + type: string + signerName: + type: string + required: + - path + type: object configMap: properties: items: diff --git a/crd-catalog/openshift/api/config.openshift.io/v1/infrastructures.yaml b/crd-catalog/openshift/api/config.openshift.io/v1/infrastructures.yaml index 8f33ea0d1..d02412b38 100644 --- a/crd-catalog/openshift/api/config.openshift.io/v1/infrastructures.yaml +++ b/crd-catalog/openshift/api/config.openshift.io/v1/infrastructures.yaml @@ -73,7 +73,46 @@ spec: type: object baremetal: description: BareMetal contains settings specific to the BareMetal platform. + properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' equinixMetal: description: EquinixMetal contains settings specific to the Equinix Metal infrastructure provider. type: object @@ -231,7 +270,46 @@ spec: type: object openstack: description: OpenStack contains settings specific to the OpenStack infrastructure provider. + properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' ovirt: description: Ovirt contains settings specific to the oVirt infrastructure provider. type: object @@ -285,6 +363,18 @@ spec: vsphere: description: VSphere contains settings specific to the VSphere infrastructure provider. properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' failureDomains: description: failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. items: @@ -366,6 +456,27 @@ spec: x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeNetworking: description: nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found. properties: @@ -447,6 +558,11 @@ spec: type: array x-kubernetes-list-type: atomic type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' type: object type: object status: @@ -673,6 +789,15 @@ spec: maxItems: 2 type: array x-kubernetes-list-type: set + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for BareMetal deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string @@ -854,6 +979,15 @@ spec: - message: type is immutable once set rule: oldSelf == '' || self == oldSelf type: object + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for OpenStack deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string @@ -982,6 +1116,15 @@ spec: maxItems: 2 type: array x-kubernetes-list-type: set + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for vSphere deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string diff --git a/crd-catalog/openshift/api/machineconfiguration.openshift.io/v1/controllerconfigs.yaml b/crd-catalog/openshift/api/machineconfiguration.openshift.io/v1/controllerconfigs.yaml index 3d6ae10d8..4d889dd02 100644 --- a/crd-catalog/openshift/api/machineconfiguration.openshift.io/v1/controllerconfigs.yaml +++ b/crd-catalog/openshift/api/machineconfiguration.openshift.io/v1/controllerconfigs.yaml @@ -247,7 +247,46 @@ spec: type: object baremetal: description: BareMetal contains settings specific to the BareMetal platform. + properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' equinixMetal: description: EquinixMetal contains settings specific to the Equinix Metal infrastructure provider. type: object @@ -405,7 +444,46 @@ spec: type: object openstack: description: OpenStack contains settings specific to the OpenStack infrastructure provider. + properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' ovirt: description: Ovirt contains settings specific to the oVirt infrastructure provider. type: object @@ -459,6 +537,18 @@ spec: vsphere: description: VSphere contains settings specific to the VSphere infrastructure provider. properties: + apiServerInternalIPs: + description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: apiServerInternalIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' failureDomains: description: failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. items: @@ -536,6 +626,27 @@ spec: x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map + ingressIPs: + description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + items: + description: IP is an IP address (for example, "10.0.0.0" or "fd00::"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*) + type: string + maxItems: 2 + type: array + x-kubernetes-list-type: set + x-kubernetes-validations: + - message: ingressIPs must contain at most one IPv4 address and at most one IPv6 address + rule: 'size(self) == 2 ? self.exists_one(x, x.contains('':'')) : true' + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeNetworking: description: nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found. properties: @@ -609,6 +720,11 @@ spec: type: array x-kubernetes-list-type: atomic type: object + x-kubernetes-validations: + - message: apiServerInternalIPs list is required once set + rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)' + - message: ingressIPs list is required once set + rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)' type: object type: object status: @@ -835,6 +951,15 @@ spec: maxItems: 2 type: array x-kubernetes-list-type: set + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for BareMetal deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string @@ -1016,6 +1141,15 @@ spec: - message: type is immutable once set rule: oldSelf == '' || self == oldSelf type: object + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for OpenStack deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string @@ -1144,6 +1278,15 @@ spec: maxItems: 2 type: array x-kubernetes-list-type: set + machineNetworks: + description: machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + items: + description: CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). + pattern: (^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$)|(^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$) + type: string + maxItems: 32 + type: array + x-kubernetes-list-type: set nodeDNSIP: description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for vSphere deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. type: string diff --git a/crd-catalog/otterize/helm-charts/k8s.otterize.com/v1alpha3/clientintents.yaml b/crd-catalog/otterize/helm-charts/k8s.otterize.com/v1alpha3/clientintents.yaml index a5507d2ac..0ac349879 100644 --- a/crd-catalog/otterize/helm-charts/k8s.otterize.com/v1alpha3/clientintents.yaml +++ b/crd-catalog/otterize/helm-charts/k8s.otterize.com/v1alpha3/clientintents.yaml @@ -154,6 +154,10 @@ spec: status: description: IntentsStatus defines the observed state of ClientIntents properties: + observedGeneration: + description: The last generation of the intents that was successfully reconciled. + format: int64 + type: integer upToDate: description: upToDate field reflects whether the client intents have successfully been applied to the cluster to the state specified type: boolean diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml index 1a4cc8af4..59123009f 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml @@ -3534,6 +3534,9 @@ spec: bearerTokenFile: description: "File from which to read bearer token for the URL. \n Deprecated: this will be removed in a future release. Prefer using `authorization`." type: string + enableHttp2: + description: Whether to enable HTTP2. + type: boolean headers: additionalProperties: type: string diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml index c3010ec79..810f1917e 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml @@ -2889,6 +2889,9 @@ spec: bearerTokenFile: description: "File from which to read bearer token for the URL. \n Deprecated: this will be removed in a future release. Prefer using `authorization`." type: string + enableHttp2: + description: Whether to enable HTTP2. + type: boolean headers: additionalProperties: type: string diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml index ea6b01a22..72acd8108 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayclusters.yaml @@ -22,16 +22,16 @@ spec: - jsonPath: .status.availableWorkerReplicas name: available workers type: integer - - jsonPath: .status.desiredCPUs + - jsonPath: .status.desiredCPU name: cpus type: string - jsonPath: .status.desiredMemory name: memory type: string - - jsonPath: .status.desiredGPUs + - jsonPath: .status.desiredGPU name: gpus type: string - - jsonPath: .status.desiredTPUs + - jsonPath: .status.desiredTPU name: tpus priority: 1 type: string @@ -7060,13 +7060,13 @@ spec: availableWorkerReplicas: format: int32 type: integer - desiredCPUs: + desiredCPU: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredGPUs: + desiredGPU: anyOf: - type: integer - type: string @@ -7078,7 +7078,7 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredTPUs: + desiredTPU: anyOf: - type: integer - type: string diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml index 2cffaa0da..4b10d6fb3 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayjobs.yaml @@ -7041,8 +7041,6 @@ spec: required: - headGroupSpec type: object - runtimeEnv: - type: string runtimeEnvYAML: type: string shutdownAfterJobFinishes: @@ -10345,13 +10343,13 @@ spec: availableWorkerReplicas: format: int32 type: integer - desiredCPUs: + desiredCPU: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredGPUs: + desiredGPU: anyOf: - type: integer - type: string @@ -10363,7 +10361,7 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredTPUs: + desiredTPU: anyOf: - type: integer - type: string diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml index 2e6dcb484..9d070bc24 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1/rayservices.yaml @@ -7026,69 +7026,6 @@ spec: required: - headGroupSpec type: object - serveConfig: - properties: - deployments: - items: - properties: - autoscalingConfig: - type: string - gracefulShutdownTimeoutS: - format: int32 - type: integer - gracefulShutdownWaitLoopS: - format: int32 - type: integer - healthCheckPeriodS: - format: int32 - type: integer - healthCheckTimeoutS: - format: int32 - type: integer - maxConcurrentQueries: - format: int32 - type: integer - name: - type: string - numReplicas: - format: int32 - type: integer - rayActorOptions: - properties: - acceleratorType: - type: string - memory: - format: int64 - type: integer - numCpus: - type: number - numGpus: - type: number - objectStoreMemory: - format: int64 - type: integer - resources: - type: string - runtimeEnv: - type: string - type: object - routePrefix: - type: string - userConfig: - type: string - required: - - name - type: object - type: array - importPath: - type: string - port: - type: integer - runtimeEnv: - type: string - required: - - importPath - type: object serveConfigV2: type: string serveService: @@ -7326,13 +7263,13 @@ spec: availableWorkerReplicas: format: int32 type: integer - desiredCPUs: + desiredCPU: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredGPUs: + desiredGPU: anyOf: - type: integer - type: string @@ -7344,7 +7281,7 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredTPUs: + desiredTPU: anyOf: - type: integer - type: string @@ -7430,13 +7367,13 @@ spec: availableWorkerReplicas: format: int32 type: integer - desiredCPUs: + desiredCPU: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredGPUs: + desiredGPU: anyOf: - type: integer - type: string @@ -7448,7 +7385,7 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - desiredTPUs: + desiredTPU: anyOf: - type: integer - type: string diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayclusters.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayclusters.yaml index 92d601e73..f82709ef1 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayclusters.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayclusters.yaml @@ -22,6 +22,19 @@ spec: - jsonPath: .status.availableWorkerReplicas name: available workers type: integer + - jsonPath: .status.desiredCPU + name: cpus + type: string + - jsonPath: .status.desiredMemory + name: memory + type: string + - jsonPath: .status.desiredGPU + name: gpus + type: string + - jsonPath: .status.desiredTPU + name: tpus + priority: 1 + type: string - jsonPath: .status.state name: status type: string @@ -3737,6 +3750,8 @@ spec: type: object rayVersion: type: string + suspend: + type: boolean workerGroupSpecs: items: properties: @@ -7045,6 +7060,30 @@ spec: availableWorkerReplicas: format: int32 type: integer + desiredCPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredGPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredMemory: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredTPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true desiredWorkerReplicas: format: int32 type: integer diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayjobs.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayjobs.yaml index 291bdd95b..223611492 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayjobs.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayjobs.yaml @@ -3736,6 +3736,8 @@ spec: type: object rayVersion: type: string + suspend: + type: boolean workerGroupSpecs: items: properties: @@ -7039,8 +7041,6 @@ spec: required: - headGroupSpec type: object - runtimeEnv: - type: string runtimeEnvYAML: type: string shutdownAfterJobFinishes: @@ -10312,6 +10312,7 @@ spec: suspend: type: boolean ttlSecondsAfterFinished: + default: 0 format: int32 type: integer required: @@ -10342,6 +10343,30 @@ spec: availableWorkerReplicas: format: int32 type: integer + desiredCPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredGPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredMemory: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredTPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true desiredWorkerReplicas: format: int32 type: integer diff --git a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayservices.yaml b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayservices.yaml index 5528fce2c..b7bd2bc0d 100644 --- a/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayservices.yaml +++ b/crd-catalog/ray-project/kuberay/ray.io/v1alpha1/rayservices.yaml @@ -3721,6 +3721,8 @@ spec: type: object rayVersion: type: string + suspend: + type: boolean workerGroupSpecs: items: properties: @@ -7024,69 +7026,6 @@ spec: required: - headGroupSpec type: object - serveConfig: - properties: - deployments: - items: - properties: - autoscalingConfig: - type: string - gracefulShutdownTimeoutS: - format: int32 - type: integer - gracefulShutdownWaitLoopS: - format: int32 - type: integer - healthCheckPeriodS: - format: int32 - type: integer - healthCheckTimeoutS: - format: int32 - type: integer - maxConcurrentQueries: - format: int32 - type: integer - name: - type: string - numReplicas: - format: int32 - type: integer - rayActorOptions: - properties: - acceleratorType: - type: string - memory: - format: int64 - type: integer - numCpus: - type: number - numGpus: - type: number - objectStoreMemory: - format: int64 - type: integer - resources: - type: string - runtimeEnv: - type: string - type: object - routePrefix: - type: string - userConfig: - type: string - required: - - name - type: object - type: array - importPath: - type: string - port: - type: integer - runtimeEnv: - type: string - required: - - importPath - type: object serveConfigV2: type: string serveService: @@ -7324,6 +7263,30 @@ spec: availableWorkerReplicas: format: int32 type: integer + desiredCPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredGPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredMemory: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredTPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true desiredWorkerReplicas: format: int32 type: integer @@ -7404,6 +7367,30 @@ spec: availableWorkerReplicas: format: int32 type: integer + desiredCPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredGPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredMemory: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + desiredTPU: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true desiredWorkerReplicas: format: int32 type: integer diff --git a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/settings.yaml b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/settings.yaml index 5601a26df..292acf260 100644 --- a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/settings.yaml +++ b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/settings.yaml @@ -881,6 +881,9 @@ spec: type: string iamServerIdHeader: type: string + leaseIncrement: + format: int32 + type: integer mountPath: type: string region: @@ -967,6 +970,9 @@ spec: type: string iamServerIdHeader: type: string + leaseIncrement: + format: int32 + type: integer mountPath: type: string region: diff --git a/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml b/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml index bed389dcd..5f8c92999 100644 --- a/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml +++ b/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.4 + controller-gen.kubebuilder.io/version: v0.13.0 name: patterns.gitops.hybrid-cloud-patterns.io spec: group: gitops.hybrid-cloud-patterns.io diff --git a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml index abe2a163a..581224bcd 100644 --- a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml +++ b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/operatorconfigurations.yaml @@ -194,6 +194,9 @@ spec: enable_cross_namespace_secret: default: false type: boolean + enable_finalizers: + default: false + type: boolean enable_init_containers: default: true type: boolean @@ -415,6 +418,8 @@ spec: logical_backup_cpu_request: pattern: ^(\d+m|\d+(\.\d{1,3})?)$ type: string + logical_backup_cronjob_environment_secret: + type: string logical_backup_docker_image: default: registry.opensource.zalan.do/acid/logical-backup:v1.10.1 type: string diff --git a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/postgresqls.yaml b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/postgresqls.yaml index 636b06859..a718ee2f9 100644 --- a/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/postgresqls.yaml +++ b/crd-catalog/zalando/postgres-operator/acid.zalan.do/v1/postgresqls.yaml @@ -370,6 +370,12 @@ spec: cpu: pattern: ^(\d+m|\d+(\.\d{1,3})?)$ type: string + hugepages-1Gi: + pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ + type: string + hugepages-2Mi: + pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ + type: string memory: pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ type: string @@ -379,6 +385,12 @@ spec: cpu: pattern: ^(\d+m|\d+(\.\d{1,3})?)$ type: string + hugepages-1Gi: + pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ + type: string + hugepages-2Mi: + pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ + type: string memory: pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$ type: string diff --git a/kube-custom-resources-rs/src/acme_cert_manager_io/v1/challenges.rs b/kube-custom-resources-rs/src/acme_cert_manager_io/v1/challenges.rs index e7aa83802..9388ccf6a 100644 --- a/kube-custom-resources-rs/src/acme_cert_manager_io/v1/challenges.rs +++ b/kube-custom-resources-rs/src/acme_cert_manager_io/v1/challenges.rs @@ -680,9 +680,15 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferr /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -694,7 +700,7 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferr pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -743,9 +749,15 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferr /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -757,7 +769,7 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityRequire pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -827,9 +839,15 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPre /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -841,7 +859,7 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPre pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -890,9 +908,15 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPre /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -904,7 +928,7 @@ pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityReq pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ChallengeSolverHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/backuppolicytemplates.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/backuppolicytemplates.rs index 9e7e9325d..87f389e99 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/backuppolicytemplates.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/backuppolicytemplates.rs @@ -241,11 +241,13 @@ pub struct BackupPolicyTemplateBackupPoliciesBackupMethodsTarget { #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, /// select instance of corresponding role for backup, role are: - the name of Leader/Follower/Leaner for Consensus component. - primary or secondary for Replication component. finally, invalid role of the component will be ignored. such as if workload type is Replication and component's replicas is 1, the secondary role is invalid. and it also will be ignored when component is Stateful/Stateless. the role will be transformed to a role LabelSelector for BackupPolicy's target attribute. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub role: Option, + pub role: String, /// serviceAccountName specifies the service account to run the backup workload. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")] pub service_account_name: Option, + /// PodSelectionStrategy specifies the strategy to select when multiple pods are selected for backup target. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub strategy: Option, } /// connectionCredential specifies the connection credential to connect to the target database cluster. @@ -294,7 +296,7 @@ pub struct BackupPolicyTemplateBackupPoliciesBackupMethodsTargetPodSelector { /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, - /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. + /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -355,6 +357,13 @@ pub struct BackupPolicyTemplateBackupPoliciesBackupMethodsTargetResourcesSelecto pub values: Option>, } +/// target specifies the target information to back up, it will override the global target policy. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum BackupPolicyTemplateBackupPoliciesBackupMethodsTargetStrategy { + Any, + All, +} + /// targetVolumes specifies which volumes from the target should be mounted in the backup workload. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BackupPolicyTemplateBackupPoliciesBackupMethodsTargetVolumes { @@ -414,8 +423,10 @@ pub struct BackupPolicyTemplateBackupPoliciesTarget { #[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionCredentialKey")] pub connection_credential_key: Option, /// select instance of corresponding role for backup, role are: - the name of Leader/Follower/Leaner for Consensus component. - primary or secondary for Replication component. finally, invalid role of the component will be ignored. such as if workload type is Replication and component's replicas is 1, the secondary role is invalid. and it also will be ignored when component is Stateful/Stateless. the role will be transformed to a role LabelSelector for BackupPolicy's target attribute. + pub role: String, + /// PodSelectionStrategy specifies the strategy to select when multiple pods are selected for backup target. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] - pub role: Option, + pub strategy: Option, } /// connectionCredentialKey defines connection credential key in secret which created by spec.ConnectionCredential of the ClusterDefinition. it will be ignored when "account" is set. @@ -435,6 +446,13 @@ pub struct BackupPolicyTemplateBackupPoliciesTargetConnectionCredentialKey { pub username_key: Option, } +/// target instance for backup. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum BackupPolicyTemplateBackupPoliciesTargetStrategy { + Any, + All, +} + /// BackupPolicyTemplateStatus defines the observed state of BackupPolicyTemplate #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct BackupPolicyTemplateStatus { diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs index e0d6389ba..c60cbba4a 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/clusters.rs @@ -567,18 +567,15 @@ pub struct ClusterServices { /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// ComponentSelector extends the ServiceSpec.Selector by allowing you to specify a component as selectors for the service. For component-level services, a default component selector with the component name will be added automatically. if GeneratePodOrdinalService sets to true, ComponentSelector must be specified. + /// ComponentSelector extends the ServiceSpec.Selector by allowing you to specify a component as selectors for the service. #[serde(default, skip_serializing_if = "Option::is_none", rename = "componentSelector")] pub component_selector: Option, - /// GeneratePodOrdinalService indicates whether to create a corresponding Service for each Pod of the selected Component. If sets to true, a set of Service will be automatically generated for each Pod. and ComponentSelector must be specified. They can be referred to by adding the PodOrdinal to the defined ServiceName with named pattern -. For example, a Service might be defined as follows: - name: my-service serviceName: my-service generatePodOrdinalService: true componentSelector: my-component spec: type: NodePort ports: - name: http port: 80 targetPort: 8080 Assuming that the Component has 3 replicas, then three services would be generated: my-service-0, my-service-1, and my-service-2, each pointing to its respective Pod. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "generatePodOrdinalService")] - pub generate_pod_ordinal_service: Option, - /// Name defines the name or namePrefix of the service. if GeneratePodOrdinalService sets to true, the Name indicates the namePrefix of the service and the fullName will be generated with named pattern -. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. + /// Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. pub name: String, /// RoleSelector extends the ServiceSpec.Selector by allowing you to specify defined role as selector for the service. if GeneratePodOrdinalService sets to true, RoleSelector will be ignored. #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] pub role_selector: Option, - /// ServiceName defines the name or namePrefix of the underlying service object. if GeneratePodOrdinalService sets to true, the ServiceName indicates the namePrefix of the underlying service object. otherwise, it indicates the name of the underlying service object. If not specified, the default service name with different patterns will be used: - : for cluster-level services - -: for component-level services - --: for pod-level services when GeneratePodOrdinalService set to true Only one default service name is allowed. Cannot be updated. + /// ServiceName defines the name of the underlying service object. If not specified, the default service name with different patterns will be used: - : for cluster-level services - -: for component-level services Only one default service name is allowed. Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceName")] pub service_name: Option, /// Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status @@ -761,9 +758,6 @@ pub struct ClusterStatus { /// components record the current status information of all components of the cluster. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterStatusComponents { - /// consensusSetStatus specifies the mapping of role and pod name. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "consensusSetStatus")] - pub consensus_set_status: Option, /// members' status. #[serde(default, skip_serializing_if = "Option::is_none", rename = "membersStatus")] pub members_status: Option>, @@ -779,80 +773,6 @@ pub struct ClusterStatusComponents { /// podsReadyTime what time point of all component pods are ready, this time is the ready time of the last component pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podsReadyTime")] pub pods_ready_time: Option, - /// replicationSetStatus specifies the mapping of role and pod name. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "replicationSetStatus")] - pub replication_set_status: Option, -} - -/// consensusSetStatus specifies the mapping of role and pod name. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsConsensusSetStatus { - /// Followers status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub followers: Option>, - /// Leader status. - pub leader: ClusterStatusComponentsConsensusSetStatusLeader, - /// Learner status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub learner: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsConsensusSetStatusFollowers { - /// accessMode defines what service this pod provides. - #[serde(rename = "accessMode")] - pub access_mode: ClusterStatusComponentsConsensusSetStatusFollowersAccessMode, - /// Defines the role name. - pub name: String, - /// Pod name. - pub pod: String, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum ClusterStatusComponentsConsensusSetStatusFollowersAccessMode { - None, - Readonly, - ReadWrite, -} - -/// Leader status. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsConsensusSetStatusLeader { - /// accessMode defines what service this pod provides. - #[serde(rename = "accessMode")] - pub access_mode: ClusterStatusComponentsConsensusSetStatusLeaderAccessMode, - /// Defines the role name. - pub name: String, - /// Pod name. - pub pod: String, -} - -/// Leader status. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum ClusterStatusComponentsConsensusSetStatusLeaderAccessMode { - None, - Readonly, - ReadWrite, -} - -/// Learner status. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsConsensusSetStatusLearner { - /// accessMode defines what service this pod provides. - #[serde(rename = "accessMode")] - pub access_mode: ClusterStatusComponentsConsensusSetStatusLearnerAccessMode, - /// Defines the role name. - pub name: String, - /// Pod name. - pub pod: String, -} - -/// Learner status. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum ClusterStatusComponentsConsensusSetStatusLearnerAccessMode { - None, - Readonly, - ReadWrite, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] @@ -901,29 +821,6 @@ pub enum ClusterStatusComponentsPhase { Abnormal, } -/// replicationSetStatus specifies the mapping of role and pod name. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsReplicationSetStatus { - /// Primary status. - pub primary: ClusterStatusComponentsReplicationSetStatusPrimary, - /// Secondaries status. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub secondaries: Option>, -} - -/// Primary status. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsReplicationSetStatusPrimary { - /// Pod name. - pub pod: String, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct ClusterStatusComponentsReplicationSetStatusSecondaries { - /// Pod name. - pub pod: String, -} - /// Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, /// type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` /// // other fields } diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs index aedec8f4a..cca583cf4 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/configurations.rs @@ -37,7 +37,10 @@ pub struct ConfigurationConfigItemDetails { pub import_template_ref: Option, /// Specify the name of configuration template. pub name: String, - /// version is the version of configuration template. + /// Payload holds the configuration-related rerender. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub payload: Option>, + /// Deprecated: Please use payload instead. version is the version of configuration template. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs index 3ee2f75a1..db66e9cba 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1alpha1/opsrequests.rs @@ -120,8 +120,10 @@ pub struct OpsRequestExpose { /// componentName cluster component name. #[serde(rename = "componentName")] pub component_name: String, - /// Setting the list of services to be exposed. + /// Setting the list of services to be exposed or removed. pub services: Vec, + /// switch defines the switch of expose operation. if switch is set to Enable, the service will be exposed. if switch is set to Disable, the service will be removed. + pub switch: OpsRequestExposeSwitch, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] @@ -129,19 +131,51 @@ pub struct OpsRequestExposeServices { /// If ServiceType is LoadBalancer, cloud provider related parameters can be put here More info: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// Service name + /// Name defines the name of the service. otherwise, it indicates the name of the service. Others can refer to this service by its name. (e.g., connection credential) Cannot be updated. pub name: String, - /// serviceType determines how the Service is exposed. Valid options are ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, they are determined by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types. + /// The list of ports that are exposed by this service. If Ports are not provided, the default Services Ports defined in the ClusterDefinition or ComponentDefinition that are neither of NodePort nor LoadBalancer service type will be used. If there is no corresponding Service defined in the ClusterDefinition or ComponentDefinition, the expose operation will fail. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ports: Option>, + /// RoleSelector extends the ServiceSpec.Selector by allowing you to specify defined role as selector for the service. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "roleSelector")] + pub role_selector: Option, + /// Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub selector: Option>, + /// type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is "None", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. "NodePort" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. "LoadBalancer" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceType")] - pub service_type: Option, + pub service_type: Option, } +/// ServicePort contains information on service's port. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum OpsRequestExposeServicesServiceType { - #[serde(rename = "ClusterIP")] - ClusterIp, - NodePort, - LoadBalancer, +pub struct OpsRequestExposeServicesPorts { + /// The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: + /// * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). + /// * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 over cleartext as described in https://www.rfc-editor.org/rfc/rfc7540 * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 + /// * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] + pub app_protocol: Option, + /// The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// The port on each node on which this service is exposed when type is NodePort or LoadBalancer. Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail. If not specified, a port will be allocated if this Service requires one. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] + pub node_port: Option, + /// The port that will be exposed by this service. + pub port: i32, + /// The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". Default is TCP. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub protocol: Option, + /// Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] + pub target_port: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum OpsRequestExposeSwitch { + Enable, + Disable, } /// HorizontalScaling defines the variables of horizontal scaling operation diff --git a/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs index 9c990354e..e7bf070f5 100644 --- a/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs +++ b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs @@ -138,7 +138,7 @@ pub struct CanaryAlertmanager { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -455,7 +455,7 @@ pub struct CanaryAwsConfig { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, pub query: String, @@ -700,7 +700,7 @@ pub struct CanaryAwsConfigRule { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -937,7 +937,7 @@ pub struct CanaryAzureDevops { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, pub organization: String, @@ -1091,7 +1091,7 @@ pub struct CanaryCloudwatch { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1324,7 +1324,7 @@ pub struct CanaryConfigDb { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, pub query: String, @@ -1417,7 +1417,7 @@ pub struct CanaryContainerd { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -1561,7 +1561,7 @@ pub struct CanaryContainerdPush { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1616,7 +1616,7 @@ pub struct CanaryDatabaseBackup { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1769,7 +1769,7 @@ pub struct CanaryDns { pub minrecords: Option, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1833,7 +1833,7 @@ pub struct CanaryDocker { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -1979,7 +1979,7 @@ pub struct CanaryDockerPush { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is @@ -2130,7 +2130,7 @@ pub struct CanaryDynatrace { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2275,7 +2275,7 @@ pub struct CanaryEc2 { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2487,7 +2487,7 @@ pub struct CanaryElasticsearch { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2738,7 +2738,7 @@ pub struct CanaryExec { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Script can be a inline script or a path to a script that needs to be executed On windows executed via powershell and in darwin and linux executed using bash @@ -3381,7 +3381,7 @@ pub struct CanaryFolder { pub min_size: Option, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Path to folder or object storage, e.g. `s3://`, `gcs://`, `/path/tp/folder` @@ -3933,7 +3933,7 @@ pub struct CanaryGithub { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Query to be executed. Please see https://github.com/askgitdev/askgit for more details regarding syntax @@ -4071,7 +4071,7 @@ pub struct CanaryHelm { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -4239,7 +4239,7 @@ pub struct CanaryHttp { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// NTLM when set to true will do authentication using NTLM v1 protocol @@ -4555,7 +4555,7 @@ pub struct CanaryIcmp { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "packetCount")] @@ -4611,7 +4611,7 @@ pub struct CanaryJmeter { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Port on which the server is running @@ -4719,7 +4719,7 @@ pub struct CanaryJunit { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, pub spec: BTreeMap, @@ -4822,9 +4822,11 @@ pub struct CanaryKubernetes { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] + pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub ready: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -4871,6 +4873,16 @@ pub struct CanaryKubernetesMetricsLabels { pub value_expr: Option, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesNamespaceSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldSelector")] + pub field_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CanaryKubernetesResource { #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldSelector")] @@ -4926,7 +4938,7 @@ pub struct CanaryLdap { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5075,7 +5087,7 @@ pub struct CanaryMongodb { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5222,7 +5234,7 @@ pub struct CanaryMssql { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5414,7 +5426,7 @@ pub struct CanaryMysql { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5619,7 +5631,7 @@ pub struct CanaryNamespace { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceAnnotations")] @@ -5688,7 +5700,7 @@ pub struct CanaryOpensearch { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5893,7 +5905,7 @@ pub struct CanaryPod { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5957,7 +5969,7 @@ pub struct CanaryPostgres { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6152,7 +6164,7 @@ pub struct CanaryPrometheus { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6344,7 +6356,7 @@ pub struct CanaryRedis { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6504,7 +6516,7 @@ pub struct CanaryRestic { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// Password for the restic repository @@ -6705,7 +6717,7 @@ pub struct CanaryS3 { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, /// glob path to restrict matches to a subset @@ -6902,7 +6914,7 @@ pub struct CanaryTcp { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "thresholdMillis")] @@ -6951,7 +6963,7 @@ pub struct CanaryWebhook { pub metrics: Option>, /// Name of the check pub name: String, - /// Namespace of the check + /// Namespace to insert the check into, if different to the namespace the canary is defined, e.g. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cert_manager_io/v1/certificates.rs b/kube-custom-resources-rs/src/cert_manager_io/v1/certificates.rs index 3b5234618..125418658 100644 --- a/kube-custom-resources-rs/src/cert_manager_io/v1/certificates.rs +++ b/kube-custom-resources-rs/src/cert_manager_io/v1/certificates.rs @@ -54,9 +54,12 @@ pub struct CertificateSpec { #[serde(default, skip_serializing_if = "Option::is_none", rename = "literalSubject")] pub literal_subject: Option, /// x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate. More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 - /// This is an Alpha Feature and is only enabled with the `--feature-gates=useCertificateRequestNameConstraints=true` option set on both the controller and webhook components. + /// This is an Alpha Feature and is only enabled with the `--feature-gates=NameConstraints=true` option set on both the controller and webhook components. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nameConstraints")] pub name_constraints: Option, + /// `otherNames` is an escape hatch for SAN that allows any type. We currently restrict the support to string like otherNames, cf RFC 5280 p 37 Any UTF8 String valued otherName can be passed with by setting the keys oid: x.x.x.x and UTF8Value: somevalue for `otherName`. Most commonly this would be UPN set with oid: 1.3.6.1.4.1.311.20.2.3 You should ensure that any OID passed is valid for the UTF8String type as we do not explicitly validate this. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "otherNames")] + pub other_names: Option>, /// Private key options. These include the key algorithm and size, the used encoding and the rotation policy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKey")] pub private_key: Option, @@ -158,6 +161,10 @@ pub struct CertificateKeystoresPkcs12 { /// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore. #[serde(rename = "passwordSecretRef")] pub password_secret_ref: CertificateKeystoresPkcs12PasswordSecretRef, + /// Profile specifies the key and certificate encryption algorithms and the HMAC algorithm used to create the PKCS12 keystore. Default value is `LegacyRC2` for backward compatibility. + /// If provided, allowed values are: `LegacyRC2`: Deprecated. Not supported by default in OpenSSL 3 or Java 20. `LegacyDES`: Less secure algorithm. Use this option for maximal compatibility. `Modern2023`: Secure algorithm. Use this option in case you have to always use secure algorithms (eg. because of company policy). Please note that the security of the algorithm is not that important in reality, because the unencrypted certificate and private key are also stored in the Secret. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub profile: Option, } /// PasswordSecretRef is a reference to a key in a Secret resource containing the password used to encrypt the PKCS12 keystore. @@ -170,8 +177,18 @@ pub struct CertificateKeystoresPkcs12PasswordSecretRef { pub name: String, } +/// PKCS12 configures options for storing a PKCS12 keystore in the `spec.secretName` Secret resource. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum CertificateKeystoresPkcs12Profile { + #[serde(rename = "LegacyRC2")] + LegacyRc2, + #[serde(rename = "LegacyDES")] + LegacyDes, + Modern2023, +} + /// x.509 certificate NameConstraint extension which MUST NOT be used in a non-CA certificate. More Info: https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 -/// This is an Alpha Feature and is only enabled with the `--feature-gates=useCertificateRequestNameConstraints=true` option set on both the controller and webhook components. +/// This is an Alpha Feature and is only enabled with the `--feature-gates=NameConstraints=true` option set on both the controller and webhook components. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct CertificateNameConstraints { /// if true then the name constraints are marked critical. @@ -219,6 +236,16 @@ pub struct CertificateNameConstraintsPermitted { pub uri_domains: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub struct CertificateOtherNames { + /// OID is the object identifier for the otherName SAN. The object identifier must be expressed as a dotted string, for example, "1.2.840.113556.1.4.221". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub oid: Option, + /// utf8Value is the string value of the otherName SAN. The utf8Value accepts any valid UTF8 string to set as value for the otherName SAN. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "utf8Value")] + pub utf8_value: Option, +} + /// Private key options. These include the key algorithm and size, the used encoding and the rotation policy. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct CertificatePrivateKey { diff --git a/kube-custom-resources-rs/src/cert_manager_io/v1/clusterissuers.rs b/kube-custom-resources-rs/src/cert_manager_io/v1/clusterissuers.rs index 4bcac26d8..887638f1d 100644 --- a/kube-custom-resources-rs/src/cert_manager_io/v1/clusterissuers.rs +++ b/kube-custom-resources-rs/src/cert_manager_io/v1/clusterissuers.rs @@ -738,9 +738,15 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffini /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -752,7 +758,7 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffini pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -801,9 +807,15 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffini /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -815,7 +827,7 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffini pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -885,9 +897,15 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAf /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -899,7 +917,7 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAf pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -948,9 +966,15 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAf /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -962,7 +986,7 @@ pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAf pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterIssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/cert_manager_io/v1/issuers.rs b/kube-custom-resources-rs/src/cert_manager_io/v1/issuers.rs index c9a9162a7..c51ba0800 100644 --- a/kube-custom-resources-rs/src/cert_manager_io/v1/issuers.rs +++ b/kube-custom-resources-rs/src/cert_manager_io/v1/issuers.rs @@ -739,9 +739,15 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPrefe /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -753,7 +759,7 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPrefe pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -802,9 +808,15 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityPrefe /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -816,7 +828,7 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequi pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -886,9 +898,15 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityP /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -900,7 +918,7 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityP pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. @@ -949,9 +967,15 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityP /// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. + /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, @@ -963,7 +987,7 @@ pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityR pub topology_key: String, } -/// A label query over a set of resources, in this case pods. +/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct IssuerAcmeSolversHttp01IngressPodTemplateSpecAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. diff --git a/kube-custom-resources-rs/src/config_openshift_io/v1/infrastructures.rs b/kube-custom-resources-rs/src/config_openshift_io/v1/infrastructures.rs index aeac974eb..b7897f978 100644 --- a/kube-custom-resources-rs/src/config_openshift_io/v1/infrastructures.rs +++ b/kube-custom-resources-rs/src/config_openshift_io/v1/infrastructures.rs @@ -113,6 +113,15 @@ pub struct InfrastructurePlatformSpecAzure { /// BareMetal contains settings specific to the BareMetal platform. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct InfrastructurePlatformSpecBaremetal { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, } /// EquinixMetal contains settings specific to the Equinix Metal infrastructure provider. @@ -242,6 +251,15 @@ pub struct InfrastructurePlatformSpecNutanixPrismElementsEndpoint { /// OpenStack contains settings specific to the OpenStack infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct InfrastructurePlatformSpecOpenstack { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, } /// Ovirt contains settings specific to the oVirt infrastructure provider. @@ -297,9 +315,18 @@ pub enum InfrastructurePlatformSpecType { /// VSphere contains settings specific to the VSphere infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct InfrastructurePlatformSpecVsphere { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, /// failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeNetworking")] pub node_networking: Option, @@ -643,6 +670,9 @@ pub struct InfrastructureStatusPlatformStatusBaremetal { /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for BareMetal deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, @@ -802,6 +832,9 @@ pub struct InfrastructureStatusPlatformStatusOpenstack { /// loadBalancer defines how the load balancer used by the cluster is configured. #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] pub load_balancer: Option, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for OpenStack deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, @@ -921,6 +954,9 @@ pub struct InfrastructureStatusPlatformStatusVsphere { /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for vSphere deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, diff --git a/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backuppolicies.rs b/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backuppolicies.rs index 32544c501..8d511f166 100644 --- a/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backuppolicies.rs +++ b/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backuppolicies.rs @@ -212,7 +212,7 @@ pub struct BackupPolicyBackupMethodsTargetPodSelector { /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, - /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. + /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -352,7 +352,7 @@ pub struct BackupPolicyTargetPodSelector { /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, - /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. + /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } diff --git a/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backups.rs b/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backups.rs index 968b42b3f..57887495e 100644 --- a/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backups.rs +++ b/kube-custom-resources-rs/src/dataprotection_kubeblocks_io/v1alpha1/backups.rs @@ -359,7 +359,7 @@ pub struct BackupStatusBackupMethodTargetPodSelector { /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, - /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. + /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -510,7 +510,7 @@ pub struct BackupStatusTargetPodSelector { /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, - /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. + /// strategy specifies the strategy to select the target pod when multiple pods are selected. Valid values are: - Any: select any one pod that match the labelsSelector. - All: select all pods that match the labelsSelector. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } diff --git a/kube-custom-resources-rs/src/k8s_otterize_com/v1alpha3/clientintents.rs b/kube-custom-resources-rs/src/k8s_otterize_com/v1alpha3/clientintents.rs index 3b13accda..0e07ba0d3 100644 --- a/kube-custom-resources-rs/src/k8s_otterize_com/v1alpha3/clientintents.rs +++ b/kube-custom-resources-rs/src/k8s_otterize_com/v1alpha3/clientintents.rs @@ -86,6 +86,9 @@ pub struct ClientIntentsService { /// IntentsStatus defines the observed state of ClientIntents #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClientIntentsStatus { + /// The last generation of the intents that was successfully reconciled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, /// upToDate field reflects whether the client intents have successfully been applied to the cluster to the state specified #[serde(default, skip_serializing_if = "Option::is_none", rename = "upToDate")] pub up_to_date: Option, diff --git a/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshhttproutes.rs b/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshhttproutes.rs index 611041cef..1f984fa4e 100644 --- a/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshhttproutes.rs +++ b/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshhttproutes.rs @@ -52,6 +52,9 @@ pub enum MeshHTTPRouteTargetRefKind { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct MeshHTTPRouteTo { + /// Hostnames is only valid when targeting MeshGateway and limits the effects of the rules to requests to this hostname. Given hostnames must intersect with the hostname of the listeners the route attaches to. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub hostnames: Option>, /// Rules contains the routing rules applies to a combination of top-level targetRef and the targetRef in this entry. #[serde(default, skip_serializing_if = "Option::is_none")] pub rules: Option>, diff --git a/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshratelimits.rs b/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshratelimits.rs index a4fe624ac..f7b22c9d9 100644 --- a/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshratelimits.rs +++ b/kube-custom-resources-rs/src/kuma_io/v1alpha1/meshratelimits.rs @@ -18,6 +18,9 @@ pub struct MeshRateLimitSpec { /// TargetRef is a reference to the resource the policy takes an effect on. The resource could be either a real store object or virtual resource defined inplace. #[serde(rename = "targetRef")] pub target_ref: MeshRateLimitTargetRef, + /// To list makes a match between clients and corresponding configurations + #[serde(default, skip_serializing_if = "Option::is_none")] + pub to: Option>, } #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -182,3 +185,136 @@ pub enum MeshRateLimitTargetRefKind { MeshHttpRoute, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitTo { + /// Default is a configuration specific to the group of clients referenced in 'targetRef' + #[serde(default, skip_serializing_if = "Option::is_none")] + pub default: Option, + /// TargetRef is a reference to the resource that represents a group of clients. + #[serde(rename = "targetRef")] + pub target_ref: MeshRateLimitToTargetRef, +} + +/// Default is a configuration specific to the group of clients referenced in 'targetRef' +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefault { + /// LocalConf defines local http or/and tcp rate limit configuration + #[serde(default, skip_serializing_if = "Option::is_none")] + pub local: Option, +} + +/// LocalConf defines local http or/and tcp rate limit configuration +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocal { + /// LocalHTTP defines confguration of local HTTP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter + #[serde(default, skip_serializing_if = "Option::is_none")] + pub http: Option, + /// LocalTCP defines confguration of local TCP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tcp: Option, +} + +/// LocalHTTP defines confguration of local HTTP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/local_rate_limit_filter +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttp { + /// Define if rate limiting should be disabled. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub disabled: Option, + /// Describes the actions to take on a rate limit event + #[serde(default, skip_serializing_if = "Option::is_none", rename = "onRateLimit")] + pub on_rate_limit: Option, + /// Defines how many requests are allowed per interval. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "requestRate")] + pub request_rate: Option, +} + +/// Describes the actions to take on a rate limit event +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttpOnRateLimit { + /// The Headers to be added to the HTTP response on a rate limit event + #[serde(default, skip_serializing_if = "Option::is_none")] + pub headers: Option, + /// The HTTP status code to be set on a rate limit event + #[serde(default, skip_serializing_if = "Option::is_none")] + pub status: Option, +} + +/// The Headers to be added to the HTTP response on a rate limit event +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttpOnRateLimitHeaders { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub add: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub set: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttpOnRateLimitHeadersAdd { + pub name: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttpOnRateLimitHeadersSet { + pub name: String, + pub value: String, +} + +/// Defines how many requests are allowed per interval. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalHttpRequestRate { + /// The interval the number of units is accounted for. + pub interval: String, + /// Number of units per interval (depending on usage it can be a number of requests, or a number of connections). + pub num: i32, +} + +/// LocalTCP defines confguration of local TCP rate limiting https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/local_rate_limit_filter +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalTcp { + /// Defines how many connections are allowed per interval. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionRate")] + pub connection_rate: Option, + /// Define if rate limiting should be disabled. Default: false + #[serde(default, skip_serializing_if = "Option::is_none")] + pub disabled: Option, +} + +/// Defines how many connections are allowed per interval. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToDefaultLocalTcpConnectionRate { + /// The interval the number of units is accounted for. + pub interval: String, + /// Number of units per interval (depending on usage it can be a number of requests, or a number of connections). + pub num: i32, +} + +/// TargetRef is a reference to the resource that represents a group of clients. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MeshRateLimitToTargetRef { + /// Kind of the referenced resource + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, + /// Mesh is reserved for future use to identify cross mesh resources. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mesh: Option, + /// Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and `MeshGatewayRoute` + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshServiceSubset` + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tags: Option>, +} + +/// TargetRef is a reference to the resource that represents a group of clients. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum MeshRateLimitToTargetRefKind { + Mesh, + MeshSubset, + MeshGateway, + MeshService, + MeshServiceSubset, + #[serde(rename = "MeshHTTPRoute")] + MeshHttpRoute, +} + diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index c32f40bfe..42fe3e386 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -1444,6 +1444,7 @@ apiVersion `longhorn.io/v1beta2`: - `BackingImageDataSource` - `BackingImageManager` - `BackingImage` +- `BackupBackingImage` - `Backup` - `BackupTarget` - `BackupVolume` diff --git a/kube-custom-resources-rs/src/litmuschaos_io/v1alpha1/chaosengines.rs b/kube-custom-resources-rs/src/litmuschaos_io/v1alpha1/chaosengines.rs index c506cbc55..8d6447ea6 100644 --- a/kube-custom-resources-rs/src/litmuschaos_io/v1alpha1/chaosengines.rs +++ b/kube-custom-resources-rs/src/litmuschaos_io/v1alpha1/chaosengines.rs @@ -1530,6 +1530,8 @@ pub struct ChaosEngineExperimentsSpecProbeRunProperties { pub retry: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "stopOnFailure")] pub stop_on_failure: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub verbosity: Option, } /// inputs needed for the SLO probe diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimagedatasources.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimagedatasources.rs index 502a869d1..6985cc4b0 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimagedatasources.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimagedatasources.rs @@ -40,6 +40,8 @@ pub enum BackingImageDataSourceSourceType { Upload, #[serde(rename = "export-from-volume")] ExportFromVolume, + #[serde(rename = "restore")] + Restore, } /// BackingImageDataSourceStatus defines the observed state of the Longhorn backing image data source diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimages.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimages.rs index ae2b2a45e..6ab099df6 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimages.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backingimages.rs @@ -32,6 +32,8 @@ pub enum BackingImageSourceType { Upload, #[serde(rename = "export-from-volume")] ExportFromVolume, + #[serde(rename = "restore")] + Restore, } /// BackingImageStatus defines the observed state of the Longhorn backing image status diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/backupbackingimages.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backupbackingimages.rs new file mode 100644 index 000000000..b60d297a4 --- /dev/null +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/backupbackingimages.rs @@ -0,0 +1,73 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/longhorn/longhorn/longhorn.io/v1beta2/backupbackingimages.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; + +/// BackupBackingImageSpec defines the desired state of the Longhorn backing image backup +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "longhorn.io", version = "v1beta2", kind = "BackupBackingImage", plural = "backupbackingimages")] +#[kube(namespaced)] +#[kube(status = "BackupBackingImageStatus")] +#[kube(schema = "disabled")] +pub struct BackupBackingImageSpec { + /// The labels of backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// The time to request run sync the remote backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "syncRequestedAt")] + pub sync_requested_at: Option, + /// Is this CR created by user through API or UI. Required + #[serde(rename = "userCreated")] + pub user_created: bool, +} + +/// BackupBackingImageStatus defines the observed state of the Longhorn backing image backup +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct BackupBackingImageStatus { + /// The backing image name. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "backingImage")] + pub backing_image: Option, + /// The backing image backup upload finished time. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupCreatedAt")] + pub backup_created_at: Option, + /// The checksum of the backing image. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub checksum: Option, + /// Compression method + #[serde(default, skip_serializing_if = "Option::is_none", rename = "compressionMethod")] + pub compression_method: Option, + /// The error message when taking the backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub error: Option, + /// The labels of backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// The last time that the backing image backup was synced with the remote backup target. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastSyncedAt")] + pub last_synced_at: Option, + /// The address of the backing image manager that runs backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "managerAddress")] + pub manager_address: Option, + /// The error messages when listing or inspecting backing image backup. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub messages: Option>, + /// The node ID on which the controller is responsible to reconcile this CR. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ownerID")] + pub owner_id: Option, + /// The backing image backup progress. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub progress: Option, + /// The backing image size. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub size: Option, + /// The backing image backup creation state. Can be "", "InProgress", "Completed", "Error", "Unknown". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + /// The backing image backup URL. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, +} + diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/engines.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/engines.rs index 3604205e9..e667de856 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/engines.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/engines.rs @@ -15,7 +15,7 @@ use std::collections::BTreeMap; pub struct EngineSpec { #[serde(default, skip_serializing_if = "Option::is_none")] pub active: Option, - /// Deprecated. + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupVolume")] @@ -47,6 +47,10 @@ pub struct EngineSpec { pub revision_counter_disabled: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "salvageRequested")] pub salvage_requested: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxCount")] + pub snapshot_max_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxSize")] + pub snapshot_max_size: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "unmapMarkSnapChainRemovedEnabled")] pub unmap_mark_snap_chain_removed_enabled: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradedReplicaAddressMap")] @@ -126,6 +130,10 @@ pub struct EngineStatus { pub restore_status: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "salvageExecuted")] pub salvage_executed: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxCount")] + pub snapshot_max_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxSize")] + pub snapshot_max_size: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub snapshots: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotsError")] diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/instancemanagers.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/instancemanagers.rs index 1211322dc..684bbb719 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/instancemanagers.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/instancemanagers.rs @@ -6,16 +6,13 @@ use kube::CustomResource; use serde::{Serialize, Deserialize}; use std::collections::BTreeMap; -/// InstanceManagerSpec defines the desired state of the Longhorn instancer manager +/// InstanceManagerSpec defines the desired state of the Longhorn instance manager #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] #[kube(group = "longhorn.io", version = "v1beta2", kind = "InstanceManager", plural = "instancemanagers")] #[kube(namespaced)] #[kube(status = "InstanceManagerStatus")] #[kube(schema = "disabled")] pub struct InstanceManagerSpec { - /// Deprecated. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] - pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataEngine")] pub data_engine: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -26,7 +23,7 @@ pub struct InstanceManagerSpec { pub r#type: Option, } -/// InstanceManagerSpec defines the desired state of the Longhorn instancer manager +/// InstanceManagerSpec defines the desired state of the Longhorn instance manager #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum InstanceManagerType { #[serde(rename = "aio")] @@ -73,7 +70,7 @@ pub struct InstanceManagerStatusInstanceEngines { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InstanceManagerStatusInstanceEnginesSpec { - /// Deprecated. + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataEngine")] @@ -114,7 +111,7 @@ pub struct InstanceManagerStatusInstanceReplicas { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InstanceManagerStatusInstanceReplicasSpec { - /// Deprecated. + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataEngine")] @@ -156,8 +153,11 @@ pub struct InstanceManagerStatusInstances { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InstanceManagerStatusInstancesSpec { + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataEngine")] + pub data_engine: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/mod.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/mod.rs index 5b326d45a..bc69b5905 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/mod.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/mod.rs @@ -1,6 +1,7 @@ pub mod backingimagedatasources; pub mod backingimagemanagers; pub mod backingimages; +pub mod backupbackingimages; pub mod backups; pub mod backuptargets; pub mod backupvolumes; diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/replicas.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/replicas.rs index 1f75f9643..f57f9f259 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/replicas.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/replicas.rs @@ -14,7 +14,7 @@ use serde::{Serialize, Deserialize}; pub struct ReplicaSpec { #[serde(default, skip_serializing_if = "Option::is_none")] pub active: Option, - /// Deprecated. + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "backingImage")] @@ -54,6 +54,10 @@ pub struct ReplicaSpec { pub revision_counter_disabled: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "salvageRequested")] pub salvage_requested: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxCount")] + pub snapshot_max_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxSize")] + pub snapshot_max_size: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "unmapMarkDiskChainRemovedEnabled")] pub unmap_mark_disk_chain_removed_enabled: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] diff --git a/kube-custom-resources-rs/src/longhorn_io/v1beta2/volumes.rs b/kube-custom-resources-rs/src/longhorn_io/v1beta2/volumes.rs index 4f40c2f9e..e45405eef 100644 --- a/kube-custom-resources-rs/src/longhorn_io/v1beta2/volumes.rs +++ b/kube-custom-resources-rs/src/longhorn_io/v1beta2/volumes.rs @@ -16,7 +16,7 @@ pub struct VolumeSpec { pub standby: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessMode")] pub access_mode: Option, - /// Deprecated. + /// Deprecated: Replaced by field `dataEngine`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backendStoreDriver")] pub backend_store_driver: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "backingImage")] @@ -78,6 +78,10 @@ pub struct VolumeSpec { pub size: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotDataIntegrity")] pub snapshot_data_integrity: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxCount")] + pub snapshot_max_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotMaxSize")] + pub snapshot_max_size: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "staleReplicaTimeout")] pub stale_replica_timeout: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "unmapMarkSnapChainRemoved")] diff --git a/kube-custom-resources-rs/src/machineconfiguration_openshift_io/v1/controllerconfigs.rs b/kube-custom-resources-rs/src/machineconfiguration_openshift_io/v1/controllerconfigs.rs index ae114011f..4ab6353b3 100644 --- a/kube-custom-resources-rs/src/machineconfiguration_openshift_io/v1/controllerconfigs.rs +++ b/kube-custom-resources-rs/src/machineconfiguration_openshift_io/v1/controllerconfigs.rs @@ -359,6 +359,15 @@ pub struct ControllerConfigInfraSpecPlatformSpecAzure { /// BareMetal contains settings specific to the BareMetal platform. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ControllerConfigInfraSpecPlatformSpecBaremetal { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, } /// EquinixMetal contains settings specific to the Equinix Metal infrastructure provider. @@ -488,6 +497,15 @@ pub struct ControllerConfigInfraSpecPlatformSpecNutanixPrismElementsEndpoint { /// OpenStack contains settings specific to the OpenStack infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ControllerConfigInfraSpecPlatformSpecOpenstack { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, } /// Ovirt contains settings specific to the oVirt infrastructure provider. @@ -543,9 +561,18 @@ pub enum ControllerConfigInfraSpecPlatformSpecType { /// VSphere contains settings specific to the VSphere infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ControllerConfigInfraSpecPlatformSpecVsphere { + /// apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.apiServerInternalIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerInternalIPs")] + pub api_server_internal_i_ps: Option>, /// failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, + /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IP addresses, one from IPv4 family and one from IPv6. In single stack clusters a single IP address is expected. When omitted, values from the status.ingressIPs will be used. Once set, the list cannot be completely removed (but its second entry can). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] + pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. Each network is provided in the CIDR format and should be IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeNetworking")] pub node_networking: Option, @@ -889,6 +916,9 @@ pub struct ControllerConfigInfraStatusPlatformStatusBaremetal { /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for BareMetal deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, @@ -1048,6 +1078,9 @@ pub struct ControllerConfigInfraStatusPlatformStatusOpenstack { /// loadBalancer defines how the load balancer used by the cluster is configured. #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] pub load_balancer: Option, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for OpenStack deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, @@ -1167,6 +1200,9 @@ pub struct ControllerConfigInfraStatusPlatformStatusVsphere { /// ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressIPs")] pub ingress_i_ps: Option>, + /// machineNetworks are IP networks used to connect all the OpenShift cluster nodes. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineNetworks")] + pub machine_networks: Option>, /// nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for vSphere deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDNSIP")] pub node_dnsip: Option, diff --git a/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs b/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs index 38af21013..466dfe91d 100644 --- a/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs +++ b/kube-custom-resources-rs/src/minio_min_io/v2/tenants.rs @@ -364,6 +364,8 @@ pub struct TenantAdditionalVolumesEphemeralVolumeClaimTemplateSpec { pub selector: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] + pub volume_attributes_class_name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] @@ -390,19 +392,12 @@ pub struct TenantAdditionalVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantAdditionalVolumesEphemeralVolumeClaimTemplateSpecResources { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct TenantAdditionalVolumesEphemeralVolumeClaimTemplateSpecResourcesClaims { - pub name: String, -} - #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantAdditionalVolumesEphemeralVolumeClaimTemplateSpecSelector { #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] @@ -570,6 +565,8 @@ pub struct TenantAdditionalVolumesProjected { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantAdditionalVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterTrustBundle")] + pub cluster_trust_bundle: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] pub config_map: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] @@ -580,6 +577,35 @@ pub struct TenantAdditionalVolumesProjectedSources { pub service_account_token: Option, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantAdditionalVolumesProjectedSourcesClusterTrustBundle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "signerName")] + pub signer_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantAdditionalVolumesProjectedSourcesClusterTrustBundleLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantAdditionalVolumesProjectedSourcesClusterTrustBundleLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantAdditionalVolumesProjectedSourcesConfigMap { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1072,6 +1098,8 @@ pub struct TenantInitContainersLifecyclePostStart { pub exec: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -1101,6 +1129,11 @@ pub struct TenantInitContainersLifecyclePostStartHttpGetHttpHeaders { pub value: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantInitContainersLifecyclePostStartSleep { + pub seconds: i64, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantInitContainersLifecyclePostStartTcpSocket { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1114,6 +1147,8 @@ pub struct TenantInitContainersLifecyclePreStop { pub exec: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -1143,6 +1178,11 @@ pub struct TenantInitContainersLifecyclePreStopHttpGetHttpHeaders { pub value: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantInitContainersLifecyclePreStopSleep { + pub seconds: i64, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantInitContainersLifecyclePreStopTcpSocket { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1603,6 +1643,10 @@ pub struct TenantKesAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExe pub struct TenantKesAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1647,6 +1691,10 @@ pub struct TenantKesAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExe pub struct TenantKesAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1706,6 +1754,10 @@ pub struct TenantKesAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDurin pub struct TenantKesAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1750,6 +1802,10 @@ pub struct TenantKesAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDurin pub struct TenantKesAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2196,6 +2252,10 @@ pub struct TenantPoolsAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringE pub struct TenantPoolsAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2240,6 +2300,10 @@ pub struct TenantPoolsAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringE pub struct TenantPoolsAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2299,6 +2363,10 @@ pub struct TenantPoolsAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDur pub struct TenantPoolsAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2343,6 +2411,10 @@ pub struct TenantPoolsAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDur pub struct TenantPoolsAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2618,6 +2690,8 @@ pub struct TenantPoolsVolumeClaimTemplateSpec { pub selector: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] + pub volume_attributes_class_name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] @@ -2644,19 +2718,12 @@ pub struct TenantPoolsVolumeClaimTemplateSpecDataSourceRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantPoolsVolumeClaimTemplateSpecResources { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct TenantPoolsVolumeClaimTemplateSpecResourcesClaims { - pub name: String, -} - #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantPoolsVolumeClaimTemplateSpecSelector { #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] @@ -2685,6 +2752,10 @@ pub struct TenantPoolsVolumeClaimTemplateStatus { pub capacity: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentVolumeAttributesClassName")] + pub current_volume_attributes_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "modifyVolumeStatus")] + pub modify_volume_status: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, } @@ -2704,6 +2775,13 @@ pub struct TenantPoolsVolumeClaimTemplateStatusConditions { pub r#type: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantPoolsVolumeClaimTemplateStatusModifyVolumeStatus { + pub status: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetVolumeAttributesClassName")] + pub target_volume_attributes_class_name: Option, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantReadiness { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2938,6 +3016,8 @@ pub struct TenantSideCarsContainersLifecyclePostStart { pub exec: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -2967,6 +3047,11 @@ pub struct TenantSideCarsContainersLifecyclePostStartHttpGetHttpHeaders { pub value: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsContainersLifecyclePostStartSleep { + pub seconds: i64, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsContainersLifecyclePostStartTcpSocket { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2980,6 +3065,8 @@ pub struct TenantSideCarsContainersLifecyclePreStop { pub exec: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -3009,6 +3096,11 @@ pub struct TenantSideCarsContainersLifecyclePreStopHttpGetHttpHeaders { pub value: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsContainersLifecyclePreStopSleep { + pub seconds: i64, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsContainersLifecyclePreStopTcpSocket { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -3387,6 +3479,8 @@ pub struct TenantSideCarsVolumeClaimTemplatesSpec { pub selector: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] + pub volume_attributes_class_name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] @@ -3413,19 +3507,12 @@ pub struct TenantSideCarsVolumeClaimTemplatesSpecDataSourceRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumeClaimTemplatesSpecResources { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct TenantSideCarsVolumeClaimTemplatesSpecResourcesClaims { - pub name: String, -} - #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumeClaimTemplatesSpecSelector { #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] @@ -3454,6 +3541,10 @@ pub struct TenantSideCarsVolumeClaimTemplatesStatus { pub capacity: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "currentVolumeAttributesClassName")] + pub current_volume_attributes_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "modifyVolumeStatus")] + pub modify_volume_status: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, } @@ -3473,6 +3564,13 @@ pub struct TenantSideCarsVolumeClaimTemplatesStatusConditions { pub r#type: String, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsVolumeClaimTemplatesStatusModifyVolumeStatus { + pub status: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetVolumeAttributesClassName")] + pub target_volume_attributes_class_name: Option, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumes { #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] @@ -3737,6 +3835,8 @@ pub struct TenantSideCarsVolumesEphemeralVolumeClaimTemplateSpec { pub selector: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] + pub volume_attributes_class_name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] @@ -3763,19 +3863,12 @@ pub struct TenantSideCarsVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumesEphemeralVolumeClaimTemplateSpecResources { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct TenantSideCarsVolumesEphemeralVolumeClaimTemplateSpecResourcesClaims { - pub name: String, -} - #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumesEphemeralVolumeClaimTemplateSpecSelector { #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] @@ -3943,6 +4036,8 @@ pub struct TenantSideCarsVolumesProjected { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumesProjectedSources { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterTrustBundle")] + pub cluster_trust_bundle: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] pub config_map: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] @@ -3953,6 +4048,35 @@ pub struct TenantSideCarsVolumesProjectedSources { pub service_account_token: Option, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsVolumesProjectedSourcesClusterTrustBundle { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "signerName")] + pub signer_name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsVolumesProjectedSourcesClusterTrustBundleLabelSelector { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct TenantSideCarsVolumesProjectedSourcesClusterTrustBundleLabelSelectorMatchExpressions { + pub key: String, + pub operator: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct TenantSideCarsVolumesProjectedSourcesConfigMap { #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/monitoring_coreos_com/v1/prometheuses.rs b/kube-custom-resources-rs/src/monitoring_coreos_com/v1/prometheuses.rs index 6f48d167a..c73bc3527 100644 --- a/kube-custom-resources-rs/src/monitoring_coreos_com/v1/prometheuses.rs +++ b/kube-custom-resources-rs/src/monitoring_coreos_com/v1/prometheuses.rs @@ -3491,6 +3491,9 @@ pub struct PrometheusRemoteWrite { /// Deprecated: this will be removed in a future release. Prefer using `authorization`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bearerTokenFile")] pub bearer_token_file: Option, + /// Whether to enable HTTP2. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "enableHttp2")] + pub enable_http2: Option, /// Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. /// It requires Prometheus >= v2.25.0. #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/prometheusagents.rs b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/prometheusagents.rs index eff330548..b823343f5 100644 --- a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/prometheusagents.rs +++ b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/prometheusagents.rs @@ -2744,6 +2744,9 @@ pub struct PrometheusAgentRemoteWrite { /// Deprecated: this will be removed in a future release. Prefer using `authorization`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bearerTokenFile")] pub bearer_token_file: Option, + /// Whether to enable HTTP2. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "enableHttp2")] + pub enable_http2: Option, /// Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. /// It requires Prometheus >= v2.25.0. #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs b/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs index c44a4a5aa..72cd5ecfe 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayclusters.rs @@ -6141,14 +6141,14 @@ pub struct RayClusterWorkerGroupSpecsTemplateSpecVolumesVsphereVolume { pub struct RayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPUs")] - pub desired_cp_us: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPUs")] - pub desired_gp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] pub desired_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPUs")] - pub desired_tp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs b/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs index b69488f90..243d6b52a 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayjobs.rs @@ -28,8 +28,6 @@ pub struct RayJobSpec { pub metadata: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayClusterSpec")] pub ray_cluster_spec: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnvYAML")] pub runtime_env_yaml: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "shutdownAfterJobFinishes")] @@ -9054,14 +9052,14 @@ pub struct RayJobStatus { pub struct RayJobStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPUs")] - pub desired_cp_us: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPUs")] - pub desired_gp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] pub desired_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPUs")] - pub desired_tp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs b/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs index 2a969ba13..f468c33ec 100644 --- a/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs +++ b/kube-custom-resources-rs/src/ray_io/v1/rayservices.rs @@ -17,8 +17,6 @@ pub struct RayServiceSpec { pub deployment_unhealthy_second_threshold: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayClusterConfig")] pub ray_cluster_config: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveConfig")] - pub serve_config: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveConfigV2")] pub serve_config_v2: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveService")] @@ -6153,61 +6151,6 @@ pub struct RayServiceRayClusterConfigWorkerGroupSpecsTemplateSpecVolumesVsphereV pub volume_path: String, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfig { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub deployments: Option>, - #[serde(rename = "importPath")] - pub import_path: String, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub port: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfigDeployments { - #[serde(default, skip_serializing_if = "Option::is_none", rename = "autoscalingConfig")] - pub autoscaling_config: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gracefulShutdownTimeoutS")] - pub graceful_shutdown_timeout_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gracefulShutdownWaitLoopS")] - pub graceful_shutdown_wait_loop_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckPeriodS")] - pub health_check_period_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckTimeoutS")] - pub health_check_timeout_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentQueries")] - pub max_concurrent_queries: Option, - pub name: String, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numReplicas")] - pub num_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayActorOptions")] - pub ray_actor_options: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "routePrefix")] - pub route_prefix: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "userConfig")] - pub user_config: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfigDeploymentsRayActorOptions { - #[serde(default, skip_serializing_if = "Option::is_none", rename = "acceleratorType")] - pub accelerator_type: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numCpus")] - pub num_cpus: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numGpus")] - pub num_gpus: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectStoreMemory")] - pub object_store_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, -} - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct RayServiceServeService { #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] @@ -6417,14 +6360,14 @@ pub struct RayServiceStatusActiveServiceStatusDashboardStatus { pub struct RayServiceStatusActiveServiceStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPUs")] - pub desired_cp_us: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPUs")] - pub desired_gp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] pub desired_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPUs")] - pub desired_tp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6499,14 +6442,14 @@ pub struct RayServiceStatusPendingServiceStatusDashboardStatus { pub struct RayServiceStatusPendingServiceStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPUs")] - pub desired_cp_us: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPUs")] - pub desired_gp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] pub desired_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPUs")] - pub desired_tp_us: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayclusters.rs b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayclusters.rs index d5b5a6bc2..23e222fdf 100644 --- a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayclusters.rs +++ b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayclusters.rs @@ -23,6 +23,8 @@ pub struct RayClusterSpec { pub head_service_annotations: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayVersion")] pub ray_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suspend: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "workerGroupSpecs")] pub worker_group_specs: Option>, } @@ -6139,6 +6141,14 @@ pub struct RayClusterWorkerGroupSpecsTemplateSpecVolumesVsphereVolume { pub struct RayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] + pub desired_memory: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayjobs.rs b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayjobs.rs index e26e016e8..9e085faf4 100644 --- a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayjobs.rs +++ b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayjobs.rs @@ -28,8 +28,6 @@ pub struct RayJobSpec { pub metadata: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayClusterSpec")] pub ray_cluster_spec: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnvYAML")] pub runtime_env_yaml: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "shutdownAfterJobFinishes")] @@ -54,6 +52,8 @@ pub struct RayJobRayClusterSpec { pub head_service_annotations: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayVersion")] pub ray_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suspend: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "workerGroupSpecs")] pub worker_group_specs: Option>, } @@ -9052,6 +9052,14 @@ pub struct RayJobStatus { pub struct RayJobStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] + pub desired_memory: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayservices.rs b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayservices.rs index 26f131ebb..954a8bd87 100644 --- a/kube-custom-resources-rs/src/ray_io/v1alpha1/rayservices.rs +++ b/kube-custom-resources-rs/src/ray_io/v1alpha1/rayservices.rs @@ -17,8 +17,6 @@ pub struct RayServiceSpec { pub deployment_unhealthy_second_threshold: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayClusterConfig")] pub ray_cluster_config: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveConfig")] - pub serve_config: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveConfigV2")] pub serve_config_v2: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serveService")] @@ -39,6 +37,8 @@ pub struct RayServiceRayClusterConfig { pub head_service_annotations: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayVersion")] pub ray_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub suspend: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "workerGroupSpecs")] pub worker_group_specs: Option>, } @@ -6151,61 +6151,6 @@ pub struct RayServiceRayClusterConfigWorkerGroupSpecsTemplateSpecVolumesVsphereV pub volume_path: String, } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfig { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub deployments: Option>, - #[serde(rename = "importPath")] - pub import_path: String, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub port: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfigDeployments { - #[serde(default, skip_serializing_if = "Option::is_none", rename = "autoscalingConfig")] - pub autoscaling_config: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gracefulShutdownTimeoutS")] - pub graceful_shutdown_timeout_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "gracefulShutdownWaitLoopS")] - pub graceful_shutdown_wait_loop_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckPeriodS")] - pub health_check_period_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckTimeoutS")] - pub health_check_timeout_s: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentQueries")] - pub max_concurrent_queries: Option, - pub name: String, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numReplicas")] - pub num_replicas: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "rayActorOptions")] - pub ray_actor_options: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "routePrefix")] - pub route_prefix: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "userConfig")] - pub user_config: Option, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RayServiceServeConfigDeploymentsRayActorOptions { - #[serde(default, skip_serializing_if = "Option::is_none", rename = "acceleratorType")] - pub accelerator_type: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numCpus")] - pub num_cpus: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "numGpus")] - pub num_gpus: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectStoreMemory")] - pub object_store_memory: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub resources: Option, - #[serde(default, skip_serializing_if = "Option::is_none", rename = "runtimeEnv")] - pub runtime_env: Option, -} - #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct RayServiceServeService { #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] @@ -6415,6 +6360,14 @@ pub struct RayServiceStatusActiveServiceStatusDashboardStatus { pub struct RayServiceStatusActiveServiceStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] + pub desired_memory: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -6489,6 +6442,14 @@ pub struct RayServiceStatusPendingServiceStatusDashboardStatus { pub struct RayServiceStatusPendingServiceStatusRayClusterStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableWorkerReplicas")] pub available_worker_replicas: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredCPU")] + pub desired_cpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredGPU")] + pub desired_gpu: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredMemory")] + pub desired_memory: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredTPU")] + pub desired_tpu: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredWorkerReplicas")] pub desired_worker_replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/rbacmanager_reactiveops_io/v1beta1/rbacdefinitions.rs b/kube-custom-resources-rs/src/rbacmanager_reactiveops_io/v1beta1/rbacdefinitions.rs index edcfc8970..8d0d89c16 100644 --- a/kube-custom-resources-rs/src/rbacmanager_reactiveops_io/v1beta1/rbacdefinitions.rs +++ b/kube-custom-resources-rs/src/rbacmanager_reactiveops_io/v1beta1/rbacdefinitions.rs @@ -2,7 +2,7 @@ // kopium command: kopium --docs --filename=./crd-catalog/FairwindsOps/rbac-manager/rbacmanager.reactiveops.io/v1beta1/rbacdefinitions.yaml --derive=PartialEq // kopium version: 0.16.2 - +use kube::CustomResource; use serde::{Serialize, Deserialize}; use std::collections::BTreeMap;