From e8eb3256de9f023d01ade909fe8eab45548a652e Mon Sep 17 00:00:00 2001 From: Atanas Dinov Date: Tue, 23 Jul 2024 14:27:19 +0300 Subject: [PATCH] Upgrade CDI (#137) * Upgrade CDI images Signed-off-by: Atanas Dinov * make charts Signed-off-by: Atanas Dinov * make html Signed-off-by: Atanas Dinov --------- Signed-off-by: Atanas Dinov --- assets/cdi/cdi-0.2.4.tgz | Bin 0 -> 28125 bytes charts/cdi/0.2.4/.helmignore | 23 + charts/cdi/0.2.4/Chart.yaml | 7 + charts/cdi/0.2.4/crds/cdi.yaml | 4498 +++++++++++++++++ charts/cdi/0.2.4/templates/NOTES.txt | 2 + charts/cdi/0.2.4/templates/_helpers.tpl | 62 + charts/cdi/0.2.4/templates/_hooks.tpl | 47 + charts/cdi/0.2.4/templates/cdi-operator.yaml | 590 +++ .../0.2.4/templates/cdi-uninstall-hooks.yaml | 69 + charts/cdi/0.2.4/templates/cdi.yaml | 21 + .../0.2.4/templates/crd-uninstall-hooks.yaml | 55 + .../0.2.4/templates/crd-upgrade-hooks.yaml | 80 + .../cdi/0.2.4/templates/namespace-hooks.yaml | 56 + charts/cdi/0.2.4/values.yaml | 38 + index.html | 4 +- index.yaml | 11 + packages/cdi/charts/Chart.yaml | 2 +- packages/cdi/charts/values.yaml | 2 +- packages/cdi/package.yaml | 2 +- 19 files changed, 5564 insertions(+), 5 deletions(-) create mode 100644 assets/cdi/cdi-0.2.4.tgz create mode 100644 charts/cdi/0.2.4/.helmignore create mode 100644 charts/cdi/0.2.4/Chart.yaml create mode 100644 charts/cdi/0.2.4/crds/cdi.yaml create mode 100644 charts/cdi/0.2.4/templates/NOTES.txt create mode 100644 charts/cdi/0.2.4/templates/_helpers.tpl create mode 100644 charts/cdi/0.2.4/templates/_hooks.tpl create mode 100644 charts/cdi/0.2.4/templates/cdi-operator.yaml create mode 100644 charts/cdi/0.2.4/templates/cdi-uninstall-hooks.yaml create mode 100644 charts/cdi/0.2.4/templates/cdi.yaml create mode 100644 charts/cdi/0.2.4/templates/crd-uninstall-hooks.yaml create mode 100644 charts/cdi/0.2.4/templates/crd-upgrade-hooks.yaml create mode 100644 charts/cdi/0.2.4/templates/namespace-hooks.yaml create mode 100644 charts/cdi/0.2.4/values.yaml diff --git a/assets/cdi/cdi-0.2.4.tgz b/assets/cdi/cdi-0.2.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e0a9124900e2413841d14ecde9a56320b1ce7b01 GIT binary patch literal 28125 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:@: + of the import proxy for HTTP requests. Empty means unset + and will not result in the import pod env var. + type: string + HTTPSProxy: + description: HTTPSProxy is the URL https://:@: + of the import proxy for HTTPS requests. Empty means unset + and will not result in the import pod env var. + type: string + noProxy: + description: NoProxy is a comma-separated list of hostnames + and/or CIDRs for which the proxy should not be used. Empty + means unset and will not result in the import pod env var. + type: string + trustedCAProxy: + description: "TrustedCAProxy is the name of a ConfigMap in + the cdi namespace that contains a user-provided trusted + certificate authority (CA) bundle. The TrustedCAProxy ConfigMap + is consumed by the DataImportCron controller for creating + cronjobs, and by the import controller referring a copy + of the ConfigMap in the import namespace. Here is an example + of the ConfigMap (in yaml): \n apiVersion: v1 kind: ConfigMap + metadata: name: my-ca-proxy-cm namespace: cdi data: ca.pem: + | -----BEGIN CERTIFICATE----- ... + ... -----END CERTIFICATE-----" + type: string + type: object + insecureRegistries: + description: InsecureRegistries is a list of TLS disabled registries + items: + type: string + type: array + logVerbosity: + description: LogVerbosity overrides the default verbosity level + used to initialize loggers + format: int32 + type: integer + podResourceRequirements: + description: ResourceRequirements describes the compute resource + requirements. + properties: + claims: + description: "Claims lists the names of resources, defined + in spec.resourceClaims, that are used by this container. + \n This is an alpha field and requires enabling the DynamicResourceAllocation + feature gate. \n This field is immutable." + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: Name must match the name of one entry in + pod.spec.resourceClaims of the Pod where this field + is used. It makes that resource available inside a + container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + 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 + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + 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 + 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 + preallocation: + description: Preallocation controls whether storage for DataVolumes + should be allocated in advance. + type: boolean + scratchSpaceStorageClass: + description: 'Override the storage class to used for scratch space + during transfer operations. The scratch space storage class + is determined in the following order: 1. value of scratchSpaceStorageClass, + if that doesn''t exist, use the default storage class, if there + is no default storage class, use the storage class of the DataVolume, + if no storage class specified, use no storage class for scratch + space' + type: string + tlsSecurityProfile: + description: TLSSecurityProfile is used by operators to apply + cluster-wide TLS security settings to operands. + properties: + custom: + description: "custom is a user-defined TLS security profile. + Be extremely careful using a custom profile as invalid configurations + can be catastrophic. An example custom profile looks like + this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 + minTLSVersion: TLSv1.1" + nullable: true + properties: + ciphers: + description: "ciphers is used to specify the cipher algorithms + that are negotiated during the TLS handshake. Operators + may remove entries their operands do not support. For + example, to use DES-CBC3-SHA (yaml): \n ciphers: - + DES-CBC3-SHA" + items: + type: string + type: array + minTLSVersion: + description: "minTLSVersion is used to specify the minimal + version of the TLS protocol that is negotiated during + the TLS handshake. For example, to use TLS versions + 1.1, 1.2 and 1.3 (yaml): \n minTLSVersion: TLSv1.1 \n + NOTE: currently the highest minTLSVersion allowed is + VersionTLS12" + enum: + - VersionTLS10 + - VersionTLS11 + - VersionTLS12 + - VersionTLS13 + type: string + type: object + intermediate: + description: "intermediate is a TLS security profile based + on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 + - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 + - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 + minTLSVersion: TLSv1.2" + nullable: true + type: object + modern: + description: "modern is a TLS security profile based on: \n + https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported." + nullable: true + type: object + old: + description: "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 + - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 + - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 + - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 + - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA + - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - + ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 + - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 + - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA + - DES-CBC3-SHA minTLSVersion: TLSv1.0" + nullable: true + type: object + type: + description: "type is one of Old, Intermediate, Modern or + Custom. Custom provides the ability to specify individual + TLS security profile parameters. Old, Intermediate and Modern + are TLS security profiles based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations + \n The profiles are intent based, so they may change over + time as new ciphers are developed and existing ciphers are + found to be insecure. Depending on precisely which ciphers + are available to a process, the list may be reduced. \n + Note that the Modern profile is currently not supported + because it is not yet well adopted by common software libraries." + enum: + - Old + - Intermediate + - Modern + - Custom + type: string + type: object + uploadProxyURLOverride: + description: Override the URL used when uploading to a DataVolume + type: string + type: object + imagePullPolicy: + description: PullPolicy describes a policy for if/when to pull a container + image + enum: + - Always + - IfNotPresent + - Never + type: string + infra: + description: Rules on which nodes CDI infrastructure pods will be + scheduled + properties: + affinity: + description: affinity enables pod affinity/anti-affinity placement + expanding the types of constraints that can be expressed with + nodeSelector. affinity is going to be applied to the relevant + kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects + (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from + its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them are + ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to a pod label update), + the system may or may not try to eventually evict the + pod from its node. When there are multiple elements, + the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node that + violates one or more of the expressions. The node that + is most preferred is the one with the greatest sum of + weights, i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + anti-affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the pod + will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod + label update), the system may or may not try to eventually + evict the pod from its node. When there are multiple + elements, the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: 'nodeSelector is the node selector applied to the + relevant kind of pods It specifies a map of key-value pairs: + for the pod to be eligible to run on a node, the node must have + each of the indicated key-value pairs as labels (it can have + additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector' + type: object + tolerations: + description: tolerations is a list of tolerations applied to the + relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + for more info. These are additional tolerations other than default + ones. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, allowed + values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match + all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to + the value. Valid operators are Exists and Equal. Defaults + to Equal. Exists is equivalent to wildcard for value, + so that a pod can tolerate all taints of a particular + category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the taint + forever (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + type: object + priorityClass: + description: PriorityClass of the CDI control plane + type: string + uninstallStrategy: + description: CDIUninstallStrategy defines the state to leave CDI on + uninstall + enum: + - RemoveWorkloads + - BlockUninstallIfWorkloadsExist + type: string + workload: + description: Restrict on which nodes CDI workload pods will be scheduled + properties: + affinity: + description: affinity enables pod affinity/anti-affinity placement + expanding the types of constraints that can be expressed with + nodeSelector. affinity is going to be applied to the relevant + kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects + (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from + its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them are + ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to a pod label update), + the system may or may not try to eventually evict the + pod from its node. When there are multiple elements, + the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node that + violates one or more of the expressions. The node that + is most preferred is the one with the greatest sum of + weights, i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + anti-affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the pod + will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod + label update), the system may or may not try to eventually + evict the pod from its node. When there are multiple + elements, the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: 'nodeSelector is the node selector applied to the + relevant kind of pods It specifies a map of key-value pairs: + for the pod to be eligible to run on a node, the node must have + each of the indicated key-value pairs as labels (it can have + additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector' + type: object + tolerations: + description: tolerations is a list of tolerations applied to the + relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + for more info. These are additional tolerations other than default + ones. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, allowed + values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match + all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to + the value. Valid operators are Exists and Equal. Defaults + to Equal. Exists is equivalent to wildcard for value, + so that a pod can tolerate all taints of a particular + category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the taint + forever (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + type: object + type: object + status: + description: CDIStatus defines the status of the installation + properties: + conditions: + description: A list of current conditions of the resource + items: + description: Condition represents the state of the operator's reconciliation + functionality. + properties: + lastHeartbeatTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + description: ConditionType is the state of the operator's reconciliation + functionality. + type: string + required: + - status + - type + type: object + type: array + observedVersion: + description: The observed version of the resource + type: string + operatorVersion: + description: The version of the resource as defined by the operator + type: string + phase: + description: Phase is the current phase of the deployment + type: string + targetVersion: + description: The desired version of the resource + type: string + type: object + required: + - spec + type: object + served: true + storage: false + subresources: {} + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + - jsonPath: .status.phase + name: Phase + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: CDI is the CDI Operator CRD + 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: CDISpec defines our specification for the CDI installation + properties: + certConfig: + description: certificate configuration + properties: + ca: + description: CA configuration CA certs are kept in the CA bundle + as long as they are valid + properties: + duration: + description: The requested 'duration' (i.e. lifetime) of the + Certificate. + type: string + renewBefore: + description: The amount of time before the currently issued + certificate's `notAfter` time that we will begin to attempt + to renew the certificate. + type: string + type: object + server: + description: Server configuration Certs are rotated and discarded + properties: + duration: + description: The requested 'duration' (i.e. lifetime) of the + Certificate. + type: string + renewBefore: + description: The amount of time before the currently issued + certificate's `notAfter` time that we will begin to attempt + to renew the certificate. + type: string + type: object + type: object + cloneStrategyOverride: + description: 'Clone strategy override: should we use a host-assisted + copy even if snapshots are available?' + enum: + - copy + - snapshot + - csi-clone + type: string + config: + description: CDIConfig at CDI level + properties: + dataVolumeTTLSeconds: + description: DataVolumeTTLSeconds is the time in seconds after + DataVolume completion it can be garbage collected. Disabled + by default. + format: int32 + type: integer + featureGates: + description: FeatureGates are a list of specific enabled feature + gates + items: + type: string + type: array + filesystemOverhead: + description: FilesystemOverhead describes the space reserved for + overhead when using Filesystem volumes. A value is between 0 + and 1, if not defined it is 0.055 (5.5% overhead) + properties: + global: + description: Global is how much space of a Filesystem volume + should be reserved for overhead. This value is used unless + overridden by a more specific value (per storageClass) + pattern: ^(0(?:\.\d{1,3})?|1)$ + type: string + storageClass: + additionalProperties: + description: 'Percent is a string that can only be a value + between [0,1) (Note: we actually rely on reconcile to + reject invalid values)' + pattern: ^(0(?:\.\d{1,3})?|1)$ + type: string + description: StorageClass specifies how much space of a Filesystem + volume should be reserved for safety. The keys are the storageClass + and the values are the overhead. This value overrides the + global value + type: object + type: object + imagePullSecrets: + description: The imagePullSecrets used to pull the container images + items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + importProxy: + description: ImportProxy contains importer pod proxy configuration. + properties: + HTTPProxy: + description: HTTPProxy is the URL http://:@: + of the import proxy for HTTP requests. Empty means unset + and will not result in the import pod env var. + type: string + HTTPSProxy: + description: HTTPSProxy is the URL https://:@: + of the import proxy for HTTPS requests. Empty means unset + and will not result in the import pod env var. + type: string + noProxy: + description: NoProxy is a comma-separated list of hostnames + and/or CIDRs for which the proxy should not be used. Empty + means unset and will not result in the import pod env var. + type: string + trustedCAProxy: + description: "TrustedCAProxy is the name of a ConfigMap in + the cdi namespace that contains a user-provided trusted + certificate authority (CA) bundle. The TrustedCAProxy ConfigMap + is consumed by the DataImportCron controller for creating + cronjobs, and by the import controller referring a copy + of the ConfigMap in the import namespace. Here is an example + of the ConfigMap (in yaml): \n apiVersion: v1 kind: ConfigMap + metadata: name: my-ca-proxy-cm namespace: cdi data: ca.pem: + | -----BEGIN CERTIFICATE----- ... + ... -----END CERTIFICATE-----" + type: string + type: object + insecureRegistries: + description: InsecureRegistries is a list of TLS disabled registries + items: + type: string + type: array + logVerbosity: + description: LogVerbosity overrides the default verbosity level + used to initialize loggers + format: int32 + type: integer + podResourceRequirements: + description: ResourceRequirements describes the compute resource + requirements. + properties: + claims: + description: "Claims lists the names of resources, defined + in spec.resourceClaims, that are used by this container. + \n This is an alpha field and requires enabling the DynamicResourceAllocation + feature gate. \n This field is immutable." + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: Name must match the name of one entry in + pod.spec.resourceClaims of the Pod where this field + is used. It makes that resource available inside a + container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + 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 + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + 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 + 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 + preallocation: + description: Preallocation controls whether storage for DataVolumes + should be allocated in advance. + type: boolean + scratchSpaceStorageClass: + description: 'Override the storage class to used for scratch space + during transfer operations. The scratch space storage class + is determined in the following order: 1. value of scratchSpaceStorageClass, + if that doesn''t exist, use the default storage class, if there + is no default storage class, use the storage class of the DataVolume, + if no storage class specified, use no storage class for scratch + space' + type: string + tlsSecurityProfile: + description: TLSSecurityProfile is used by operators to apply + cluster-wide TLS security settings to operands. + properties: + custom: + description: "custom is a user-defined TLS security profile. + Be extremely careful using a custom profile as invalid configurations + can be catastrophic. An example custom profile looks like + this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 + minTLSVersion: TLSv1.1" + nullable: true + properties: + ciphers: + description: "ciphers is used to specify the cipher algorithms + that are negotiated during the TLS handshake. Operators + may remove entries their operands do not support. For + example, to use DES-CBC3-SHA (yaml): \n ciphers: - + DES-CBC3-SHA" + items: + type: string + type: array + minTLSVersion: + description: "minTLSVersion is used to specify the minimal + version of the TLS protocol that is negotiated during + the TLS handshake. For example, to use TLS versions + 1.1, 1.2 and 1.3 (yaml): \n minTLSVersion: TLSv1.1 \n + NOTE: currently the highest minTLSVersion allowed is + VersionTLS12" + enum: + - VersionTLS10 + - VersionTLS11 + - VersionTLS12 + - VersionTLS13 + type: string + type: object + intermediate: + description: "intermediate is a TLS security profile based + on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 + - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 + - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 + minTLSVersion: TLSv1.2" + nullable: true + type: object + modern: + description: "modern is a TLS security profile based on: \n + https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported." + nullable: true + type: object + old: + description: "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility + \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 + - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 + - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 + - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 + - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 + - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 + - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA + - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - + ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 + - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 + - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA + - DES-CBC3-SHA minTLSVersion: TLSv1.0" + nullable: true + type: object + type: + description: "type is one of Old, Intermediate, Modern or + Custom. Custom provides the ability to specify individual + TLS security profile parameters. Old, Intermediate and Modern + are TLS security profiles based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations + \n The profiles are intent based, so they may change over + time as new ciphers are developed and existing ciphers are + found to be insecure. Depending on precisely which ciphers + are available to a process, the list may be reduced. \n + Note that the Modern profile is currently not supported + because it is not yet well adopted by common software libraries." + enum: + - Old + - Intermediate + - Modern + - Custom + type: string + type: object + uploadProxyURLOverride: + description: Override the URL used when uploading to a DataVolume + type: string + type: object + imagePullPolicy: + description: PullPolicy describes a policy for if/when to pull a container + image + enum: + - Always + - IfNotPresent + - Never + type: string + infra: + description: Rules on which nodes CDI infrastructure pods will be + scheduled + properties: + affinity: + description: affinity enables pod affinity/anti-affinity placement + expanding the types of constraints that can be expressed with + nodeSelector. affinity is going to be applied to the relevant + kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects + (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from + its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them are + ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to a pod label update), + the system may or may not try to eventually evict the + pod from its node. When there are multiple elements, + the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node that + violates one or more of the expressions. The node that + is most preferred is the one with the greatest sum of + weights, i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + anti-affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the pod + will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod + label update), the system may or may not try to eventually + evict the pod from its node. When there are multiple + elements, the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: 'nodeSelector is the node selector applied to the + relevant kind of pods It specifies a map of key-value pairs: + for the pod to be eligible to run on a node, the node must have + each of the indicated key-value pairs as labels (it can have + additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector' + type: object + tolerations: + description: tolerations is a list of tolerations applied to the + relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + for more info. These are additional tolerations other than default + ones. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, allowed + values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match + all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to + the value. Valid operators are Exists and Equal. Defaults + to Equal. Exists is equivalent to wildcard for value, + so that a pod can tolerate all taints of a particular + category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the taint + forever (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + type: object + priorityClass: + description: PriorityClass of the CDI control plane + type: string + uninstallStrategy: + description: CDIUninstallStrategy defines the state to leave CDI on + uninstall + enum: + - RemoveWorkloads + - BlockUninstallIfWorkloadsExist + type: string + workload: + description: Restrict on which nodes CDI workload pods will be scheduled + properties: + affinity: + description: affinity enables pod affinity/anti-affinity placement + expanding the types of constraints that can be expressed with + nodeSelector. affinity is going to be applied to the relevant + kind of pods in parallel with nodeSelector See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a no-op). + A null preferred scheduling term matches no objects + (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from + its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them are + ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement is + a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. If the + operator is Gt or Lt, the values array + must have a single element, which will + be interpreted as an integer. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified by + this field are not met at scheduling time, the pod will + not be scheduled onto the node. If the affinity requirements + specified by this field cease to be met at some point + during pod execution (e.g. due to a pod label update), + the system may or may not try to eventually evict the + pod from its node. When there are multiple elements, + the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node that + violates one or more of the expressions. The node that + is most preferred is the one with the greatest sum of + weights, i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + anti-affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum are + the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. + The term is applied to the union of the namespaces + listed in this field and the ones selected + by namespaceSelector. null or empty namespaces + list and null namespaceSelector means "this + pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the pod + will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod + label update), the system may or may not try to eventually + evict the pod from its node. When there are multiple + elements, the lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + 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. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-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: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: A label selector requirement + is a selector that contains values, a key, + and an operator that relates the key and + values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. + type: string + values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: 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. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: namespaces specifies a static list + of namespace names that the term applies to. The + term is applied to the union of the namespaces + listed in this field and the ones selected by + namespaceSelector. null or empty namespaces list + and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified namespaces, + where co-located is defined as running on a node + whose value of the label with key topologyKey + matches that of any node on which any of the selected + pods is running. Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: 'nodeSelector is the node selector applied to the + relevant kind of pods It specifies a map of key-value pairs: + for the pod to be eligible to run on a node, the node must have + each of the indicated key-value pairs as labels (it can have + additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector' + type: object + tolerations: + description: tolerations is a list of tolerations applied to the + relevant kind of pods See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + for more info. These are additional tolerations other than default + ones. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, allowed + values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match + all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to + the value. Valid operators are Exists and Equal. Defaults + to Equal. Exists is equivalent to wildcard for value, + so that a pod can tolerate all taints of a particular + category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the taint + forever (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + type: object + type: object + status: + description: CDIStatus defines the status of the installation + properties: + conditions: + description: A list of current conditions of the resource + items: + description: Condition represents the state of the operator's reconciliation + functionality. + properties: + lastHeartbeatTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + description: ConditionType is the state of the operator's reconciliation + functionality. + type: string + required: + - status + - type + type: object + type: array + observedVersion: + description: The observed version of the resource + type: string + operatorVersion: + description: The version of the resource as defined by the operator + type: string + phase: + description: Phase is the current phase of the deployment + type: string + targetVersion: + description: The desired version of the resource + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {} diff --git a/charts/cdi/0.2.4/templates/NOTES.txt b/charts/cdi/0.2.4/templates/NOTES.txt new file mode 100644 index 00000000..9e79f627 --- /dev/null +++ b/charts/cdi/0.2.4/templates/NOTES.txt @@ -0,0 +1,2 @@ +Verify that all CDI components are installed correctly: + kubectl get all -n {{ .Release.Namespace }} diff --git a/charts/cdi/0.2.4/templates/_helpers.tpl b/charts/cdi/0.2.4/templates/_helpers.tpl new file mode 100644 index 00000000..6fa59949 --- /dev/null +++ b/charts/cdi/0.2.4/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "cdi.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "cdi.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "cdi.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "cdi.labels" -}} +helm.sh/chart: {{ include "cdi.chart" . }} +{{ include "cdi.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "cdi.selectorLabels" -}} +app.kubernetes.io/name: {{ include "cdi.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "cdi.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "cdi.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/cdi/0.2.4/templates/_hooks.tpl b/charts/cdi/0.2.4/templates/_hooks.tpl new file mode 100644 index 00000000..96499504 --- /dev/null +++ b/charts/cdi/0.2.4/templates/_hooks.tpl @@ -0,0 +1,47 @@ +{{/* Hook annotations */}} +{{- define "cdi.hook.annotations" -}} + annotations: + "helm.sh/hook": {{ .hookType }} + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + "helm.sh/hook-weight": {{ .hookWeight | quote }} +{{- end -}} + +{{/* Namespace modifying hook annotations */}} +{{- define "cdi.namespaceHook.annotations" -}} +{{ template "cdi.hook.annotations" merge (dict "hookType" "pre-install") . }} +{{- end -}} + +{{/* CRD upgrading hook annotations */}} +{{- define "cdi.crdUpgradeHook.annotations" -}} +{{ template "cdi.hook.annotations" merge (dict "hookType" "pre-upgrade") . }} +{{- end -}} + +{{/* Custom resource uninstalling hook annotations */}} +{{- define "cdi.crUninstallHook.annotations" -}} +{{ template "cdi.hook.annotations" merge (dict "hookType" "pre-delete") . }} +{{- end -}} + +{{/* CRD uninstalling hook annotations */}} +{{- define "cdi.crdUninstallHook.annotations" -}} +{{ template "cdi.hook.annotations" merge (dict "hookType" "post-delete") . }} +{{- end -}} + +{{/* Namespace modifying hook name */}} +{{- define "cdi.namespaceHook.name" -}} +{{ include "cdi.fullname" . }}-namespace-modify +{{- end }} + +{{/* CRD upgrading hook name */}} +{{- define "cdi.crdUpgradeHook.name" -}} +{{ include "cdi.fullname" . }}-crd-upgrade +{{- end }} + +{{/* Custom resource uninstalling hook name */}} +{{- define "cdi.crUninstallHook.name" -}} +{{ include "cdi.fullname" . }}-uninstall +{{- end }} + +{{/* CRD uninstalling hook name */}} +{{- define "cdi.crdUninstallHook.name" -}} +{{ include "cdi.fullname" . }}-crd-uninstall +{{- end }} diff --git a/charts/cdi/0.2.4/templates/cdi-operator.yaml b/charts/cdi/0.2.4/templates/cdi-operator.yaml new file mode 100644 index 00000000..caa8fcae --- /dev/null +++ b/charts/cdi/0.2.4/templates/cdi-operator.yaml @@ -0,0 +1,590 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + operator.cdi.kubevirt.io: "" + name: cdi-operator-cluster +rules: + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - clusterroles + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + verbs: + - get + - list + - watch + - update + - create + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + - customresourcedefinitions/status + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - cdi.kubevirt.io + - upload.cdi.kubevirt.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + - mutatingwebhookconfigurations + verbs: + - create + - list + - watch + - apiGroups: + - admissionregistration.k8s.io + resourceNames: + - cdi-api-dataimportcron-validate + - cdi-api-populator-validate + - cdi-api-datavolume-validate + - cdi-api-validate + - objecttransfer-api-validate + resources: + - validatingwebhookconfigurations + verbs: + - get + - update + - delete + - apiGroups: + - admissionregistration.k8s.io + resourceNames: + - cdi-api-datavolume-mutate + resources: + - mutatingwebhookconfigurations + verbs: + - get + - update + - delete + - apiGroups: + - apiregistration.k8s.io + resources: + - apiservices + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - apiGroups: + - cdi.kubevirt.io + resources: + - datavolumes + verbs: + - list + - get + - apiGroups: + - cdi.kubevirt.io + resources: + - datasources + verbs: + - get + - apiGroups: + - cdi.kubevirt.io + resources: + - cdis + verbs: + - get + - apiGroups: + - cdi.kubevirt.io + resources: + - cdis/finalizers + verbs: + - update + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - create + - update + - delete + - deletecollection + - patch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims/finalizers + - pods/finalizers + verbs: + - update + - apiGroups: + - "" + resources: + - pods + - services + verbs: + - get + - list + - watch + - create + - delete + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - create + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + - csidrivers + verbs: + - get + - list + - watch + - apiGroups: + - config.openshift.io + resources: + - proxies + verbs: + - get + - list + - watch + - apiGroups: + - cdi.kubevirt.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + - volumesnapshotclasses + - volumesnapshotcontents + verbs: + - get + - list + - watch + - create + - delete + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - update + - deletecollection + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - get + - list + - watch + - apiGroups: + - scheduling.k8s.io + resources: + - priorityclasses + verbs: + - get + - list + - watch + - apiGroups: + - image.openshift.io + resources: + - imagestreams + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - apiGroups: + - kubevirt.io + resources: + - virtualmachines/finalizers + verbs: + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - apiGroups: + - cdi.kubevirt.io + resources: + - dataimportcrons + verbs: + - get + - list + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + operator.cdi.kubevirt.io: "" + name: cdi-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cdi-operator-cluster +subjects: + - kind: ServiceAccount + name: cdi-operator + namespace: {{ .Release.Namespace }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + operator.cdi.kubevirt.io: "" + name: cdi-operator + namespace: {{ .Release.Namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + app.kubernetes.io/component: storage + app.kubernetes.io/managed-by: cdi-operator + cdi.kubevirt.io: "" + name: cdi-operator + namespace: {{ .Release.Namespace }} +rules: + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - "" + resources: + - serviceaccounts + - configmaps + - events + - secrets + - services + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - apps + resources: + - deployments + - deployments/finalizers + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - route.openshift.io + resources: + - routes + - routes/custom-host + verbs: + - get + - list + - watch + - create + - update + - apiGroups: + - config.openshift.io + resources: + - proxies + verbs: + - get + - list + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + - prometheusrules + verbs: + - get + - list + - watch + - create + - delete + - update + - patch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update + - apiGroups: + - "" + resources: + - secrets + - configmaps + verbs: + - get + - list + - watch + - create + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - batch + resources: + - cronjobs + verbs: + - get + - list + - watch + - create + - update + - delete + - apiGroups: + - batch + resources: + - jobs + verbs: + - create + - delete + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - create + - update + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - route.openshift.io + resources: + - routes + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - apiGroups: + - "" + resources: + - services + - endpoints + - pods + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app.kubernetes.io/component: storage + app.kubernetes.io/managed-by: cdi-operator + cdi.kubevirt.io: "" + name: cdi-operator + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cdi-operator +subjects: + - kind: ServiceAccount + name: cdi-operator + namespace: {{ .Release.Namespace }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + name: cdi-operator + operator.cdi.kubevirt.io: "" + prometheus.cdi.kubevirt.io: "true" + name: cdi-operator + namespace: {{ .Release.Namespace }} +spec: + replicas: 1 + selector: + matchLabels: + name: cdi-operator + operator.cdi.kubevirt.io: "" + strategy: {} + template: + metadata: + labels: + name: cdi-operator + operator.cdi.kubevirt.io: "" + prometheus.cdi.kubevirt.io: "true" + spec: + containers: + - env: + - name: DEPLOY_CLUSTER_RESOURCES + value: "true" + - name: OPERATOR_VERSION + value: {{ .Values.deployment.version }} + - name: CONTROLLER_IMAGE + value: {{ .Values.deployment.controllerImage }}:{{ .Values.deployment.version }} + - name: IMPORTER_IMAGE + value: {{ .Values.deployment.importerImage }}:{{ .Values.deployment.version }} + - name: CLONER_IMAGE + value: {{ .Values.deployment.clonerImage }}:{{ .Values.deployment.version }} + - name: APISERVER_IMAGE + value: {{ .Values.deployment.apiserverImage }}:{{ .Values.deployment.version }} + - name: UPLOAD_SERVER_IMAGE + value: {{ .Values.deployment.uploadserverImage }}:{{ .Values.deployment.version }} + - name: UPLOAD_PROXY_IMAGE + value: {{ .Values.deployment.uploadproxyImage }}:{{ .Values.deployment.version }} + - name: VERBOSITY + value: "1" + - name: PULL_POLICY + value: {{ .Values.deployment.pullPolicy }} + - name: MONITORING_NAMESPACE + image: {{ .Values.deployment.operatorImage }}:{{ .Values.deployment.version }} + imagePullPolicy: {{ .Values.deployment.pullPolicy }} + name: cdi-operator + ports: + - containerPort: 8080 + name: metrics + protocol: TCP + resources: + requests: + cpu: 100m + memory: 150Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + nodeSelector: + kubernetes.io/os: linux + securityContext: + runAsNonRoot: true + serviceAccountName: cdi-operator + tolerations: + - key: CriticalAddonsOnly + operator: Exists diff --git a/charts/cdi/0.2.4/templates/cdi-uninstall-hooks.yaml b/charts/cdi/0.2.4/templates/cdi-uninstall-hooks.yaml new file mode 100644 index 00000000..181a8bc9 --- /dev/null +++ b/charts/cdi/0.2.4/templates/cdi-uninstall-hooks.yaml @@ -0,0 +1,69 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crUninstallHook.name" . }} + {{ template "cdi.crUninstallHook.annotations" (dict "hookWeight" 1) }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "cdi.crUninstallHook.name" . }} + {{ template "cdi.crUninstallHook.annotations" (dict "hookWeight" 1) }} +rules: + - apiGroups: [ "cdi.kubevirt.io" ] + resources: [ "cdis" ] + resourceNames: + - "cdi" + verbs: [ "delete" ] + - apiGroups: [ "apps" ] + resources: [ "deployments" ] + verbs: [ "get", "list" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "cdi.crUninstallHook.name" . }} + {{ template "cdi.crUninstallHook.annotations" (dict "hookWeight" 2) }} +subjects: + - kind: ServiceAccount + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crUninstallHook.name" . }} +roleRef: + kind: ClusterRole + name: {{ template "cdi.crUninstallHook.name" . }} + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crUninstallHook.name" . }} + {{ template "cdi.crUninstallHook.annotations" (dict "hookWeight" 3) }} +spec: + template: + metadata: + name: {{ template "cdi.crUninstallHook.name" . }} + spec: + serviceAccountName: {{ template "cdi.crUninstallHook.name" . }} + restartPolicy: {{ .Values.hookRestartPolicy }} + containers: + - name: {{ template "cdi.crUninstallHook.name" . }} + image: {{ .Values.hookImage }} + securityContext: + {{- toYaml .Values.hookSecurityContext | nindent 12 }} + args: + - delete + - cdi + - cdi + - name: {{ template "cdi.crUninstallHook.name" . }}-cleanup + image: {{ .Values.hookImage }} + securityContext: + {{- toYaml .Values.hookSecurityContext | nindent 12 }} + args: + - wait + - --for=delete + - deployments/cdi-apiserver + - deployments/cdi-deployment + - deployments/cdi-uploadproxy + - --timeout=60s diff --git a/charts/cdi/0.2.4/templates/cdi.yaml b/charts/cdi/0.2.4/templates/cdi.yaml new file mode 100644 index 00000000..d5a5aada --- /dev/null +++ b/charts/cdi/0.2.4/templates/cdi.yaml @@ -0,0 +1,21 @@ +apiVersion: cdi.kubevirt.io/v1beta1 +kind: CDI +metadata: + name: cdi +spec: + {{- with .Values.cdi.config }} + config: + {{- toYaml . | nindent 4 }} + {{- end }} + imagePullPolicy: {{ .Values.cdi.imagePullPolicy }} + {{- with .Values.cdi.infra }} + infra: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if .Values.cdi.uninstallStrategy }} + uninstallStrategy: {{ .Values.cdi.uninstallStrategy }} + {{- end }} + {{- with .Values.cdi.workload }} + workload: + {{- toYaml . | nindent 4 }} + {{- end }} diff --git a/charts/cdi/0.2.4/templates/crd-uninstall-hooks.yaml b/charts/cdi/0.2.4/templates/crd-uninstall-hooks.yaml new file mode 100644 index 00000000..e10ddbe2 --- /dev/null +++ b/charts/cdi/0.2.4/templates/crd-uninstall-hooks.yaml @@ -0,0 +1,55 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUninstallHook.name" . }} + {{ template "cdi.crdUninstallHook.annotations" (dict "hookWeight" 1) }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "cdi.crdUninstallHook.name" . }} + {{ template "cdi.crdUninstallHook.annotations" (dict "hookWeight" 1) }} +rules: + - apiGroups: [ "apiextensions.k8s.io" ] + resources: [ "customresourcedefinitions" ] + resourceNames: + - "cdis.cdi.kubevirt.io" + verbs: [ "delete" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "cdi.crdUninstallHook.name" . }} + {{ template "cdi.crdUninstallHook.annotations" (dict "hookWeight" 2) }} +subjects: + - kind: ServiceAccount + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUninstallHook.name" . }} +roleRef: + kind: ClusterRole + name: {{ template "cdi.crdUninstallHook.name" . }} + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUninstallHook.name" . }} + {{ template "cdi.crdUninstallHook.annotations" (dict "hookWeight" 3) }} +spec: + template: + metadata: + name: {{ template "cdi.crdUninstallHook.name" . }} + spec: + serviceAccountName: {{ template "cdi.crdUninstallHook.name" . }} + restartPolicy: {{ .Values.hookRestartPolicy }} + containers: + - name: {{ template "cdi.crdUninstallHook.name" . }} + image: {{ .Values.hookImage }} + args: + - delete + - customresourcedefinitions + - cdis.cdi.kubevirt.io + securityContext: + {{- toYaml .Values.hookSecurityContext | nindent 12 }} diff --git a/charts/cdi/0.2.4/templates/crd-upgrade-hooks.yaml b/charts/cdi/0.2.4/templates/crd-upgrade-hooks.yaml new file mode 100644 index 00000000..cf5fb4f4 --- /dev/null +++ b/charts/cdi/0.2.4/templates/crd-upgrade-hooks.yaml @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: {{ .Release.Namespace }} + name: cdi-crd-manifest + {{ template "cdi.crdUpgradeHook.annotations" (dict "hookWeight" 1) }} +data: + crd: |- + {{ $.Files.Get "crds/cdi.yaml" | nindent 4 }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUpgradeHook.name" . }} + {{ template "cdi.crdUpgradeHook.annotations" (dict "hookWeight" 2) }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "cdi.crdUpgradeHook.name" . }} + {{ template "cdi.crdUpgradeHook.annotations" (dict "hookWeight" 2) }} +rules: + - apiGroups: [ "" ] + resources: [ "configmaps" ] + resourceNames: + - "cdi-crd-manifest" + verbs: [ "get" ] + - apiGroups: [ "apiextensions.k8s.io" ] + resources: [ "customresourcedefinitions" ] + resourceNames: + - "cdis.cdi.kubevirt.io" + verbs: [ "get", "patch" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "cdi.crdUpgradeHook.name" . }} + {{ template "cdi.crdUpgradeHook.annotations" (dict "hookWeight" 3) }} +subjects: + - kind: ServiceAccount + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUpgradeHook.name" . }} +roleRef: + kind: ClusterRole + name: {{ template "cdi.crdUpgradeHook.name" . }} + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.crdUpgradeHook.name" . }} + {{ template "cdi.crdUpgradeHook.annotations" (dict "hookWeight" 4) }} +spec: + template: + metadata: + name: {{ template "cdi.crdUpgradeHook.name" . }} + spec: + serviceAccountName: {{ template "cdi.crdUpgradeHook.name" . }} + restartPolicy: {{ .Values.hookRestartPolicy }} + containers: + - name: {{ template "cdi.crdUpgradeHook.name" . }} + image: {{ .Values.hookImage }} + args: + - apply + - -f + - /etc/manifests/crd.yaml + securityContext: + {{- toYaml .Values.hookSecurityContext | nindent 12 }} + volumeMounts: + - name: crd-volume + mountPath: /etc/manifests + volumes: + - name: crd-volume + configMap: + name: cdi-crd-manifest + items: + - key: crd + path: crd.yaml diff --git a/charts/cdi/0.2.4/templates/namespace-hooks.yaml b/charts/cdi/0.2.4/templates/namespace-hooks.yaml new file mode 100644 index 00000000..62867085 --- /dev/null +++ b/charts/cdi/0.2.4/templates/namespace-hooks.yaml @@ -0,0 +1,56 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.namespaceHook.name" . }} + {{ template "cdi.namespaceHook.annotations" (dict "hookWeight" 1) }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "cdi.namespaceHook.name" . }} + {{ template "cdi.namespaceHook.annotations" (dict "hookWeight" 1) }} +rules: + - apiGroups: [ "" ] + resources: [ "namespaces" ] + resourceNames: + - {{ .Release.Namespace | quote }} + verbs: [ "get", "patch" ] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "cdi.namespaceHook.name" . }} + {{ template "cdi.namespaceHook.annotations" (dict "hookWeight" 2) }} +subjects: + - kind: ServiceAccount + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.namespaceHook.name" . }} +roleRef: + kind: ClusterRole + name: {{ template "cdi.namespaceHook.name" . }} + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: {{ .Release.Namespace }} + name: {{ template "cdi.namespaceHook.name" . }} + {{ template "cdi.namespaceHook.annotations" (dict "hookWeight" 3) }} +spec: + template: + metadata: + name: {{ template "cdi.namespaceHook.name" . }} + spec: + serviceAccountName: {{ template "cdi.namespaceHook.name" . }} + restartPolicy: {{ .Values.hookRestartPolicy }} + containers: + - name: {{ template "cdi.namespaceHook.name" . }} + securityContext: + {{- toYaml .Values.hookSecurityContext | nindent 12 }} + image: {{ .Values.hookImage }} + args: + - label + - namespace + - {{ .Release.Namespace }} + - cdi.kubevirt.io= diff --git a/charts/cdi/0.2.4/values.yaml b/charts/cdi/0.2.4/values.yaml new file mode 100644 index 00000000..52b507d7 --- /dev/null +++ b/charts/cdi/0.2.4/values.yaml @@ -0,0 +1,38 @@ +deployment: + version: 1.58.0-150500.6.15.1 + operatorImage: registry.suse.com/suse/sles/15.5/cdi-operator + controllerImage: registry.suse.com/suse/sles/15.5/cdi-controller + importerImage: registry.suse.com/suse/sles/15.5/cdi-importer + clonerImage: registry.suse.com/suse/sles/15.5/cdi-cloner + apiserverImage: registry.suse.com/suse/sles/15.5/cdi-apiserver + uploadserverImage: registry.suse.com/suse/sles/15.5/cdi-uploadserver + uploadproxyImage: registry.suse.com/suse/sles/15.5/cdi-uploadproxy + pullPolicy: IfNotPresent + +cdi: + config: + featureGates: + - HonorWaitForFirstConsumer + imagePullPolicy: "IfNotPresent" + infra: + nodeSelector: + kubernetes.io/os: linux + tolerations: + - key: CriticalAddonsOnly + operator: Exists + uninstallStrategy: "" + workload: + nodeSelector: + kubernetes.io/os: linux + +hookImage: rancher/kubectl:v1.28.7 +hookRestartPolicy: OnFailure +hookSecurityContext: + seccompProfile: + type: RuntimeDefault + runAsNonRoot: true + runAsUser: 1000 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL diff --git a/index.html b/index.html index 4231f3ab..f986743e 100755 --- a/index.html +++ b/index.html @@ -179,14 +179,14 @@

Charts

- +

cdi - (0.2.3@1.58.0) + (0.2.4@1.58.0) github link diff --git a/index.yaml b/index.yaml index cca62dfe..70f5e46a 100755 --- a/index.yaml +++ b/index.yaml @@ -91,6 +91,17 @@ entries: - assets/akri-dashboard-extension/akri-dashboard-extension-0.1.0.tgz version: 0.1.0 cdi: + - apiVersion: v2 + appVersion: 1.58.0 + created: "2024-07-23T14:20:40.458545+03:00" + description: A Helm chart for Containerized Data Importer (CDI) + digest: 1e7652737a540473eef986a6cac1f04c4efa32a3c083d3d2de6ce4a37f1f118e + icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg + name: cdi + type: application + urls: + - assets/cdi/cdi-0.2.4.tgz + version: 0.2.4 - apiVersion: v2 appVersion: 1.58.0 created: "2024-04-11T14:29:11.446518+03:00" diff --git a/packages/cdi/charts/Chart.yaml b/packages/cdi/charts/Chart.yaml index 0da884e0..0b6bd31e 100644 --- a/packages/cdi/charts/Chart.yaml +++ b/packages/cdi/charts/Chart.yaml @@ -4,4 +4,4 @@ description: A Helm chart for Containerized Data Importer (CDI) icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg name: cdi type: application -version: 0.2.3 +version: 0.2.4 diff --git a/packages/cdi/charts/values.yaml b/packages/cdi/charts/values.yaml index d6ddc889..52b507d7 100644 --- a/packages/cdi/charts/values.yaml +++ b/packages/cdi/charts/values.yaml @@ -1,5 +1,5 @@ deployment: - version: 1.58.0-150500.6.12.1 + version: 1.58.0-150500.6.15.1 operatorImage: registry.suse.com/suse/sles/15.5/cdi-operator controllerImage: registry.suse.com/suse/sles/15.5/cdi-controller importerImage: registry.suse.com/suse/sles/15.5/cdi-importer diff --git a/packages/cdi/package.yaml b/packages/cdi/package.yaml index fdea10ed..7982ff3e 100644 --- a/packages/cdi/package.yaml +++ b/packages/cdi/package.yaml @@ -1,2 +1,2 @@ url: local -version: 0.2.3 +version: 0.2.4