From e431c8cb1e27d7aa67fc4366a250c178dbf62f34 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Fri, 17 Jan 2025 17:22:36 +0100 Subject: [PATCH 1/7] Add EnvVariablesOverride field in NooBaa CR Signed-off-by: NoOverflow --- pkg/apis/noobaa/v1alpha1/noobaa_types.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/apis/noobaa/v1alpha1/noobaa_types.go b/pkg/apis/noobaa/v1alpha1/noobaa_types.go index 829621dda..ec84e5987 100644 --- a/pkg/apis/noobaa/v1alpha1/noobaa_types.go +++ b/pkg/apis/noobaa/v1alpha1/noobaa_types.go @@ -91,6 +91,11 @@ type NooBaaSpec struct { // +kubebuilder:validation:Enum=postgres DBType DBTypes `json:"dbType,omitempty"` + // EnvVariablesOverride (optional) overrides the environment variables for all NooBaa's pods + // Can be used for exemple to add CONFIG_JS_ variables to modify core pod behaviour + // +optional + EnvVariablesOverride *EnvVariablesOverrideSpec `json:"envVariablesOverride,omitempty"` + // CoreResources (optional) overrides the default resource requirements for the server container // +optional CoreResources *corev1.ResourceRequirements `json:"coreResources,omitempty"` @@ -245,6 +250,14 @@ type AutoscalerSpec struct { PrometheusNamespace string `json:"prometheusNamespace,omitempty"` } +// EnvVariablesOverrideSpec defines the env override structure for each component deploying pods (ex: StatefulSet) +type EnvVariablesOverrideSpec struct { + // Variables override for core statefulset + Core []corev1.EnvVar `json:"core,omitempty"` +} + + + // BucketLoggingSpec defines the bucket logging configuration type BucketLoggingSpec struct { // LoggingType specifies the type of logging for the bucket From b35d129b49accff1e72885fde9853cde078240e5 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Fri, 17 Jan 2025 17:23:08 +0100 Subject: [PATCH 2/7] Wip `core` sts variable injection Signed-off-by: NoOverflow --- pkg/system/phase2_creating.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/system/phase2_creating.go b/pkg/system/phase2_creating.go index 5a882a3cd..f1db85152 100644 --- a/pkg/system/phase2_creating.go +++ b/pkg/system/phase2_creating.go @@ -478,6 +478,9 @@ func (r *Reconciler) setDesiredCoreEnv(c *corev1.Container) { util.MergeEnvArrays(&c.Env, &[]corev1.EnvVar{envVar}); } + if r.NooBaa.Spec.EnvVariablesOverride != nil && r.NooBaa.Spec.EnvVariablesOverride.Core != nil { + util.MergeEnvArrays(&c.Env, &r.NooBaa.Spec.EnvVariablesOverride.Core); + } } // SetDesiredCoreApp updates the CoreApp as desired for reconciling From 314aec58db5a7314a77cf220c3290a8fc1260adb Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Fri, 17 Jan 2025 19:54:16 +0100 Subject: [PATCH 3/7] Dirty switch to dev image repo Signed-off-by: NoOverflow --- Makefile | 6 +++--- pkg/options/options.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index fbab99a05..d1280296e 100644 --- a/Makefile +++ b/Makefile @@ -12,10 +12,10 @@ TIME ?= time -p ARCH ?= $(shell uname -m) VERSION ?= $(shell go run cmd/version/main.go) -IMAGE ?= noobaa/noobaa-operator:$(VERSION) +IMAGE ?= nooverflow/noobaa-operator:$(VERSION) DEV_IMAGE ?= noobaa/noobaa-operator-dev:$(VERSION) REPO ?= github.com/noobaa/noobaa-operator -CATALOG_IMAGE ?= noobaa/noobaa-operator-catalog:$(VERSION) +CATALOG_IMAGE ?= nooverflow/noobaa-operator-catalog:$(VERSION) BUNDLE_IMAGE ?= noobaa/noobaa-operator-bundle:$(VERSION) # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN)) @@ -279,7 +279,7 @@ test-util: vendor @echo "✅ test-util" .PHONY: test-util -test-validations: +test-validations: ginkgo -v pkg/validations @echo "✅ test-validations" .PHONY: test-validations diff --git a/pkg/options/options.go b/pkg/options/options.go index ebb9e46b1..a46d35ab5 100644 --- a/pkg/options/options.go +++ b/pkg/options/options.go @@ -61,7 +61,7 @@ var Namespace = "noobaa" // OperatorImage is the container image url built from https://github.com/noobaa/noobaa-operator // it can be overridden for testing or different registry locations. -var OperatorImage = "noobaa/noobaa-operator:" + version.Version +var OperatorImage = "nooverflow/noobaa-operator:" + version.Version // CosiSideCarImage is the container image url built from https://github.com/kubernetes-sigs/container-object-storage-interface-provisioner-sidecar var CosiSideCarImage = "gcr.io/k8s-staging-sig-storage/objectstorage-sidecar/objectstorage-sidecar:v20221117-v0.1.0-22-g0e67387" From 6f3f35ff5939b1edd7f422074cfeb609bfd6d7a9 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Sat, 18 Jan 2025 01:47:21 +0100 Subject: [PATCH 4/7] Modify NooBaa's CRD to allow env var override Signed-off-by: NoOverflow --- deploy/crds/noobaa.io_noobaas.yaml | 4234 +++++++++++++-------------- pkg/bundle/deploy.go | 4242 ++++++++++++++-------------- 2 files changed, 4360 insertions(+), 4116 deletions(-) diff --git a/deploy/crds/noobaa.io_noobaas.yaml b/deploy/crds/noobaa.io_noobaas.yaml index 639a84454..9f0fddf6c 100644 --- a/deploy/crds/noobaa.io_noobaas.yaml +++ b/deploy/crds/noobaa.io_noobaas.yaml @@ -12,2193 +12,2315 @@ spec: listKind: NooBaaList plural: noobaas shortNames: - - nb + - nb singular: noobaa scope: Namespaced versions: - - additionalPrinterColumns: - - description: S3 Endpoints - jsonPath: .status.services.serviceS3.nodePorts - name: S3-Endpoints - type: string - - description: STS Endpoints - jsonPath: .status.services.serviceSts.nodePorts - name: Sts-Endpoints - type: string - - description: Syslog Endpoints - jsonPath: .status.services.serviceSyslog.nodePorts - name: Syslog-Endpoints - type: string - - description: Actual Image - jsonPath: .status.actualImage - name: Image - type: string - - description: Phase - jsonPath: .status.phase - name: Phase - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: NooBaa is the Schema for the NooBaas API - 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: Specification of the desired behavior of the noobaa system. - properties: - affinity: - description: Affinity (optional) passed through to noobaa's pods - 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: + - additionalPrinterColumns: + - description: S3 Endpoints + jsonPath: .status.services.serviceS3.nodePorts + name: S3-Endpoints + type: string + - description: STS Endpoints + jsonPath: .status.services.serviceSts.nodePorts + name: Sts-Endpoints + type: string + - description: Syslog Endpoints + jsonPath: .status.services.serviceSyslog.nodePorts + name: Syslog-Endpoints + type: string + - description: Actual Image + jsonPath: .status.actualImage + name: Image + type: string + - description: Phase + jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: NooBaa is the Schema for the NooBaas API + 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: Specification of the desired behavior of the noobaa system. + properties: + affinity: + description: Affinity (optional) passed through to noobaa's pods + properties: + nodeAffinity: + description: + Describes node affinity scheduling rules for the + pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: 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: + 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 - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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: + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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: + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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: + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - 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. + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: + A list of node selector requirements + by node's fields. + items: 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. + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator 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 - x-kubernetes-list-type: atomic - 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 + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic required: - - podAffinityTerm - - weight + - nodeSelectorTerms type: object - type: array - x-kubernetes-list-type: atomic - 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: + 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: |- - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + 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 selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. properties: - 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: + 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 + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - 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. + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are ANDed. + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + 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 - required: + type: array + x-kubernetes-list-type: atomic + 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 - x-kubernetes-list-type: atomic - 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: + type: object + type: array + x-kubernetes-list-type: atomic + 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: |- - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + 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 selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. properties: - 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: + 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 + x-kubernetes-list-type: atomic + 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 - 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: + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are ANDed. + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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 - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - type: object - type: object - annotations: - additionalProperties: + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: object + annotations: additionalProperties: - type: string - description: Annotations are annotation for a given daemon + additionalProperties: + type: string + description: Annotations are annotation for a given daemon + type: object + description: + The annotations-related configuration to add/set on each + Pod related object. + nullable: true type: object - description: The annotations-related configuration to add/set on each - Pod related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - autoscaler: - description: Configuration related to autoscaling - properties: - autoscalerType: - description: Type of autoscaling (optional) for noobaa-endpoint, - hpav2(default) and keda - Prometheus metrics based - enum: - - hpav2 - - keda - type: string - prometheusNamespace: - description: Prometheus namespace that scrap metrics from noobaa - type: string - type: object - bucketLogging: - description: BucketLogging sets the configuration for bucket logging - properties: - bucketLoggingPVC: - description: |- - BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support - ReadWriteMany (RWX) access mode to ensure reliable logging. - For ODF: If not provided, the default CephFS storage class will be used to create the PVC. - type: string - loggingType: - description: |- - LoggingType specifies the type of logging for the bucket - There are two types available: best-effort and guaranteed logging - - best-effort(default) - less immune to failures but with better performance - - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs - type: string - type: object - bucketNotifications: - description: BucketNotifications (optional) controls bucket notification - options - properties: - connections: - description: |- - Connections - A list of secrets' names that are used by the notifications configrations - (in the TopicArn field). - items: + x-kubernetes-preserve-unknown-fields: true + autoscaler: + description: Configuration related to autoscaling + properties: + autoscalerType: + description: + Type of autoscaling (optional) for noobaa-endpoint, + hpav2(default) and keda - Prometheus metrics based + enum: + - hpav2 + - keda + type: string + prometheusNamespace: + description: Prometheus namespace that scrap metrics from noobaa + type: string + type: object + bucketLogging: + description: BucketLogging sets the configuration for bucket logging + properties: + bucketLoggingPVC: description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: array - enabled: - description: Enabled - whether bucket notifications is enabled - type: boolean - pvc: - description: |- - PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for holding pending notifications files. - For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. - type: string - required: - - enabled - type: object - cleanupPolicy: - description: CleanupPolicy (optional) Indicates user's policy for - deletion - properties: - allowNoobaaDeletion: - type: boolean - confirmation: - description: CleanupConfirmationProperty is a string that specifies - cleanup confirmation - type: string - type: object - coreResources: - description: CoreResources (optional) overrides the default resource - requirements for the server container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbConf: - description: DBConf (optional) overrides the default postgresql db - config - type: string - dbImage: - description: DBImage (optional) overrides the default image for the - db container - type: string - dbResources: - description: DBResources (optional) overrides the default resource - requirements for the db container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbStorageClass: - description: |- - DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. - For the time being this field is immutable and can only be set on system creation. - This affects where the system stores its database which contains system config, - buckets, objects meta-data and mapping file parts to storage locations. - type: string - dbType: - description: |- - DBType (optional) overrides the default type image for the db container. - The only possible value is postgres - enum: - - postgres - type: string - dbVolumeResources: - description: |- - DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. - For the time being this field is immutable and can only be set on system creation. - This is because volume size updates are only supported for increasing the size, - and only if the storage class specifies `allowVolumeExpansion: true`, - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - debugLevel: - description: DebugLevel (optional) sets the debug level - enum: - - all - - nsfs - - warn - - default_level - type: integer - defaultBackingStoreSpec: - description: 'Deprecated: DefaultBackingStoreSpec is not supported - anymore, use ManualDefaultBackingStore instead.' - properties: - awsS3: - description: AWSS3Spec specifies a backing store of type aws-s3 - properties: - awsSTSRoleARN: - description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity - type: string - region: - description: Region is the AWS region - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - sslDisabled: - description: SSLDisabled allows to disable SSL and use plain - http - type: boolean - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - targetBucket - type: object - azureBlob: - description: AzureBlob specifies a backing store of type azure-blob - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AccountName and AccountKey as provided by Azure Blob. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - targetBlobContainer: - description: TargetBlobContainer is the name of the target - Azure Blob container - type: string - required: - - secret - - targetBlobContainer - type: object - googleCloudStorage: - description: GoogleCloudStorage specifies a backing store of type - google-cloud-storage - properties: - secret: + BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support + ReadWriteMany (RWX) access mode to ensure reliable logging. + For ODF: If not provided, the default CephFS storage class will be used to create the PVC. + type: string + loggingType: + description: |- + LoggingType specifies the type of logging for the bucket + There are two types available: best-effort and guaranteed logging + - best-effort(default) - less immune to failures but with better performance + - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs + type: string + type: object + bucketNotifications: + description: + BucketNotifications (optional) controls bucket notification + options + properties: + connections: + description: |- + Connections - A list of secrets' names that are used by the notifications configrations + (in the TopicArn field). + items: description: |- - Secret refers to a secret that provides the credentials - The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace properties: name: - description: name is unique within a namespace to reference + description: + name is unique within a namespace to reference a secret resource. type: string namespace: - description: namespace defines the space within which - the secret name must be unique. + description: + namespace defines the space within which the + secret name must be unique. type: string type: object x-kubernetes-map-type: atomic - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - secret - - targetBucket - type: object - ibmCos: - description: IBMCos specifies a backing store of type ibm-cos - properties: - endpoint: - description: 'Endpoint is the IBM COS compatible endpoint: - http(s)://host:port' - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + type: array + enabled: + description: Enabled - whether bucket notifications is enabled + type: boolean + pvc: + description: |- + PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for holding pending notifications files. + For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. + type: string + required: + - enabled + type: object + cleanupPolicy: + description: + CleanupPolicy (optional) Indicates user's policy for + deletion + properties: + allowNoobaaDeletion: + type: boolean + confirmation: + description: + CleanupConfirmationProperty is a string that specifies + cleanup confirmation + type: string + type: object + coreResources: + description: + CoreResources (optional) overrides the default resource + requirements for the server container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: TargetBucket is the name of the target IBM COS - bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - pvPool: - description: PVPool specifies a backing store of type pv-pool - properties: - numVolumes: - description: NumVolumes is the number of volumes to allocate - type: integer - resources: - description: VolumeResources represents the minimum resources - each volume should have. - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - secret: - description: |- - Secret refers to a secret that provides the agent configuration - The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. + 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 - namespace: - description: namespace defines the space within which - the secret name must be unique. + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string + required: + - name type: object - x-kubernetes-map-type: atomic - storageClass: - description: StorageClass is the name of the storage class - to use for the PV's - type: string - required: - - numVolumes - type: object - s3Compatible: - description: S3Compatible specifies a backing store of type s3-compatible - properties: - endpoint: - description: 'Endpoint is the S3 compatible endpoint: http(s)://host:port' - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbConf: + description: + DBConf (optional) overrides the default postgresql db + config + type: string + dbImage: + description: + DBImage (optional) overrides the default image for the + db container + type: string + dbResources: + description: + DBResources (optional) overrides the default resource + requirements for the db container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: name is unique within a namespace to reference - a secret resource. + 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 - namespace: - description: namespace defines the space within which - the secret name must be unique. + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - type: - description: Type is an enum of supported types - type: string - required: - - type - type: object - denyHTTP: - description: DenyHTTP (optional) if given will deny access to the - NooBaa S3 service using HTTP (only HTTPS) - type: boolean - disableLoadBalancerService: - description: DisableLoadBalancerService (optional) sets the service - type to ClusterIP instead of LoadBalancer - nullable: true - type: boolean - endpoints: - description: |- - Endpoints (optional) sets configuration info for the noobaa endpoint - deployment. - properties: - additionalVirtualHosts: - description: |- - AdditionalVirtualHosts (optional) provide a list of additional hostnames - (on top of the builtin names defined by the cluster: service name, elb name, route name) - to be used as virtual hosts by the the endpoints in the endpoint deployment - items: - type: string - type: array - maxCount: - description: |- - MaxCount, the number of endpoint instances (pods) - to be used as the upper bound when autoscaling - format: int32 - type: integer - minCount: - description: |- - MinCount, the number of endpoint instances (pods) - to be used as the lower bound when autoscaling - format: int32 - type: integer - resources: - description: Resources (optional) overrides the default resource - requirements for every endpoint pod - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - type: string - required: + required: - name - type: object - type: array - x-kubernetes-list-map-keys: + type: object + type: array + x-kubernetes-list-map-keys: - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: + 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: + 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - type: object - externalPgSSLRequired: - description: ExternalPgSSLRequired (optional) holds an optional boolean - to force ssl connections to the external Postgres DB - type: boolean - externalPgSSLSecret: - description: ExternalPgSSLSecret (optional) holds an optional secret - with client key and cert used for connecting to external Postgres - DB - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - externalPgSSLUnauthorized: - description: ExternalPgSSLUnauthorized (optional) holds an optional - boolean to allow unauthorized connections to external Postgres DB - type: boolean - externalPgSecret: - description: ExternalPgSecret (optional) holds an optional secret - with a url to an extrenal Postgres DB to be used - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - image: - description: Image (optional) overrides the default image for the - server container - type: string - imagePullSecret: - description: ImagePullSecret (optional) sets a pull secret for the - system image - properties: - name: - default: "" - description: |- - Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - type: object - x-kubernetes-map-type: atomic - joinSecret: - description: |- - JoinSecret (optional) instructs the operator to join another cluster - and point to a secret that holds the join information - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - labels: - additionalProperties: - additionalProperties: - type: string - description: Labels are label for a given daemon + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object type: object - description: The labels-related configuration to add/set on each Pod - related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - loadBalancerSourceSubnets: - description: |- - LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services - only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set - to true - properties: - s3: - description: S3 is a list of subnets that will be allowed to access - the Noobaa S3 service - items: - type: string - type: array - sts: - description: STS is a list of subnets that will be allowed to - access the Noobaa STS service - items: - type: string - type: array - type: object - logResources: - description: LogResources (optional) overrides the default resource - requirements for the noobaa-log-processor container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + dbStorageClass: + description: |- + DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. + For the time being this field is immutable and can only be set on system creation. + This affects where the system stores its database which contains system config, + buckets, objects meta-data and mapping file parts to storage locations. + type: string + dbType: + description: |- + DBType (optional) overrides the default type image for the db container. + The only possible value is postgres + enum: + - postgres + type: string + dbVolumeResources: + description: |- + DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. + For the time being this field is immutable and can only be set on system creation. + This is because volume size updates are only supported for increasing the size, + and only if the storage class specifies `allowVolumeExpansion: true`, + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + debugLevel: + description: DebugLevel (optional) sets the debug level + enum: + - all + - nsfs + - warn + - default_level + type: integer + defaultBackingStoreSpec: + description: + "Deprecated: DefaultBackingStoreSpec is not supported + anymore, use ManualDefaultBackingStore instead." + properties: + awsS3: + description: AWSS3Spec specifies a backing store of type aws-s3 + properties: + awsSTSRoleARN: + description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity + type: string + region: + description: Region is the AWS region + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + sslDisabled: + description: + SSLDisabled allows to disable SSL and use plain + http + type: boolean + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - targetBucket + type: object + azureBlob: + description: AzureBlob specifies a backing store of type azure-blob + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AccountName and AccountKey as provided by Azure Blob. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBlobContainer: + description: + TargetBlobContainer is the name of the target + Azure Blob container + type: string + required: + - secret + - targetBlobContainer + type: object + googleCloudStorage: + description: + GoogleCloudStorage specifies a backing store of type + google-cloud-storage + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - secret + - targetBucket + type: object + ibmCos: + description: IBMCos specifies a backing store of type ibm-cos + properties: + endpoint: + description: + "Endpoint is the IBM COS compatible endpoint: + http(s)://host:port" + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: + SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: + TargetBucket is the name of the target IBM COS + bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + pvPool: + description: PVPool specifies a backing store of type pv-pool + properties: + numVolumes: + description: NumVolumes is the number of volumes to allocate + type: integer + resources: + description: + VolumeResources represents the minimum resources + each volume should have. + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + secret: + description: |- + Secret refers to a secret that provides the agent configuration + The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + storageClass: + description: + StorageClass is the name of the storage class + to use for the PV's + type: string + required: + - numVolumes + type: object + s3Compatible: + description: S3Compatible specifies a backing store of type s3-compatible properties: - name: + endpoint: + description: "Endpoint is the S3 compatible endpoint: http(s)://host:port" + type: string + secret: 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. + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: + SignatureVersion specifies the client signature + version to use when signing requests. type: string - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + targetBucket: + description: TargetBucket is the name of the target S3 bucket type: string required: - - name + - endpoint + - secret + - targetBucket 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - manualDefaultBackingStore: - description: |- - ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore - will not be reconciled by the operator and it should be manually handled by the user. It will allow the - user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and - update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore - nullable: true - type: boolean - pvPoolDefaultStorageClass: - description: |- - PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. - This affects where the system stores data chunks (encrypted). - Updates to this field will only affect new pv-pools, - but updates to existing pools are not supported by the operator. - type: string - region: - description: |- - Region (optional) provide a region for the location info - of the endpoints in the endpoint deployment - type: string - security: - description: Security represents security settings - properties: - kms: - description: KeyManagementServiceSpec represent various details - of the KMS server - properties: - connectionDetails: - additionalProperties: - type: string - type: object - enableKeyRotation: - type: boolean - schedule: - type: string - tokenSecretName: - type: string - type: object - type: object - tolerations: - description: Tolerations (optional) passed through to noobaa's pods - items: + type: + description: Type is an enum of supported types + type: string + required: + - type + type: object + denyHTTP: + description: + DenyHTTP (optional) if given will deny access to the + NooBaa S3 service using HTTP (only HTTPS) + type: boolean + disableLoadBalancerService: + description: + DisableLoadBalancerService (optional) sets the service + type to ClusterIP instead of LoadBalancer + nullable: true + type: boolean + endpoints: description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . + Endpoints (optional) sets configuration info for the noobaa endpoint + deployment. 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: + additionalVirtualHosts: 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: + AdditionalVirtualHosts (optional) provide a list of additional hostnames + (on top of the builtin names defined by the cluster: service name, elb name, route name) + to be used as virtual hosts by the the endpoints in the endpoint deployment + items: + type: string + type: array + maxCount: 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 + MaxCount, the number of endpoint instances (pods) + to be used as the upper bound when autoscaling + format: int32 type: integer - value: + minCount: 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 + MinCount, the number of endpoint instances (pods) + to be used as the lower bound when autoscaling + format: int32 + type: integer + resources: + description: + Resources (optional) overrides the default resource + requirements for every endpoint pod + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object type: object - type: array - type: object - status: - description: Most recently observed status of the noobaa system. - properties: - accounts: - description: Accounts reports accounts info for the admin account - properties: - admin: - description: UserStatus is the status info of a user secret - properties: - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string + envVariablesOverride: + description: "huh" + type: object + properties: + core: + description: "List of environment variables to set in the Core statefulset container. Cannot be updated." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true type: object - x-kubernetes-map-type: atomic - required: - - secretRef - type: object - required: - - admin - type: object - actualImage: - description: ActualImage is set to report which image the operator - is using - type: string - beforeUpgradeDbImage: - description: BeforeUpgradeDbImage is the db image used before last - db upgrade - type: string - conditions: - description: Conditions is a list of conditions related to operator - reconciliation - items: - description: |- - Condition represents the state of the operator's - reconciliation functionality. + x-kubernetes-preserve-unknown-fields: true + type: array + externalPgSSLRequired: + description: + ExternalPgSSLRequired (optional) holds an optional boolean + to force ssl connections to the external Postgres DB + type: boolean + externalPgSSLSecret: + description: + ExternalPgSSLSecret (optional) holds an optional secret + with client key and cert used for connecting to external Postgres + DB properties: - lastHeartbeatTime: - format: date-time - type: string - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: + name: + description: + name is unique within a namespace to reference a + secret resource. type: string - type: - description: ConditionType is the state of the operator's reconciliation - functionality. + namespace: + description: + namespace defines the space within which the secret + name must be unique. type: string - required: - - status - - type type: object - type: array - endpoints: - description: |- - Endpoints reports the actual number of endpoints in the endpoint deployment - and the virtual hosts list used recognized by the endpoints - properties: - readyCount: - format: int32 - type: integer - virtualHosts: - items: - type: string - type: array - required: - - readyCount - - virtualHosts - type: object - lastKeyRotateTime: - description: LastKeyRotateTime is the time system ran an encryption - key rotate - format: date-time - type: string - observedGeneration: - description: |- - ObservedGeneration is the most recent generation observed for this noobaa system. - It corresponds to the CR generation, which is updated on mutation by the API Server. - format: int64 - type: integer - phase: - description: Phase is a simple, high-level summary of where the System - is in its lifecycle - type: string - postgresUpdatePhase: - description: Upgrade reports the status of the ongoing postgres upgrade - process - type: string - readme: - description: Readme is a user readable string with explanations on - the system - type: string - relatedObjects: - description: RelatedObjects is a list of objects related to this operator. - items: - description: ObjectReference contains enough information to let - you inspect or modify the referred object. + x-kubernetes-map-type: atomic + externalPgSSLUnauthorized: + description: + ExternalPgSSLUnauthorized (optional) holds an optional + boolean to allow unauthorized connections to external Postgres DB + type: boolean + externalPgSecret: + description: + ExternalPgSecret (optional) holds an optional secret + with a url to an extrenal Postgres DB to be used properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. + name: + description: + name is unique within a namespace to reference a + secret resource. type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + namespace: + description: + namespace defines the space within which the secret + name must be unique. type: string + type: object + x-kubernetes-map-type: atomic + image: + description: + Image (optional) overrides the default image for the + server container + type: string + imagePullSecret: + description: + ImagePullSecret (optional) sets a pull secret for the + system image + properties: name: + default: "" description: |- Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string + type: object + x-kubernetes-map-type: atomic + joinSecret: + description: |- + JoinSecret (optional) instructs the operator to join another cluster + and point to a secret that holds the join information + properties: + name: + description: + name is unique within a namespace to reference a + secret resource. + type: string namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + description: + namespace defines the space within which the secret + name must be unique. type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: object + x-kubernetes-map-type: atomic + labels: + additionalProperties: + additionalProperties: type: string - uid: + description: Labels are label for a given daemon + type: object + description: + The labels-related configuration to add/set on each Pod + related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + loadBalancerSourceSubnets: + description: |- + LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services + only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set + to true + properties: + s3: + description: + S3 is a list of subnets that will be allowed to access + the Noobaa S3 service + items: + type: string + type: array + sts: + description: + STS is a list of subnets that will be allowed to + access the Noobaa STS service + items: + type: string + type: array + type: object + logResources: + description: + LogResources (optional) overrides the default resource + requirements for the noobaa-log-processor container + properties: + claims: description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object type: object - x-kubernetes-map-type: atomic - type: array - services: - description: Services reports addresses for the services - properties: - serviceMgmt: - description: ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: + manualDefaultBackingStore: + description: |- + ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore + will not be reconciled by the operator and it should be manually handled by the user. It will allow the + user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and + update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore + nullable: true + type: boolean + pvPoolDefaultStorageClass: + description: |- + PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. + This affects where the system stores data chunks (encrypted). + Updates to this field will only affect new pv-pools, + but updates to existing pools are not supported by the operator. + type: string + region: + description: |- + Region (optional) provide a region for the location info + of the endpoints in the endpoint deployment + type: string + security: + description: Security represents security settings + properties: + kms: + description: + KeyManagementServiceSpec represent various details + of the KMS server + properties: + connectionDetails: + additionalProperties: + type: string + type: object + enableKeyRotation: + type: boolean + schedule: type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: + tokenSecretName: type: string - type: array - type: object - serviceS3: - description: ServiceStatus is the status info and network addresses - of a service + type: object + type: object + tolerations: + description: Tolerations (optional) passed through to noobaa's pods + items: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: + effect: description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: + 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: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: + 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: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: + 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: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array + 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 - serviceSts: - description: ServiceStatus is the status info and network addresses - of a service + type: array + type: object + status: + description: Most recently observed status of the noobaa system. + properties: + accounts: + description: Accounts reports accounts info for the admin account + properties: + admin: + description: UserStatus is the status info of a user secret + properties: + secretRef: + description: |- + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + required: + - secretRef + type: object + required: + - admin + type: object + actualImage: + description: + ActualImage is set to report which image the operator + is using + type: string + beforeUpgradeDbImage: + description: + BeforeUpgradeDbImage is the db image used before last + db upgrade + type: string + conditions: + description: + Conditions is a list of conditions related to operator + reconciliation + items: + description: |- + Condition represents the state of the operator's + reconciliation functionality. properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array + 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 - serviceSyslog: - description: ServiceStatus is the status info and network addresses - of a service + type: array + endpoints: + description: |- + Endpoints reports the actual number of endpoints in the endpoint deployment + and the virtual hosts list used recognized by the endpoints + properties: + readyCount: + format: int32 + type: integer + virtualHosts: + items: + type: string + type: array + required: + - readyCount + - virtualHosts + type: object + lastKeyRotateTime: + description: + LastKeyRotateTime is the time system ran an encryption + key rotate + format: date-time + type: string + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this noobaa system. + It corresponds to the CR generation, which is updated on mutation by the API Server. + format: int64 + type: integer + phase: + description: + Phase is a simple, high-level summary of where the System + is in its lifecycle + type: string + postgresUpdatePhase: + description: + Upgrade reports the status of the ongoing postgres upgrade + process + type: string + readme: + description: + Readme is a user readable string with explanations on + the system + type: string + relatedObjects: + description: RelatedObjects is a list of objects related to this operator. + items: + description: + ObjectReference contains enough information to let + you inspect or modify the referred object. properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: + apiVersion: + description: API version of the referent. + type: string + fieldPath: description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string type: object - required: - - serviceMgmt - - serviceS3 - type: object - upgradePhase: - description: Upgrade reports the status of the ongoing upgrade process - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + x-kubernetes-map-type: atomic + type: array + services: + description: Services reports addresses for the services + properties: + serviceMgmt: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceS3: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSts: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSyslog: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + required: + - serviceMgmt + - serviceS3 + type: object + upgradePhase: + description: Upgrade reports the status of the ongoing upgrade process + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/pkg/bundle/deploy.go b/pkg/bundle/deploy.go index 1b95f6a19..864b3de4c 100644 --- a/pkg/bundle/deploy.go +++ b/pkg/bundle/deploy.go @@ -1423,7 +1423,7 @@ spec: status: {} ` -const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "e862d263d097ed43f774784eaaf9a616967746b67608fadbe4ca71d93b220ab6" +const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "c354dda7e40756f33fe9daf07a240e92b55ac9c537bdf51101e8fe0f47cefc7e" const File_deploy_crds_noobaa_io_noobaas_yaml = `--- apiVersion: apiextensions.k8s.io/v1 @@ -1439,2196 +1439,2318 @@ spec: listKind: NooBaaList plural: noobaas shortNames: - - nb + - nb singular: noobaa scope: Namespaced versions: - - additionalPrinterColumns: - - description: S3 Endpoints - jsonPath: .status.services.serviceS3.nodePorts - name: S3-Endpoints - type: string - - description: STS Endpoints - jsonPath: .status.services.serviceSts.nodePorts - name: Sts-Endpoints - type: string - - description: Syslog Endpoints - jsonPath: .status.services.serviceSyslog.nodePorts - name: Syslog-Endpoints - type: string - - description: Actual Image - jsonPath: .status.actualImage - name: Image - type: string - - description: Phase - jsonPath: .status.phase - name: Phase - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: NooBaa is the Schema for the NooBaas API - 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: Specification of the desired behavior of the noobaa system. - properties: - affinity: - description: Affinity (optional) passed through to noobaa's pods - 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: + - additionalPrinterColumns: + - description: S3 Endpoints + jsonPath: .status.services.serviceS3.nodePorts + name: S3-Endpoints + type: string + - description: STS Endpoints + jsonPath: .status.services.serviceSts.nodePorts + name: Sts-Endpoints + type: string + - description: Syslog Endpoints + jsonPath: .status.services.serviceSyslog.nodePorts + name: Syslog-Endpoints + type: string + - description: Actual Image + jsonPath: .status.actualImage + name: Image + type: string + - description: Phase + jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: NooBaa is the Schema for the NooBaas API + 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: Specification of the desired behavior of the noobaa system. + properties: + affinity: + description: Affinity (optional) passed through to noobaa's pods + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: 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). + 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: - 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: + 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 - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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: + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic required: - - preference - - weight + - nodeSelectorTerms type: object - type: array - x-kubernetes-list-type: atomic - 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: + 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 node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - matchFields: - description: A list of node selector requirements - by node's fields. - items: + x-kubernetes-map-type: atomic + matchLabelKeys: description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. properties: - 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: + matchLabels: + additionalProperties: + type: string 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. + 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 + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are ANDed. + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + 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 - required: + type: array + x-kubernetes-list-type: atomic + 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 - x-kubernetes-list-type: atomic - 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: + type: object + type: array + x-kubernetes-list-type: atomic + 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: |- - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + 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 selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + x-kubernetes-map-type: atomic + matchLabelKeys: description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. properties: - 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. + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - type: string + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object type: array x-kubernetes-list-type: atomic - required: - - key - - operator + 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 - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: + 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 + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - 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. + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: + matchExpressions is a list of label + selector requirements. The requirements are ANDed. + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - 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 - x-kubernetes-list-type: atomic - required: + type: array + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + 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 - required: + type: array + x-kubernetes-list-type: atomic + 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - type: object - type: object - annotations: - additionalProperties: - additionalProperties: - type: string - description: Annotations are annotation for a given daemon - type: object - description: The annotations-related configuration to add/set on each - Pod related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - autoscaler: - description: Configuration related to autoscaling - properties: - autoscalerType: - description: Type of autoscaling (optional) for noobaa-endpoint, - hpav2(default) and keda - Prometheus metrics based - enum: - - hpav2 - - keda - type: string - prometheusNamespace: - description: Prometheus namespace that scrap metrics from noobaa - type: string - type: object - bucketLogging: - description: BucketLogging sets the configuration for bucket logging - properties: - bucketLoggingPVC: - description: |- - BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support - ReadWriteMany (RWX) access mode to ensure reliable logging. - For ODF: If not provided, the default CephFS storage class will be used to create the PVC. - type: string - loggingType: - description: |- - LoggingType specifies the type of logging for the bucket - There are two types available: best-effort and guaranteed logging - - best-effort(default) - less immune to failures but with better performance - - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs - type: string - type: object - bucketNotifications: - description: BucketNotifications (optional) controls bucket notification - options - properties: - connections: - description: |- - Connections - A list of secrets' names that are used by the notifications configrations - (in the TopicArn field). - items: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - type: array - enabled: - description: Enabled - whether bucket notifications is enabled - type: boolean - pvc: - description: |- - PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for holding pending notifications files. - For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. - type: string - required: - - enabled - type: object - cleanupPolicy: - description: CleanupPolicy (optional) Indicates user's policy for - deletion - properties: - allowNoobaaDeletion: - type: boolean - confirmation: - description: CleanupConfirmationProperty is a string that specifies - cleanup confirmation - type: string - type: object - coreResources: - description: CoreResources (optional) overrides the default resource - requirements for the server container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbConf: - description: DBConf (optional) overrides the default postgresql db - config - type: string - dbImage: - description: DBImage (optional) overrides the default image for the - db container - type: string - dbResources: - description: DBResources (optional) overrides the default resource - requirements for the db container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - type: string - required: - - name + type: object + type: array + x-kubernetes-list-type: atomic 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbStorageClass: - description: |- - DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. - For the time being this field is immutable and can only be set on system creation. - This affects where the system stores its database which contains system config, - buckets, objects meta-data and mapping file parts to storage locations. - type: string - dbType: - description: |- - DBType (optional) overrides the default type image for the db container. - The only possible value is postgres - enum: - - postgres - type: string - dbVolumeResources: - description: |- - DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. - For the time being this field is immutable and can only be set on system creation. - This is because volume size updates are only supported for increasing the size, - and only if the storage class specifies ` + "`" + `allowVolumeExpansion: true` + "`" + `, - properties: - 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: + type: object + annotations: + additionalProperties: 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - debugLevel: - description: DebugLevel (optional) sets the debug level - enum: - - all - - nsfs - - warn - - default_level - type: integer - defaultBackingStoreSpec: - description: 'Deprecated: DefaultBackingStoreSpec is not supported - anymore, use ManualDefaultBackingStore instead.' - properties: - awsS3: - description: AWSS3Spec specifies a backing store of type aws-s3 - properties: - awsSTSRoleARN: - description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity - type: string - region: - description: Region is the AWS region - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - sslDisabled: - description: SSLDisabled allows to disable SSL and use plain - http - type: boolean - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - targetBucket + type: string + description: Annotations are annotation for a given daemon type: object - azureBlob: - description: AzureBlob specifies a backing store of type azure-blob - properties: - secret: + description: + The annotations-related configuration to add/set on each + Pod related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + autoscaler: + description: Configuration related to autoscaling + properties: + autoscalerType: + description: + Type of autoscaling (optional) for noobaa-endpoint, + hpav2(default) and keda - Prometheus metrics based + enum: + - hpav2 + - keda + type: string + prometheusNamespace: + description: Prometheus namespace that scrap metrics from noobaa + type: string + type: object + bucketLogging: + description: BucketLogging sets the configuration for bucket logging + properties: + bucketLoggingPVC: + description: |- + BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support + ReadWriteMany (RWX) access mode to ensure reliable logging. + For ODF: If not provided, the default CephFS storage class will be used to create the PVC. + type: string + loggingType: + description: |- + LoggingType specifies the type of logging for the bucket + There are two types available: best-effort and guaranteed logging + - best-effort(default) - less immune to failures but with better performance + - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs + type: string + type: object + bucketNotifications: + description: + BucketNotifications (optional) controls bucket notification + options + properties: + connections: + description: |- + Connections - A list of secrets' names that are used by the notifications configrations + (in the TopicArn field). + items: description: |- - Secret refers to a secret that provides the credentials - The secret should define AccountName and AccountKey as provided by Azure Blob. + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace properties: name: - description: name is unique within a namespace to reference + description: + name is unique within a namespace to reference a secret resource. type: string namespace: - description: namespace defines the space within which - the secret name must be unique. + description: + namespace defines the space within which the + secret name must be unique. type: string type: object x-kubernetes-map-type: atomic - targetBlobContainer: - description: TargetBlobContainer is the name of the target - Azure Blob container - type: string - required: - - secret - - targetBlobContainer - type: object - googleCloudStorage: - description: GoogleCloudStorage specifies a backing store of type - google-cloud-storage - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. + type: array + enabled: + description: Enabled - whether bucket notifications is enabled + type: boolean + pvc: + description: |- + PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for holding pending notifications files. + For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. + type: string + required: + - enabled + type: object + cleanupPolicy: + description: + CleanupPolicy (optional) Indicates user's policy for + deletion + properties: + allowNoobaaDeletion: + type: boolean + confirmation: + description: + CleanupConfirmationProperty is a string that specifies + cleanup confirmation + type: string + type: object + coreResources: + description: + CoreResources (optional) overrides the default resource + requirements for the server container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: name is unique within a namespace to reference - a secret resource. + 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 - namespace: - description: namespace defines the space within which - the secret name must be unique. + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string + required: + - name type: object - x-kubernetes-map-type: atomic - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - secret - - targetBucket - type: object - ibmCos: - description: IBMCos specifies a backing store of type ibm-cos - properties: - endpoint: - description: 'Endpoint is the IBM COS compatible endpoint: - http(s)://host:port' - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbConf: + description: + DBConf (optional) overrides the default postgresql db + config + type: string + dbImage: + description: + DBImage (optional) overrides the default image for the + db container + type: string + dbResources: + description: + DBResources (optional) overrides the default resource + requirements for the db container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: TargetBucket is the name of the target IBM COS - bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - pvPool: - description: PVPool specifies a backing store of type pv-pool - properties: - numVolumes: - description: NumVolumes is the number of volumes to allocate - type: integer - resources: - description: VolumeResources represents the minimum resources - each volume should have. - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - secret: - description: |- - Secret refers to a secret that provides the agent configuration - The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. - properties: - name: - description: name is unique within a namespace to reference - a secret resource. + 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 - namespace: - description: namespace defines the space within which - the secret name must be unique. + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string + required: + - name type: object - x-kubernetes-map-type: atomic - storageClass: - description: StorageClass is the name of the storage class - to use for the PV's - type: string - required: - - numVolumes - type: object - s3Compatible: - description: S3Compatible specifies a backing store of type s3-compatible - properties: - endpoint: - description: 'Endpoint is the S3 compatible endpoint: http(s)://host:port' - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - type: - description: Type is an enum of supported types - type: string - required: - - type - type: object - denyHTTP: - description: DenyHTTP (optional) if given will deny access to the - NooBaa S3 service using HTTP (only HTTPS) - type: boolean - disableLoadBalancerService: - description: DisableLoadBalancerService (optional) sets the service - type to ClusterIP instead of LoadBalancer - nullable: true - type: boolean - endpoints: - description: |- - Endpoints (optional) sets configuration info for the noobaa endpoint - deployment. - properties: - additionalVirtualHosts: - description: |- - AdditionalVirtualHosts (optional) provide a list of additional hostnames - (on top of the builtin names defined by the cluster: service name, elb name, route name) - to be used as virtual hosts by the the endpoints in the endpoint deployment - items: - type: string - type: array - maxCount: - description: |- - MaxCount, the number of endpoint instances (pods) - to be used as the upper bound when autoscaling - format: int32 - type: integer - minCount: - description: |- - MinCount, the number of endpoint instances (pods) - to be used as the lower bound when autoscaling - format: int32 - type: integer - resources: - description: Resources (optional) overrides the default resource - requirements for every endpoint pod - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: + type: array + x-kubernetes-list-map-keys: - name - x-kubernetes-list-type: map - limits: - additionalProperties: - anyOf: + 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: + 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - type: object - externalPgSSLRequired: - description: ExternalPgSSLRequired (optional) holds an optional boolean - to force ssl connections to the external Postgres DB - type: boolean - externalPgSSLSecret: - description: ExternalPgSSLSecret (optional) holds an optional secret - with client key and cert used for connecting to external Postgres - DB - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - externalPgSSLUnauthorized: - description: ExternalPgSSLUnauthorized (optional) holds an optional - boolean to allow unauthorized connections to external Postgres DB - type: boolean - externalPgSecret: - description: ExternalPgSecret (optional) holds an optional secret - with a url to an extrenal Postgres DB to be used - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - image: - description: Image (optional) overrides the default image for the - server container - type: string - imagePullSecret: - description: ImagePullSecret (optional) sets a pull secret for the - system image - properties: - name: - default: "" - description: |- - Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - type: object - x-kubernetes-map-type: atomic - joinSecret: - description: |- - JoinSecret (optional) instructs the operator to join another cluster - and point to a secret that holds the join information - properties: - name: - description: name is unique within a namespace to reference a - secret resource. - type: string - namespace: - description: namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - labels: - additionalProperties: - additionalProperties: - type: string - description: Labels are label for a given daemon + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object type: object - description: The labels-related configuration to add/set on each Pod - related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - loadBalancerSourceSubnets: - description: |- - LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services - only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set - to true - properties: - s3: - description: S3 is a list of subnets that will be allowed to access - the Noobaa S3 service - items: - type: string - type: array - sts: - description: STS is a list of subnets that will be allowed to - access the Noobaa STS service - items: - type: string - type: array - type: object - logResources: - description: LogResources (optional) overrides the default resource - requirements for the noobaa-log-processor container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + dbStorageClass: + description: |- + DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. + For the time being this field is immutable and can only be set on system creation. + This affects where the system stores its database which contains system config, + buckets, objects meta-data and mapping file parts to storage locations. + type: string + dbType: + description: |- + DBType (optional) overrides the default type image for the db container. + The only possible value is postgres + enum: + - postgres + type: string + dbVolumeResources: + description: |- + DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. + For the time being this field is immutable and can only be set on system creation. + This is because volume size updates are only supported for increasing the size, + and only if the storage class specifies ` + "`" + `allowVolumeExpansion: true` + "`" + `, + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + debugLevel: + description: DebugLevel (optional) sets the debug level + enum: + - all + - nsfs + - warn + - default_level + type: integer + defaultBackingStoreSpec: + description: + "Deprecated: DefaultBackingStoreSpec is not supported + anymore, use ManualDefaultBackingStore instead." + properties: + awsS3: + description: AWSS3Spec specifies a backing store of type aws-s3 + properties: + awsSTSRoleARN: + description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity + type: string + region: + description: Region is the AWS region + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + sslDisabled: + description: + SSLDisabled allows to disable SSL and use plain + http + type: boolean + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - targetBucket + type: object + azureBlob: + description: AzureBlob specifies a backing store of type azure-blob properties: - name: + secret: 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. + Secret refers to a secret that provides the credentials + The secret should define AccountName and AccountKey as provided by Azure Blob. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBlobContainer: + description: + TargetBlobContainer is the name of the target + Azure Blob container type: string - request: + required: + - secret + - targetBlobContainer + type: object + googleCloudStorage: + description: + GoogleCloudStorage specifies a backing store of type + google-cloud-storage + properties: + secret: description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + Secret refers to a secret that provides the credentials + The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBucket: + description: TargetBucket is the name of the target S3 bucket type: string required: - - name + - secret + - targetBucket 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - manualDefaultBackingStore: - description: |- - ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore - will not be reconciled by the operator and it should be manually handled by the user. It will allow the - user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and - update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore - nullable: true - type: boolean - pvPoolDefaultStorageClass: - description: |- - PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. - This affects where the system stores data chunks (encrypted). - Updates to this field will only affect new pv-pools, - but updates to existing pools are not supported by the operator. - type: string - region: - description: |- - Region (optional) provide a region for the location info - of the endpoints in the endpoint deployment - type: string - security: - description: Security represents security settings - properties: - kms: - description: KeyManagementServiceSpec represent various details - of the KMS server - properties: - connectionDetails: - additionalProperties: + ibmCos: + description: IBMCos specifies a backing store of type ibm-cos + properties: + endpoint: + description: + "Endpoint is the IBM COS compatible endpoint: + http(s)://host:port" type: string - type: object - enableKeyRotation: - type: boolean - schedule: - type: string - tokenSecretName: - type: string - type: object - type: object - tolerations: - description: Tolerations (optional) passed through to noobaa's pods - items: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: + SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: + TargetBucket is the name of the target IBM COS + bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + pvPool: + description: PVPool specifies a backing store of type pv-pool + properties: + numVolumes: + description: NumVolumes is the number of volumes to allocate + type: integer + resources: + description: + VolumeResources represents the minimum resources + each volume should have. + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + secret: + description: |- + Secret refers to a secret that provides the agent configuration + The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + storageClass: + description: + StorageClass is the name of the storage class + to use for the PV's + type: string + required: + - numVolumes + type: object + s3Compatible: + description: S3Compatible specifies a backing store of type s3-compatible + properties: + endpoint: + description: "Endpoint is the S3 compatible endpoint: http(s)://host:port" + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: + SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + type: + description: Type is an enum of supported types + type: string + required: + - type + type: object + denyHTTP: + description: + DenyHTTP (optional) if given will deny access to the + NooBaa S3 service using HTTP (only HTTPS) + type: boolean + disableLoadBalancerService: + description: + DisableLoadBalancerService (optional) sets the service + type to ClusterIP instead of LoadBalancer + nullable: true + type: boolean + endpoints: description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . + Endpoints (optional) sets configuration info for the noobaa endpoint + deployment. 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: + additionalVirtualHosts: 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: + AdditionalVirtualHosts (optional) provide a list of additional hostnames + (on top of the builtin names defined by the cluster: service name, elb name, route name) + to be used as virtual hosts by the the endpoints in the endpoint deployment + items: + type: string + type: array + maxCount: 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 + MaxCount, the number of endpoint instances (pods) + to be used as the upper bound when autoscaling + format: int32 type: integer - value: + minCount: 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. + MinCount, the number of endpoint instances (pods) + to be used as the lower bound when autoscaling + format: int32 + type: integer + resources: + description: + Resources (optional) overrides the default resource + requirements for every endpoint pod + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + type: object + envVariablesOverride: + description: "huh" + type: object + properties: + core: + description: "List of environment variables to set in the Core statefulset container. Cannot be updated." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + externalPgSSLRequired: + description: + ExternalPgSSLRequired (optional) holds an optional boolean + to force ssl connections to the external Postgres DB + type: boolean + externalPgSSLSecret: + description: + ExternalPgSSLSecret (optional) holds an optional secret + with client key and cert used for connecting to external Postgres + DB + properties: + name: + description: + name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: + namespace defines the space within which the secret + name must be unique. type: string type: object - type: array - type: object - status: - description: Most recently observed status of the noobaa system. - properties: - accounts: - description: Accounts reports accounts info for the admin account - properties: - admin: - description: UserStatus is the status info of a user secret - properties: - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - required: - - secretRef - type: object - required: - - admin - type: object - actualImage: - description: ActualImage is set to report which image the operator - is using - type: string - beforeUpgradeDbImage: - description: BeforeUpgradeDbImage is the db image used before last - db upgrade - type: string - conditions: - description: Conditions is a list of conditions related to operator - reconciliation - items: - description: |- - Condition represents the state of the operator's - reconciliation functionality. + x-kubernetes-map-type: atomic + externalPgSSLUnauthorized: + description: + ExternalPgSSLUnauthorized (optional) holds an optional + boolean to allow unauthorized connections to external Postgres DB + type: boolean + externalPgSecret: + description: + ExternalPgSecret (optional) holds an optional secret + with a url to an extrenal Postgres DB to be used properties: - lastHeartbeatTime: - format: date-time - type: string - lastTransitionTime: - format: date-time - type: string - message: - type: string - reason: - type: string - status: + name: + description: + name is unique within a namespace to reference a + secret resource. type: string - type: - description: ConditionType is the state of the operator's reconciliation - functionality. + namespace: + description: + namespace defines the space within which the secret + name must be unique. type: string - required: - - status - - type type: object - type: array - endpoints: - description: |- - Endpoints reports the actual number of endpoints in the endpoint deployment - and the virtual hosts list used recognized by the endpoints - properties: - readyCount: - format: int32 - type: integer - virtualHosts: - items: - type: string - type: array - required: - - readyCount - - virtualHosts - type: object - lastKeyRotateTime: - description: LastKeyRotateTime is the time system ran an encryption - key rotate - format: date-time - type: string - observedGeneration: - description: |- - ObservedGeneration is the most recent generation observed for this noobaa system. - It corresponds to the CR generation, which is updated on mutation by the API Server. - format: int64 - type: integer - phase: - description: Phase is a simple, high-level summary of where the System - is in its lifecycle - type: string - postgresUpdatePhase: - description: Upgrade reports the status of the ongoing postgres upgrade - process - type: string - readme: - description: Readme is a user readable string with explanations on - the system - type: string - relatedObjects: - description: RelatedObjects is a list of objects related to this operator. - items: - description: ObjectReference contains enough information to let - you inspect or modify the referred object. + x-kubernetes-map-type: atomic + image: + description: + Image (optional) overrides the default image for the + server container + type: string + imagePullSecret: + description: + ImagePullSecret (optional) sets a pull secret for the + system image properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string name: + default: "" description: |- Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string + type: object + x-kubernetes-map-type: atomic + joinSecret: + description: |- + JoinSecret (optional) instructs the operator to join another cluster + and point to a secret that holds the join information + properties: + name: + description: + name is unique within a namespace to reference a + secret resource. + type: string namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + description: + namespace defines the space within which the secret + name must be unique. type: string - resourceVersion: - description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: object + x-kubernetes-map-type: atomic + labels: + additionalProperties: + additionalProperties: type: string - uid: + description: Labels are label for a given daemon + type: object + description: + The labels-related configuration to add/set on each Pod + related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + loadBalancerSourceSubnets: + description: |- + LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services + only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set + to true + properties: + s3: + description: + S3 is a list of subnets that will be allowed to access + the Noobaa S3 service + items: + type: string + type: array + sts: + description: + STS is a list of subnets that will be allowed to + access the Noobaa STS service + items: + type: string + type: array + type: object + logResources: + description: + LogResources (optional) overrides the default resource + requirements for the noobaa-log-processor container + properties: + claims: description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object type: object - x-kubernetes-map-type: atomic - type: array - services: - description: Services reports addresses for the services - properties: - serviceMgmt: - description: ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: + manualDefaultBackingStore: + description: |- + ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore + will not be reconciled by the operator and it should be manually handled by the user. It will allow the + user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and + update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore + nullable: true + type: boolean + pvPoolDefaultStorageClass: + description: |- + PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. + This affects where the system stores data chunks (encrypted). + Updates to this field will only affect new pv-pools, + but updates to existing pools are not supported by the operator. + type: string + region: + description: |- + Region (optional) provide a region for the location info + of the endpoints in the endpoint deployment + type: string + security: + description: Security represents security settings + properties: + kms: + description: + KeyManagementServiceSpec represent various details + of the KMS server + properties: + connectionDetails: + additionalProperties: + type: string + type: object + enableKeyRotation: + type: boolean + schedule: type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: + tokenSecretName: type: string - type: array - type: object - serviceS3: - description: ServiceStatus is the status info and network addresses - of a service + type: object + type: object + tolerations: + description: Tolerations (optional) passed through to noobaa's pods + items: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: + effect: description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: + 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: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: + 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: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: + 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: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array + 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 + status: + description: Most recently observed status of the noobaa system. + properties: + accounts: + description: Accounts reports accounts info for the admin account + properties: + admin: + description: UserStatus is the status info of a user secret + properties: + secretRef: + description: |- + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: + name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: + namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + required: + - secretRef + type: object + required: + - admin + type: object + actualImage: + description: + ActualImage is set to report which image the operator + is using + type: string + beforeUpgradeDbImage: + description: + BeforeUpgradeDbImage is the db image used before last + db upgrade + type: string + conditions: + description: + Conditions is a list of conditions related to operator + reconciliation + 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 - serviceSts: - description: ServiceStatus is the status info and network addresses - of a service + type: array + endpoints: + description: |- + Endpoints reports the actual number of endpoints in the endpoint deployment + and the virtual hosts list used recognized by the endpoints + properties: + readyCount: + format: int32 + type: integer + virtualHosts: + items: + type: string + type: array + required: + - readyCount + - virtualHosts + type: object + lastKeyRotateTime: + description: + LastKeyRotateTime is the time system ran an encryption + key rotate + format: date-time + type: string + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this noobaa system. + It corresponds to the CR generation, which is updated on mutation by the API Server. + format: int64 + type: integer + phase: + description: + Phase is a simple, high-level summary of where the System + is in its lifecycle + type: string + postgresUpdatePhase: + description: + Upgrade reports the status of the ongoing postgres upgrade + process + type: string + readme: + description: + Readme is a user readable string with explanations on + the system + type: string + relatedObjects: + description: RelatedObjects is a list of objects related to this operator. + items: + description: + ObjectReference contains enough information to let + you inspect or modify the referred object. properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: + apiVersion: + description: API version of the referent. + type: string + fieldPath: description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceSyslog: - description: ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + name: description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string type: object - required: - - serviceMgmt - - serviceS3 - type: object - upgradePhase: - description: Upgrade reports the status of the ongoing upgrade process - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + x-kubernetes-map-type: atomic + type: array + services: + description: Services reports addresses for the services + properties: + serviceMgmt: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceS3: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSts: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSyslog: + description: + ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: + ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: + InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + required: + - serviceMgmt + - serviceS3 + type: object + upgradePhase: + description: Upgrade reports the status of the ongoing upgrade process + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} ` const Sha256_deploy_crds_noobaa_io_v1alpha1_backingstore_cr_yaml = "84ca6f2a35a413e74a51375bd0ec31c33bb76a00de8e0ef8d02a7798e02ec460" From b0efd9aadb4a1bd09e5bf280322ab12aff6955e7 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Sun, 19 Jan 2025 00:30:27 +0100 Subject: [PATCH 5/7] Switch MergeEnvArray argument order for priority Signed-off-by: NoOverflow --- pkg/system/phase2_creating.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/system/phase2_creating.go b/pkg/system/phase2_creating.go index f1db85152..7cced7c50 100644 --- a/pkg/system/phase2_creating.go +++ b/pkg/system/phase2_creating.go @@ -479,7 +479,11 @@ func (r *Reconciler) setDesiredCoreEnv(c *corev1.Container) { } if r.NooBaa.Spec.EnvVariablesOverride != nil && r.NooBaa.Spec.EnvVariablesOverride.Core != nil { - util.MergeEnvArrays(&c.Env, &r.NooBaa.Spec.EnvVariablesOverride.Core); + // util.MergeEnvArrays will keep variables of the first array provided in + // arguments in case of a conflict, so we provide the override array first + // and then set the container Env array to the resulting merged array + util.MergeEnvArrays(&r.NooBaa.Spec.EnvVariablesOverride.Core, &c.Env); + c.Env = r.NooBaa.Spec.EnvVariablesOverride.Core; } } From ecd320f5f4aa552ff783090ea774abd3f5269f22 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Sun, 19 Jan 2025 02:35:49 +0100 Subject: [PATCH 6/7] Add EnvVariablesOverride field for endpoint deployment Signed-off-by: NoOverflow --- deploy/crds/noobaa.io_noobaas.yaml | 12 ++++++++++-- pkg/apis/noobaa/v1alpha1/noobaa_types.go | 3 +++ pkg/bundle/deploy.go | 14 +++++++++++--- pkg/system/phase2_creating.go | 16 ++++++++-------- pkg/system/phase4_configuring.go | 7 +++++++ 5 files changed, 39 insertions(+), 13 deletions(-) diff --git a/deploy/crds/noobaa.io_noobaas.yaml b/deploy/crds/noobaa.io_noobaas.yaml index 9f0fddf6c..2bd3d9aec 100644 --- a/deploy/crds/noobaa.io_noobaas.yaml +++ b/deploy/crds/noobaa.io_noobaas.yaml @@ -1644,11 +1644,19 @@ spec: type: object type: object envVariablesOverride: - description: "huh" + description: Override variables for all pods managed by NooBaa's operator type: object properties: core: - description: "List of environment variables to set in the Core statefulset container. Cannot be updated." + description: "List of environment variables to set in the Core statefulset containers." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + endpoint: + description: "List of environment variables to set in the Endpoint deployment containers." items: description: EnvVar represents an environment variable present in a Container. x-kubernetes-preserve-unknown-fields: true diff --git a/pkg/apis/noobaa/v1alpha1/noobaa_types.go b/pkg/apis/noobaa/v1alpha1/noobaa_types.go index ec84e5987..291c9c3c3 100644 --- a/pkg/apis/noobaa/v1alpha1/noobaa_types.go +++ b/pkg/apis/noobaa/v1alpha1/noobaa_types.go @@ -254,6 +254,9 @@ type AutoscalerSpec struct { type EnvVariablesOverrideSpec struct { // Variables override for core statefulset Core []corev1.EnvVar `json:"core,omitempty"` + + // Variables override for endpoint deployment + Endpoint []corev1.EnvVar `json:"endpoint,omitempty"` } diff --git a/pkg/bundle/deploy.go b/pkg/bundle/deploy.go index 864b3de4c..043e1a7ef 100644 --- a/pkg/bundle/deploy.go +++ b/pkg/bundle/deploy.go @@ -1423,7 +1423,7 @@ spec: status: {} ` -const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "c354dda7e40756f33fe9daf07a240e92b55ac9c537bdf51101e8fe0f47cefc7e" +const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "d159d72a783f65f4c9ff716fc2c2c7ba4983c36d73ad3ca3b29c87cfe3707767" const File_deploy_crds_noobaa_io_noobaas_yaml = `--- apiVersion: apiextensions.k8s.io/v1 @@ -3071,11 +3071,19 @@ spec: type: object type: object envVariablesOverride: - description: "huh" + description: Override variables for all pods managed by NooBaa's operator type: object properties: core: - description: "List of environment variables to set in the Core statefulset container. Cannot be updated." + description: "List of environment variables to set in the Core statefulset containers." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + endpoint: + description: "List of environment variables to set in the Endpoint deployment containers." items: description: EnvVar represents an environment variable present in a Container. x-kubernetes-preserve-unknown-fields: true diff --git a/pkg/system/phase2_creating.go b/pkg/system/phase2_creating.go index 7cced7c50..968457214 100644 --- a/pkg/system/phase2_creating.go +++ b/pkg/system/phase2_creating.go @@ -477,14 +477,6 @@ func (r *Reconciler) setDesiredCoreEnv(c *corev1.Container) { } util.MergeEnvArrays(&c.Env, &[]corev1.EnvVar{envVar}); } - - if r.NooBaa.Spec.EnvVariablesOverride != nil && r.NooBaa.Spec.EnvVariablesOverride.Core != nil { - // util.MergeEnvArrays will keep variables of the first array provided in - // arguments in case of a conflict, so we provide the override array first - // and then set the container Env array to the resulting merged array - util.MergeEnvArrays(&r.NooBaa.Spec.EnvVariablesOverride.Core, &c.Env); - c.Env = r.NooBaa.Spec.EnvVariablesOverride.Core; - } } // SetDesiredCoreApp updates the CoreApp as desired for reconciling @@ -623,6 +615,14 @@ func (r *Reconciler) SetDesiredCoreApp() error { util.MergeVolumeMountList(&c.VolumeMounts, &configMapVolumeMounts) } } + + if r.NooBaa.Spec.EnvVariablesOverride != nil && r.NooBaa.Spec.EnvVariablesOverride.Core != nil { + // util.MergeEnvArrays will keep variables of the first array provided in + // arguments in case of a conflict, so we provide the override array first + // and then set the container Env array to the resulting merged array + util.MergeEnvArrays(&r.NooBaa.Spec.EnvVariablesOverride.Core, &c.Env); + c.Env = r.NooBaa.Spec.EnvVariablesOverride.Core; + } } if r.NooBaa.Spec.ImagePullSecret == nil { podSpec.ImagePullSecrets = diff --git a/pkg/system/phase4_configuring.go b/pkg/system/phase4_configuring.go index 87062c6c9..2192ee429 100644 --- a/pkg/system/phase4_configuring.go +++ b/pkg/system/phase4_configuring.go @@ -440,6 +440,13 @@ func (r *Reconciler) SetDesiredDeploymentEndpoint() error { r.DeploymentEndpoint.Spec.Template.Annotations["noobaa.io/configmap-hash"] = r.CoreAppConfig.Annotations["noobaa.io/configmap-hash"] + if r.NooBaa.Spec.EnvVariablesOverride != nil && r.NooBaa.Spec.EnvVariablesOverride.Endpoint != nil { + // util.MergeEnvArrays will keep variables of the first array provided in + // arguments in case of a conflict, so we provide the override array first + // and then set the container Env array to the resulting merged array + util.MergeEnvArrays(&r.NooBaa.Spec.EnvVariablesOverride.Endpoint, &c.Env); + c.Env = r.NooBaa.Spec.EnvVariablesOverride.Endpoint; + } return r.setDesiredEndpointMounts(podSpec, c) } } From d35979b8fa3aea5d8f32988258f4fc08fb20c4f6 Mon Sep 17 00:00:00 2001 From: NoOverflow Date: Mon, 20 Jan 2025 00:55:03 +0100 Subject: [PATCH 7/7] Reformat NooBaa's CRD to previous YAML formatting Signed-off-by: NoOverflow --- deploy/crds/noobaa.io_noobaas.yaml | 4260 ++++++++++++++------------- pkg/bundle/deploy.go | 4268 ++++++++++++++-------------- 2 files changed, 4154 insertions(+), 4374 deletions(-) diff --git a/deploy/crds/noobaa.io_noobaas.yaml b/deploy/crds/noobaa.io_noobaas.yaml index 2bd3d9aec..710757aaa 100644 --- a/deploy/crds/noobaa.io_noobaas.yaml +++ b/deploy/crds/noobaa.io_noobaas.yaml @@ -12,2323 +12,2213 @@ spec: listKind: NooBaaList plural: noobaas shortNames: - - nb + - nb singular: noobaa scope: Namespaced versions: - - additionalPrinterColumns: - - description: S3 Endpoints - jsonPath: .status.services.serviceS3.nodePorts - name: S3-Endpoints - type: string - - description: STS Endpoints - jsonPath: .status.services.serviceSts.nodePorts - name: Sts-Endpoints - type: string - - description: Syslog Endpoints - jsonPath: .status.services.serviceSyslog.nodePorts - name: Syslog-Endpoints - type: string - - description: Actual Image - jsonPath: .status.actualImage - name: Image - type: string - - description: Phase - jsonPath: .status.phase - name: Phase - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: NooBaa is the Schema for the NooBaas API - 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: Specification of the desired behavior of the noobaa system. - properties: - affinity: - description: Affinity (optional) passed through to noobaa's pods - properties: - nodeAffinity: - description: - Describes node affinity scheduling rules for the - pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: + - additionalPrinterColumns: + - description: S3 Endpoints + jsonPath: .status.services.serviceS3.nodePorts + name: S3-Endpoints + type: string + - description: STS Endpoints + jsonPath: .status.services.serviceSts.nodePorts + name: Sts-Endpoints + type: string + - description: Syslog Endpoints + jsonPath: .status.services.serviceSyslog.nodePorts + name: Syslog-Endpoints + type: string + - description: Actual Image + jsonPath: .status.actualImage + name: Image + type: string + - description: Phase + jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: NooBaa is the Schema for the NooBaas API + 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: Specification of the desired behavior of the noobaa system. + properties: + affinity: + description: Affinity (optional) passed through to noobaa's pods + 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: |- - 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. + 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 - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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 - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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. + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic + 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: - 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: + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchFields: - description: - A list of node selector requirements - by node's fields. - items: + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string 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: + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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: - - nodeSelectorTerms + - podAffinityTerm + - weight 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: + type: array + x-kubernetes-list-type: atomic + 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: |- - 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: + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: + type: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: 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. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - 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: + 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 + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string 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: + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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: array - x-kubernetes-list-type: atomic - 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: 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 + x-kubernetes-list-type: atomic + 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 - type: array - x-kubernetes-list-type: atomic - 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: + required: - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - 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: + 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 + x-kubernetes-list-type: atomic + 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: |- - 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: + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: + type: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: 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. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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. + 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 - required: - - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - annotations: - additionalProperties: - additionalProperties: - type: string - description: Annotations are annotation for a given daemon + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic type: object - description: - The annotations-related configuration to add/set on each - Pod related object. - nullable: true + type: object + annotations: + additionalProperties: + additionalProperties: + type: string + description: Annotations are annotation for a given daemon type: object - x-kubernetes-preserve-unknown-fields: true - autoscaler: - description: Configuration related to autoscaling - properties: - autoscalerType: - description: - Type of autoscaling (optional) for noobaa-endpoint, - hpav2(default) and keda - Prometheus metrics based - enum: - - hpav2 - - keda - type: string - prometheusNamespace: - description: Prometheus namespace that scrap metrics from noobaa - type: string - type: object - bucketLogging: - description: BucketLogging sets the configuration for bucket logging - properties: - bucketLoggingPVC: - description: |- - BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support - ReadWriteMany (RWX) access mode to ensure reliable logging. - For ODF: If not provided, the default CephFS storage class will be used to create the PVC. - type: string - loggingType: - description: |- - LoggingType specifies the type of logging for the bucket - There are two types available: best-effort and guaranteed logging - - best-effort(default) - less immune to failures but with better performance - - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs - type: string - type: object - bucketNotifications: - description: - BucketNotifications (optional) controls bucket notification - options - properties: - connections: + description: The annotations-related configuration to add/set on each + Pod related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + autoscaler: + description: Configuration related to autoscaling + properties: + autoscalerType: + description: Type of autoscaling (optional) for noobaa-endpoint, + hpav2(default) and keda - Prometheus metrics based + enum: + - hpav2 + - keda + type: string + prometheusNamespace: + description: Prometheus namespace that scrap metrics from noobaa + type: string + type: object + bucketLogging: + description: BucketLogging sets the configuration for bucket logging + properties: + bucketLoggingPVC: + description: |- + BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support + ReadWriteMany (RWX) access mode to ensure reliable logging. + For ODF: If not provided, the default CephFS storage class will be used to create the PVC. + type: string + loggingType: + description: |- + LoggingType specifies the type of logging for the bucket + There are two types available: best-effort and guaranteed logging + - best-effort(default) - less immune to failures but with better performance + - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs + type: string + type: object + bucketNotifications: + description: BucketNotifications (optional) controls bucket notification + options + properties: + connections: + description: |- + Connections - A list of secrets' names that are used by the notifications configrations + (in the TopicArn field). + items: description: |- - Connections - A list of secrets' names that are used by the notifications configrations - (in the TopicArn field). - items: + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which the + secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + type: array + enabled: + description: Enabled - whether bucket notifications is enabled + type: boolean + pvc: + description: |- + PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for holding pending notifications files. + For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. + type: string + required: + - enabled + type: object + cleanupPolicy: + description: CleanupPolicy (optional) Indicates user's policy for + deletion + properties: + allowNoobaaDeletion: + type: boolean + confirmation: + description: CleanupConfirmationProperty is a string that specifies + cleanup confirmation + type: string + type: object + coreResources: + description: CoreResources (optional) overrides the default resource + requirements for the server container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbConf: + description: DBConf (optional) overrides the default postgresql db + config + type: string + dbImage: + description: DBImage (optional) overrides the default image for the + db container + type: string + dbResources: + description: DBResources (optional) overrides the default resource + requirements for the db container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbStorageClass: + description: |- + DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. + For the time being this field is immutable and can only be set on system creation. + This affects where the system stores its database which contains system config, + buckets, objects meta-data and mapping file parts to storage locations. + type: string + dbType: + description: |- + DBType (optional) overrides the default type image for the db container. + The only possible value is postgres + enum: + - postgres + type: string + dbVolumeResources: + description: |- + DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. + For the time being this field is immutable and can only be set on system creation. + This is because volume size updates are only supported for increasing the size, + and only if the storage class specifies `allowVolumeExpansion: true`, + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + debugLevel: + description: DebugLevel (optional) sets the debug level + enum: + - all + - nsfs + - warn + - default_level + type: integer + defaultBackingStoreSpec: + description: 'Deprecated: DefaultBackingStoreSpec is not supported + anymore, use ManualDefaultBackingStore instead.' + properties: + awsS3: + description: AWSS3Spec specifies a backing store of type aws-s3 + properties: + awsSTSRoleARN: + description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity + type: string + region: + description: Region is the AWS region + type: string + secret: description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY properties: name: - description: - name is unique within a namespace to reference + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: - namespace defines the space within which the - secret name must be unique. + description: namespace defines the space within which + the secret name must be unique. type: string type: object x-kubernetes-map-type: atomic - type: array - enabled: - description: Enabled - whether bucket notifications is enabled - type: boolean - pvc: - description: |- - PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for holding pending notifications files. - For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. - type: string - required: - - enabled - type: object - cleanupPolicy: - description: - CleanupPolicy (optional) Indicates user's policy for - deletion - properties: - allowNoobaaDeletion: - type: boolean - confirmation: - description: - CleanupConfirmationProperty is a string that specifies - cleanup confirmation - type: string - type: object - coreResources: - description: - CoreResources (optional) overrides the default resource - requirements for the server container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + sslDisabled: + description: SSLDisabled allows to disable SSL and use plain + http + type: boolean + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - targetBucket + type: object + azureBlob: + description: AzureBlob specifies a backing store of type azure-blob + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AccountName and AccountKey as provided by Azure Blob. 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. + description: name is unique within a namespace to reference + a secret resource. type: string - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + namespace: + description: namespace defines the space within which + the secret name must be unique. 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbConf: - description: - DBConf (optional) overrides the default postgresql db - config - type: string - dbImage: - description: - DBImage (optional) overrides the default image for the - db container - type: string - dbResources: - description: - DBResources (optional) overrides the default resource - requirements for the db container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + x-kubernetes-map-type: atomic + targetBlobContainer: + description: TargetBlobContainer is the name of the target + Azure Blob container + type: string + required: + - secret + - targetBlobContainer + type: object + googleCloudStorage: + description: GoogleCloudStorage specifies a backing store of type + google-cloud-storage + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. 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. + description: name is unique within a namespace to reference + a secret resource. type: string - request: + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - secret + - targetBucket + type: object + ibmCos: + description: IBMCos specifies a backing store of type ibm-cos + properties: + endpoint: + description: 'Endpoint is the IBM COS compatible endpoint: + http(s)://host:port' + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: TargetBucket is the name of the target IBM COS + bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + pvPool: + description: PVPool specifies a backing store of type pv-pool + properties: + numVolumes: + description: NumVolumes is the number of volumes to allocate + type: integer + resources: + description: VolumeResources represents the minimum resources + each volume should have. + properties: + 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: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + secret: + description: |- + Secret refers to a secret that provides the agent configuration + The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. type: string - required: - - name type: object - type: array - x-kubernetes-list-map-keys: + x-kubernetes-map-type: atomic + storageClass: + description: StorageClass is the name of the storage class + to use for the PV's + type: string + required: + - numVolumes + type: object + s3Compatible: + description: S3Compatible specifies a backing store of type s3-compatible + properties: + endpoint: + description: 'Endpoint is the S3 compatible endpoint: http(s)://host:port' + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + type: + description: Type is an enum of supported types + type: string + required: + - type + type: object + denyHTTP: + description: DenyHTTP (optional) if given will deny access to the + NooBaa S3 service using HTTP (only HTTPS) + type: boolean + disableLoadBalancerService: + description: DisableLoadBalancerService (optional) sets the service + type to ClusterIP instead of LoadBalancer + nullable: true + type: boolean + endpoints: + description: |- + Endpoints (optional) sets configuration info for the noobaa endpoint + deployment. + properties: + additionalVirtualHosts: + description: |- + AdditionalVirtualHosts (optional) provide a list of additional hostnames + (on top of the builtin names defined by the cluster: service name, elb name, route name) + to be used as virtual hosts by the the endpoints in the endpoint deployment + items: + type: string + type: array + maxCount: + description: |- + MaxCount, the number of endpoint instances (pods) + to be used as the upper bound when autoscaling + format: int32 + type: integer + minCount: + description: |- + MinCount, the number of endpoint instances (pods) + to be used as the lower bound when autoscaling + format: int32 + type: integer + resources: + description: Resources (optional) overrides the default resource + requirements for every endpoint pod + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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: + 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: |- - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbStorageClass: - description: |- - DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. - For the time being this field is immutable and can only be set on system creation. - This affects where the system stores its database which contains system config, - buckets, objects meta-data and mapping file parts to storage locations. - type: string - dbType: - description: |- - DBType (optional) overrides the default type image for the db container. - The only possible value is postgres - enum: - - postgres - type: string - dbVolumeResources: - description: |- - DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. - For the time being this field is immutable and can only be set on system creation. - This is because volume size updates are only supported for increasing the size, - and only if the storage class specifies `allowVolumeExpansion: true`, - properties: - limits: - additionalProperties: - anyOf: + 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: |- - Limits describes the maximum amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + type: object + envVariablesOverride: + description: Override variables for all pods managed by NooBaa's operator + type: object + properties: + core: + description: List of environment variables to set in the Core statefulset containers. + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + x-kubernetes-preserve-unknown-fields: true + type: array + endpoint: + description: List of environment variables to set in the Endpoint deployment containers. + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true type: object + x-kubernetes-preserve-unknown-fields: true + type: array + externalPgSSLRequired: + description: ExternalPgSSLRequired (optional) holds an optional boolean + to force ssl connections to the external Postgres DB + type: boolean + externalPgSSLSecret: + description: ExternalPgSSLSecret (optional) holds an optional secret + with client key and cert used for connecting to external Postgres + DB + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + externalPgSSLUnauthorized: + description: ExternalPgSSLUnauthorized (optional) holds an optional + boolean to allow unauthorized connections to external Postgres DB + type: boolean + externalPgSecret: + description: ExternalPgSecret (optional) holds an optional secret + with a url to an extrenal Postgres DB to be used + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + image: + description: Image (optional) overrides the default image for the + server container + type: string + imagePullSecret: + description: ImagePullSecret (optional) sets a pull secret for the + system image + properties: + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + type: object + x-kubernetes-map-type: atomic + joinSecret: + description: |- + JoinSecret (optional) instructs the operator to join another cluster + and point to a secret that holds the join information + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + labels: + additionalProperties: + additionalProperties: + type: string + description: Labels are label for a given daemon type: object - debugLevel: - description: DebugLevel (optional) sets the debug level - enum: - - all - - nsfs - - warn - - default_level - type: integer - defaultBackingStoreSpec: - description: - "Deprecated: DefaultBackingStoreSpec is not supported - anymore, use ManualDefaultBackingStore instead." - properties: - awsS3: - description: AWSS3Spec specifies a backing store of type aws-s3 - properties: - awsSTSRoleARN: - description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity - type: string - region: - description: Region is the AWS region - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - sslDisabled: - description: - SSLDisabled allows to disable SSL and use plain - http - type: boolean - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - targetBucket - type: object - azureBlob: - description: AzureBlob specifies a backing store of type azure-blob - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AccountName and AccountKey as provided by Azure Blob. - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - targetBlobContainer: - description: - TargetBlobContainer is the name of the target - Azure Blob container - type: string - required: - - secret - - targetBlobContainer - type: object - googleCloudStorage: - description: - GoogleCloudStorage specifies a backing store of type - google-cloud-storage - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - secret - - targetBucket - type: object - ibmCos: - description: IBMCos specifies a backing store of type ibm-cos - properties: - endpoint: - description: - "Endpoint is the IBM COS compatible endpoint: - http(s)://host:port" - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: - SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: - TargetBucket is the name of the target IBM COS - bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - pvPool: - description: PVPool specifies a backing store of type pv-pool - properties: - numVolumes: - description: NumVolumes is the number of volumes to allocate - type: integer - resources: - description: - VolumeResources represents the minimum resources - each volume should have. - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - secret: - description: |- - Secret refers to a secret that provides the agent configuration - The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - storageClass: - description: - StorageClass is the name of the storage class - to use for the PV's - type: string - required: - - numVolumes - type: object - s3Compatible: - description: S3Compatible specifies a backing store of type s3-compatible + description: The labels-related configuration to add/set on each Pod + related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + loadBalancerSourceSubnets: + description: |- + LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services + only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set + to true + properties: + s3: + description: S3 is a list of subnets that will be allowed to access + the Noobaa S3 service + items: + type: string + type: array + sts: + description: STS is a list of subnets that will be allowed to + access the Noobaa STS service + items: + type: string + type: array + type: object + logResources: + description: LogResources (optional) overrides the default resource + requirements for the noobaa-log-processor container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: - endpoint: - description: "Endpoint is the S3 compatible endpoint: http(s)://host:port" - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: - SignatureVersion specifies the client signature - version to use when signing requests. + 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 - targetBucket: - description: TargetBucket is the name of the target S3 bucket + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string required: - - endpoint - - secret - - targetBucket + - name type: object - type: - description: Type is an enum of supported types - type: string - required: - - type - type: object - denyHTTP: - description: - DenyHTTP (optional) if given will deny access to the - NooBaa S3 service using HTTP (only HTTPS) - type: boolean - disableLoadBalancerService: - description: - DisableLoadBalancerService (optional) sets the service - type to ClusterIP instead of LoadBalancer - nullable: true - type: boolean - endpoints: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + manualDefaultBackingStore: + description: |- + ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore + will not be reconciled by the operator and it should be manually handled by the user. It will allow the + user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and + update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore + nullable: true + type: boolean + pvPoolDefaultStorageClass: + description: |- + PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. + This affects where the system stores data chunks (encrypted). + Updates to this field will only affect new pv-pools, + but updates to existing pools are not supported by the operator. + type: string + region: + description: |- + Region (optional) provide a region for the location info + of the endpoints in the endpoint deployment + type: string + security: + description: Security represents security settings + properties: + kms: + description: KeyManagementServiceSpec represent various details + of the KMS server + properties: + connectionDetails: + additionalProperties: + type: string + type: object + enableKeyRotation: + type: boolean + schedule: + type: string + tokenSecretName: + type: string + type: object + type: object + tolerations: + description: Tolerations (optional) passed through to noobaa's pods + items: description: |- - Endpoints (optional) sets configuration info for the noobaa endpoint - deployment. + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: - additionalVirtualHosts: + effect: description: |- - AdditionalVirtualHosts (optional) provide a list of additional hostnames - (on top of the builtin names defined by the cluster: service name, elb name, route name) - to be used as virtual hosts by the the endpoints in the endpoint deployment - items: - type: string - type: array - maxCount: + 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: |- - MaxCount, the number of endpoint instances (pods) - to be used as the upper bound when autoscaling - format: int32 - type: integer - minCount: + 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: |- - MinCount, the number of endpoint instances (pods) - to be used as the lower bound when autoscaling - format: int32 + 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 - resources: - description: - Resources (optional) overrides the default resource - requirements for every endpoint pod - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - type: object - envVariablesOverride: - description: Override variables for all pods managed by NooBaa's operator + 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 - properties: - core: - description: "List of environment variables to set in the Core statefulset containers." - items: - description: EnvVar represents an environment variable present in a Container. - x-kubernetes-preserve-unknown-fields: true - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - endpoint: - description: "List of environment variables to set in the Endpoint deployment containers." - items: - description: EnvVar represents an environment variable present in a Container. - x-kubernetes-preserve-unknown-fields: true + type: array + type: object + status: + description: Most recently observed status of the noobaa system. + properties: + accounts: + description: Accounts reports accounts info for the admin account + properties: + admin: + description: UserStatus is the status info of a user secret + properties: + secretRef: + description: |- + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string type: object - x-kubernetes-preserve-unknown-fields: true - type: array - externalPgSSLRequired: - description: - ExternalPgSSLRequired (optional) holds an optional boolean - to force ssl connections to the external Postgres DB - type: boolean - externalPgSSLSecret: - description: - ExternalPgSSLSecret (optional) holds an optional secret - with client key and cert used for connecting to external Postgres - DB + x-kubernetes-map-type: atomic + required: + - secretRef + type: object + required: + - admin + type: object + actualImage: + description: ActualImage is set to report which image the operator + is using + type: string + beforeUpgradeDbImage: + description: BeforeUpgradeDbImage is the db image used before last + db upgrade + type: string + conditions: + description: Conditions is a list of conditions related to operator + reconciliation + items: + description: |- + Condition represents the state of the operator's + reconciliation functionality. properties: - name: - description: - name is unique within a namespace to reference a - secret resource. + lastHeartbeatTime: + format: date-time type: string - namespace: - description: - namespace defines the space within which the secret - name must be unique. + lastTransitionTime: + format: date-time type: string - type: object - x-kubernetes-map-type: atomic - externalPgSSLUnauthorized: - description: - ExternalPgSSLUnauthorized (optional) holds an optional - boolean to allow unauthorized connections to external Postgres DB - type: boolean - externalPgSecret: - description: - ExternalPgSecret (optional) holds an optional secret - with a url to an extrenal Postgres DB to be used - properties: - name: - description: - name is unique within a namespace to reference a - secret resource. + message: type: string - namespace: - description: - namespace defines the space within which the secret - name must be unique. + 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 - x-kubernetes-map-type: atomic - image: - description: - Image (optional) overrides the default image for the - server container - type: string - imagePullSecret: - description: - ImagePullSecret (optional) sets a pull secret for the - system image + type: array + endpoints: + description: |- + Endpoints reports the actual number of endpoints in the endpoint deployment + and the virtual hosts list used recognized by the endpoints + properties: + readyCount: + format: int32 + type: integer + virtualHosts: + items: + type: string + type: array + required: + - readyCount + - virtualHosts + type: object + lastKeyRotateTime: + description: LastKeyRotateTime is the time system ran an encryption + key rotate + format: date-time + type: string + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this noobaa system. + It corresponds to the CR generation, which is updated on mutation by the API Server. + format: int64 + type: integer + phase: + description: Phase is a simple, high-level summary of where the System + is in its lifecycle + type: string + postgresUpdatePhase: + description: Upgrade reports the status of the ongoing postgres upgrade + process + type: string + readme: + description: Readme is a user readable string with explanations on + the system + type: string + relatedObjects: + description: RelatedObjects is a list of objects related to this operator. + items: + description: ObjectReference contains enough information to let + you inspect or modify the referred object. properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string name: - default: "" description: |- Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string - type: object - x-kubernetes-map-type: atomic - joinSecret: - description: |- - JoinSecret (optional) instructs the operator to join another cluster - and point to a secret that holds the join information - properties: - name: - description: - name is unique within a namespace to reference a - secret resource. - type: string namespace: - description: - namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - labels: - additionalProperties: - additionalProperties: - type: string - description: Labels are label for a given daemon - type: object - description: - The labels-related configuration to add/set on each Pod - related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - loadBalancerSourceSubnets: - description: |- - LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services - only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set - to true - properties: - s3: - description: - S3 is a list of subnets that will be allowed to access - the Noobaa S3 service - items: - type: string - type: array - sts: - description: - STS is a list of subnets that will be allowed to - access the Noobaa STS service - items: - type: string - type: array - type: object - logResources: - description: - LogResources (optional) overrides the default resource - requirements for the noobaa-log-processor container - properties: - claims: description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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 + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: 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 + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - manualDefaultBackingStore: - description: |- - ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore - will not be reconciled by the operator and it should be manually handled by the user. It will allow the - user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and - update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore - nullable: true - type: boolean - pvPoolDefaultStorageClass: - description: |- - PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. - This affects where the system stores data chunks (encrypted). - Updates to this field will only affect new pv-pools, - but updates to existing pools are not supported by the operator. - type: string - region: - description: |- - Region (optional) provide a region for the location info - of the endpoints in the endpoint deployment - type: string - security: - description: Security represents security settings - properties: - kms: - description: - KeyManagementServiceSpec represent various details - of the KMS server - properties: - connectionDetails: - additionalProperties: - type: string - type: object - enableKeyRotation: - type: boolean - schedule: - type: string - tokenSecretName: - type: string - type: object + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string type: object - tolerations: - description: Tolerations (optional) passed through to noobaa's pods - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . + x-kubernetes-map-type: atomic + type: array + services: + description: Services reports addresses for the services + properties: + serviceMgmt: + description: ServiceStatus is the status info and network addresses + of a service 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: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: 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: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: 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: + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: 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: + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: 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 + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - type: array - type: object - status: - description: Most recently observed status of the noobaa system. - properties: - accounts: - description: Accounts reports accounts info for the admin account - properties: - admin: - description: UserStatus is the status info of a user secret - properties: - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - required: - - secretRef - type: object - required: - - admin - type: object - actualImage: - description: - ActualImage is set to report which image the operator - is using - type: string - beforeUpgradeDbImage: - description: - BeforeUpgradeDbImage is the db image used before last - db upgrade - type: string - conditions: - description: - Conditions is a list of conditions related to operator - reconciliation - items: - description: |- - Condition represents the state of the operator's - reconciliation functionality. + serviceS3: + description: ServiceStatus is the status info and network addresses + of a service 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 + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - type: array - endpoints: - description: |- - Endpoints reports the actual number of endpoints in the endpoint deployment - and the virtual hosts list used recognized by the endpoints - properties: - readyCount: - format: int32 - type: integer - virtualHosts: - items: - type: string - type: array - required: - - readyCount - - virtualHosts - type: object - lastKeyRotateTime: - description: - LastKeyRotateTime is the time system ran an encryption - key rotate - format: date-time - type: string - observedGeneration: - description: |- - ObservedGeneration is the most recent generation observed for this noobaa system. - It corresponds to the CR generation, which is updated on mutation by the API Server. - format: int64 - type: integer - phase: - description: - Phase is a simple, high-level summary of where the System - is in its lifecycle - type: string - postgresUpdatePhase: - description: - Upgrade reports the status of the ongoing postgres upgrade - process - type: string - readme: - description: - Readme is a user readable string with explanations on - the system - type: string - relatedObjects: - description: RelatedObjects is a list of objects related to this operator. - items: - description: - ObjectReference contains enough information to let - you inspect or modify the referred object. + serviceSts: + description: ServiceStatus is the status info and network addresses + of a service properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - type: string - kind: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSyslog: + description: ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - x-kubernetes-map-type: atomic - type: array - services: - description: Services reports addresses for the services - properties: - serviceMgmt: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceS3: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceSts: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceSyslog: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - required: - - serviceMgmt - - serviceS3 - type: object - upgradePhase: - description: Upgrade reports the status of the ongoing upgrade process - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + required: + - serviceMgmt + - serviceS3 + type: object + upgradePhase: + description: Upgrade reports the status of the ongoing upgrade process + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/pkg/bundle/deploy.go b/pkg/bundle/deploy.go index 043e1a7ef..3104a7dd1 100644 --- a/pkg/bundle/deploy.go +++ b/pkg/bundle/deploy.go @@ -1423,7 +1423,7 @@ spec: status: {} ` -const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "d159d72a783f65f4c9ff716fc2c2c7ba4983c36d73ad3ca3b29c87cfe3707767" +const Sha256_deploy_crds_noobaa_io_noobaas_yaml = "db1c4c18af61b965669cff3e76227bbcbd8519ea9a9fdd41ad39fdc318806110" const File_deploy_crds_noobaa_io_noobaas_yaml = `--- apiVersion: apiextensions.k8s.io/v1 @@ -1439,2326 +1439,2216 @@ spec: listKind: NooBaaList plural: noobaas shortNames: - - nb + - nb singular: noobaa scope: Namespaced versions: - - additionalPrinterColumns: - - description: S3 Endpoints - jsonPath: .status.services.serviceS3.nodePorts - name: S3-Endpoints - type: string - - description: STS Endpoints - jsonPath: .status.services.serviceSts.nodePorts - name: Sts-Endpoints - type: string - - description: Syslog Endpoints - jsonPath: .status.services.serviceSyslog.nodePorts - name: Syslog-Endpoints - type: string - - description: Actual Image - jsonPath: .status.actualImage - name: Image - type: string - - description: Phase - jsonPath: .status.phase - name: Phase - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: NooBaa is the Schema for the NooBaas API - 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: Specification of the desired behavior of the noobaa system. - properties: - affinity: - description: Affinity (optional) passed through to noobaa's pods - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - requiredDuringSchedulingIgnoredDuringExecution: + - additionalPrinterColumns: + - description: S3 Endpoints + jsonPath: .status.services.serviceS3.nodePorts + name: S3-Endpoints + type: string + - description: STS Endpoints + jsonPath: .status.services.serviceSts.nodePorts + name: Sts-Endpoints + type: string + - description: Syslog Endpoints + jsonPath: .status.services.serviceSyslog.nodePorts + name: Syslog-Endpoints + type: string + - description: Actual Image + jsonPath: .status.actualImage + name: Image + type: string + - description: Phase + jsonPath: .status.phase + name: Phase + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: NooBaa is the Schema for the NooBaas API + 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: Specification of the desired behavior of the noobaa system. + properties: + affinity: + description: Affinity (optional) passed through to noobaa's pods + 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: |- - 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. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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. + 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 - operator: - description: |- - Represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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: - - nodeSelectorTerms + - preference + - weight 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: + type: array + x-kubernetes-list-type: atomic + 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 label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator type: object - x-kubernetes-map-type: atomic - matchLabelKeys: + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator 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 - x-kubernetes-list-type: atomic - 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - 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: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string 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: + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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: array - x-kubernetes-list-type: atomic - 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: 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 + x-kubernetes-list-type: atomic + 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 - type: array - x-kubernetes-list-type: atomic - 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: + required: - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - 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: + 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 + x-kubernetes-list-type: atomic + 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: |- - 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: + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: description: |- - A label query over a set of resources, in this case pods. - If it's null, this PodAffinityTerm matches with no Pods. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator type: object - x-kubernetes-map-type: atomic - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: + type: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + items: 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. + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + 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: - 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 - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object + type: string type: array x-kubernetes-list-type: atomic - 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 + required: + - key + - operator 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 - x-kubernetes-list-type: atomic - 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: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: 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 - x-kubernetes-list-type: atomic - 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. - If it's null, this PodAffinityTerm matches with no Pods. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - 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: + 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 + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator - type: object - type: array - x-kubernetes-list-type: atomic - 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 - matchLabelKeys: - description: |- - MatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both matchLabelKeys and labelSelector. - Also, matchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - mismatchLabelKeys: - description: |- - MismatchLabelKeys is a set of pod label keys to select which pods will - be taken into consideration. The keys are used to lookup values from the - incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` - to select the group of existing pods which pods will be taken into consideration - for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming - pod labels will be ignored. The default value is empty. - The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. - Also, mismatchLabelKeys cannot be set when labelSelector isn't set. - This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). - items: - type: string - type: array - x-kubernetes-list-type: atomic - namespaceSelector: - description: |- - A label query over the set of namespaces that the term applies to. - The term is applied to the union of the namespaces selected by this field - and the ones listed in the namespaces field. - null selector and null or empty namespaces list means "this pod's namespace". - An empty selector ({}) matches all namespaces. - properties: - matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string 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: + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 - type: array - x-kubernetes-list-type: atomic - required: + 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 + x-kubernetes-list-type: atomic + required: - key - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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: array - x-kubernetes-list-type: atomic - 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: 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 + x-kubernetes-list-type: atomic + 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 - type: array - x-kubernetes-list-type: atomic - 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: + required: - topologyKey - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - annotations: - additionalProperties: - additionalProperties: - type: string - description: Annotations are annotation for a given daemon + 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 + x-kubernetes-list-type: atomic + 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. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are ANDed. + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key in (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with ` + "`" + `labelSelector` + "`" + ` as ` + "`" + `key notin (value)` + "`" + ` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + 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 + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic + 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 + x-kubernetes-list-type: atomic type: object - description: - The annotations-related configuration to add/set on each - Pod related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - autoscaler: - description: Configuration related to autoscaling - properties: - autoscalerType: - description: - Type of autoscaling (optional) for noobaa-endpoint, - hpav2(default) and keda - Prometheus metrics based - enum: - - hpav2 - - keda - type: string - prometheusNamespace: - description: Prometheus namespace that scrap metrics from noobaa - type: string - type: object - bucketLogging: - description: BucketLogging sets the configuration for bucket logging - properties: - bucketLoggingPVC: - description: |- - BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support - ReadWriteMany (RWX) access mode to ensure reliable logging. - For ODF: If not provided, the default CephFS storage class will be used to create the PVC. - type: string - loggingType: - description: |- - LoggingType specifies the type of logging for the bucket - There are two types available: best-effort and guaranteed logging - - best-effort(default) - less immune to failures but with better performance - - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs - type: string + type: object + annotations: + additionalProperties: + additionalProperties: + type: string + description: Annotations are annotation for a given daemon type: object - bucketNotifications: - description: - BucketNotifications (optional) controls bucket notification - options - properties: - connections: + description: The annotations-related configuration to add/set on each + Pod related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + autoscaler: + description: Configuration related to autoscaling + properties: + autoscalerType: + description: Type of autoscaling (optional) for noobaa-endpoint, + hpav2(default) and keda - Prometheus metrics based + enum: + - hpav2 + - keda + type: string + prometheusNamespace: + description: Prometheus namespace that scrap metrics from noobaa + type: string + type: object + bucketLogging: + description: BucketLogging sets the configuration for bucket logging + properties: + bucketLoggingPVC: + description: |- + BucketLoggingPVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for guaranteed logging when the logging type is set to 'guaranteed'. The PVC must support + ReadWriteMany (RWX) access mode to ensure reliable logging. + For ODF: If not provided, the default CephFS storage class will be used to create the PVC. + type: string + loggingType: + description: |- + LoggingType specifies the type of logging for the bucket + There are two types available: best-effort and guaranteed logging + - best-effort(default) - less immune to failures but with better performance + - guaranteed - much more reliable but need to provide a storage class that supports RWX PVs + type: string + type: object + bucketNotifications: + description: BucketNotifications (optional) controls bucket notification + options + properties: + connections: + description: |- + Connections - A list of secrets' names that are used by the notifications configrations + (in the TopicArn field). + items: description: |- - Connections - A list of secrets' names that are used by the notifications configrations - (in the TopicArn field). - items: + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which the + secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + type: array + enabled: + description: Enabled - whether bucket notifications is enabled + type: boolean + pvc: + description: |- + PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used + for holding pending notifications files. + For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. + type: string + required: + - enabled + type: object + cleanupPolicy: + description: CleanupPolicy (optional) Indicates user's policy for + deletion + properties: + allowNoobaaDeletion: + type: boolean + confirmation: + description: CleanupConfirmationProperty is a string that specifies + cleanup confirmation + type: string + type: object + coreResources: + description: CoreResources (optional) overrides the default resource + requirements for the server container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbConf: + description: DBConf (optional) overrides the default postgresql db + config + type: string + dbImage: + description: DBImage (optional) overrides the default image for the + db container + type: string + dbResources: + description: DBResources (optional) overrides the default resource + requirements for the db container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + 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 + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + dbStorageClass: + description: |- + DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. + For the time being this field is immutable and can only be set on system creation. + This affects where the system stores its database which contains system config, + buckets, objects meta-data and mapping file parts to storage locations. + type: string + dbType: + description: |- + DBType (optional) overrides the default type image for the db container. + The only possible value is postgres + enum: + - postgres + type: string + dbVolumeResources: + description: |- + DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. + For the time being this field is immutable and can only be set on system creation. + This is because volume size updates are only supported for increasing the size, + and only if the storage class specifies ` + "`" + `allowVolumeExpansion: true` + "`" + `, + properties: + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + debugLevel: + description: DebugLevel (optional) sets the debug level + enum: + - all + - nsfs + - warn + - default_level + type: integer + defaultBackingStoreSpec: + description: 'Deprecated: DefaultBackingStoreSpec is not supported + anymore, use ManualDefaultBackingStore instead.' + properties: + awsS3: + description: AWSS3Spec specifies a backing store of type aws-s3 + properties: + awsSTSRoleARN: + description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity + type: string + region: + description: Region is the AWS region + type: string + secret: description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY properties: name: - description: - name is unique within a namespace to reference + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: - namespace defines the space within which the - secret name must be unique. + description: namespace defines the space within which + the secret name must be unique. type: string type: object x-kubernetes-map-type: atomic - type: array - enabled: - description: Enabled - whether bucket notifications is enabled - type: boolean - pvc: - description: |- - PVC (optional) specifies the name of the Persistent Volume Claim (PVC) to be used - for holding pending notifications files. - For ODF - If not provided, the default CepthFS storage class will be used to create the PVC. - type: string - required: - - enabled - type: object - cleanupPolicy: - description: - CleanupPolicy (optional) Indicates user's policy for - deletion - properties: - allowNoobaaDeletion: - type: boolean - confirmation: - description: - CleanupConfirmationProperty is a string that specifies - cleanup confirmation - type: string - type: object - coreResources: - description: - CoreResources (optional) overrides the default resource - requirements for the server container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + sslDisabled: + description: SSLDisabled allows to disable SSL and use plain + http + type: boolean + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - targetBucket + type: object + azureBlob: + description: AzureBlob specifies a backing store of type azure-blob + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AccountName and AccountKey as provided by Azure Blob. 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. + description: name is unique within a namespace to reference + a secret resource. type: string - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + namespace: + description: namespace defines the space within which + the secret name must be unique. 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbConf: - description: - DBConf (optional) overrides the default postgresql db - config - type: string - dbImage: - description: - DBImage (optional) overrides the default image for the - db container - type: string - dbResources: - description: - DBResources (optional) overrides the default resource - requirements for the db container - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. + x-kubernetes-map-type: atomic + targetBlobContainer: + description: TargetBlobContainer is the name of the target + Azure Blob container + type: string + required: + - secret + - targetBlobContainer + type: object + googleCloudStorage: + description: GoogleCloudStorage specifies a backing store of type + google-cloud-storage + properties: + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. 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. + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - secret + - targetBucket + type: object + ibmCos: + description: IBMCos specifies a backing store of type ibm-cos + properties: + endpoint: + description: 'Endpoint is the IBM COS compatible endpoint: + http(s)://host:port' + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY + properties: + name: + description: name is unique within a namespace to reference + a secret resource. type: string - request: + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: TargetBucket is the name of the target IBM COS + bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + pvPool: + description: PVPool specifies a backing store of type pv-pool + properties: + numVolumes: + description: NumVolumes is the number of volumes to allocate + type: integer + resources: + description: VolumeResources represents the minimum resources + each volume should have. + properties: + 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: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + secret: + description: |- + Secret refers to a secret that provides the agent configuration + The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - dbStorageClass: - description: |- - DBStorageClass (optional) overrides the default cluster StorageClass for the database volume. - For the time being this field is immutable and can only be set on system creation. - This affects where the system stores its database which contains system config, - buckets, objects meta-data and mapping file parts to storage locations. - type: string - dbType: - description: |- - DBType (optional) overrides the default type image for the db container. - The only possible value is postgres - enum: - - postgres - type: string - dbVolumeResources: - description: |- - DBVolumeResources (optional) overrides the default PVC resource requirements for the database volume. - For the time being this field is immutable and can only be set on system creation. - This is because volume size updates are only supported for increasing the size, - and only if the storage class specifies ` + "`" + `allowVolumeExpansion: true` + "`" + `, - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - debugLevel: - description: DebugLevel (optional) sets the debug level - enum: - - all - - nsfs - - warn - - default_level - type: integer - defaultBackingStoreSpec: - description: - "Deprecated: DefaultBackingStoreSpec is not supported - anymore, use ManualDefaultBackingStore instead." - properties: - awsS3: - description: AWSS3Spec specifies a backing store of type aws-s3 - properties: - awsSTSRoleARN: - description: AWSSTSRoleARN allows to Assume Role and use AssumeRoleWithWebIdentity - type: string - region: - description: Region is the AWS region - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - sslDisabled: - description: - SSLDisabled allows to disable SSL and use plain - http - type: boolean - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - targetBucket - type: object - azureBlob: - description: AzureBlob specifies a backing store of type azure-blob - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AccountName and AccountKey as provided by Azure Blob. + x-kubernetes-map-type: atomic + storageClass: + description: StorageClass is the name of the storage class + to use for the PV's + type: string + required: + - numVolumes + type: object + s3Compatible: + description: S3Compatible specifies a backing store of type s3-compatible + properties: + endpoint: + description: 'Endpoint is the S3 compatible endpoint: http(s)://host:port' + type: string + secret: + description: |- + Secret refers to a secret that provides the credentials + The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + signatureVersion: + description: SignatureVersion specifies the client signature + version to use when signing requests. + type: string + targetBucket: + description: TargetBucket is the name of the target S3 bucket + type: string + required: + - endpoint + - secret + - targetBucket + type: object + type: + description: Type is an enum of supported types + type: string + required: + - type + type: object + denyHTTP: + description: DenyHTTP (optional) if given will deny access to the + NooBaa S3 service using HTTP (only HTTPS) + type: boolean + disableLoadBalancerService: + description: DisableLoadBalancerService (optional) sets the service + type to ClusterIP instead of LoadBalancer + nullable: true + type: boolean + endpoints: + description: |- + Endpoints (optional) sets configuration info for the noobaa endpoint + deployment. + properties: + additionalVirtualHosts: + description: |- + AdditionalVirtualHosts (optional) provide a list of additional hostnames + (on top of the builtin names defined by the cluster: service name, elb name, route name) + to be used as virtual hosts by the the endpoints in the endpoint deployment + items: + type: string + type: array + maxCount: + description: |- + MaxCount, the number of endpoint instances (pods) + to be used as the upper bound when autoscaling + format: int32 + type: integer + minCount: + description: |- + MinCount, the number of endpoint instances (pods) + to be used as the lower bound when autoscaling + format: int32 + type: integer + resources: + description: Resources (optional) overrides the default resource + requirements for every endpoint pod + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: - name is unique within a namespace to reference - a secret resource. + 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 - namespace: - description: - namespace defines the space within which - the secret name must be unique. + request: + description: |- + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string + required: + - name type: object - x-kubernetes-map-type: atomic - targetBlobContainer: - description: - TargetBlobContainer is the name of the target - Azure Blob container - type: string - required: - - secret - - targetBlobContainer + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + type: object + envVariablesOverride: + description: Override variables for all pods managed by NooBaa's operator + type: object + properties: + core: + description: "List of environment variables to set in the Core statefulset containers." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true type: object - googleCloudStorage: - description: - GoogleCloudStorage specifies a backing store of type - google-cloud-storage - properties: - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define GoogleServiceAccountPrivateKeyJson containing the entire json string as provided by Google. - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - targetBucket: - description: TargetBucket is the name of the target S3 bucket - type: string - required: - - secret - - targetBucket + x-kubernetes-preserve-unknown-fields: true + type: array + endpoint: + description: "List of environment variables to set in the Endpoint deployment containers." + items: + description: EnvVar represents an environment variable present in a Container. + x-kubernetes-preserve-unknown-fields: true type: object - ibmCos: - description: IBMCos specifies a backing store of type ibm-cos + x-kubernetes-preserve-unknown-fields: true + type: array + externalPgSSLRequired: + description: ExternalPgSSLRequired (optional) holds an optional boolean + to force ssl connections to the external Postgres DB + type: boolean + externalPgSSLSecret: + description: ExternalPgSSLSecret (optional) holds an optional secret + with client key and cert used for connecting to external Postgres + DB + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + externalPgSSLUnauthorized: + description: ExternalPgSSLUnauthorized (optional) holds an optional + boolean to allow unauthorized connections to external Postgres DB + type: boolean + externalPgSecret: + description: ExternalPgSecret (optional) holds an optional secret + with a url to an extrenal Postgres DB to be used + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + image: + description: Image (optional) overrides the default image for the + server container + type: string + imagePullSecret: + description: ImagePullSecret (optional) sets a pull secret for the + system image + properties: + name: + default: "" + description: |- + Name of the referent. + This field is effectively required, but due to backwards compatibility is + allowed to be empty. Instances of this type with an empty value here are + almost certainly wrong. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + type: object + x-kubernetes-map-type: atomic + joinSecret: + description: |- + JoinSecret (optional) instructs the operator to join another cluster + and point to a secret that holds the join information + properties: + name: + description: name is unique within a namespace to reference a + secret resource. + type: string + namespace: + description: namespace defines the space within which the secret + name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + labels: + additionalProperties: + additionalProperties: + type: string + description: Labels are label for a given daemon + type: object + description: The labels-related configuration to add/set on each Pod + related object. + nullable: true + type: object + x-kubernetes-preserve-unknown-fields: true + loadBalancerSourceSubnets: + description: |- + LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services + only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set + to true + properties: + s3: + description: S3 is a list of subnets that will be allowed to access + the Noobaa S3 service + items: + type: string + type: array + sts: + description: STS is a list of subnets that will be allowed to + access the Noobaa STS service + items: + type: string + type: array + type: object + logResources: + description: LogResources (optional) overrides the default resource + requirements for the noobaa-log-processor container + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: - endpoint: - description: - "Endpoint is the IBM COS compatible endpoint: - http(s)://host:port" - type: string - secret: + name: description: |- - Secret refers to a secret that provides the credentials - The secret should define IBM_COS_ACCESS_KEY_ID and IBM_COS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: - SignatureVersion specifies the client signature - version to use when signing requests. + 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 - targetBucket: - description: - TargetBucket is the name of the target IBM COS - bucket - type: string - required: - - endpoint - - secret - - targetBucket - type: object - pvPool: - description: PVPool specifies a backing store of type pv-pool - properties: - numVolumes: - description: NumVolumes is the number of volumes to allocate - type: integer - resources: - description: - VolumeResources represents the minimum resources - each volume should have. - properties: - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - secret: + request: description: |- - Secret refers to a secret that provides the agent configuration - The secret should define AGENT_CONFIG containing agent_configuration from noobaa-core. - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - storageClass: - description: - StorageClass is the name of the storage class - to use for the PV's + Request is the name chosen for a request in the referenced claim. + If empty, everything from the claim is made available, otherwise + only the result of this request. type: string required: - - numVolumes + - name type: object - s3Compatible: - description: S3Compatible specifies a backing store of type s3-compatible - properties: - endpoint: - description: "Endpoint is the S3 compatible endpoint: http(s)://host:port" - type: string - secret: - description: |- - Secret refers to a secret that provides the credentials - The secret should define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - signatureVersion: - description: - SignatureVersion specifies the client signature - version to use when signing requests. - type: string - targetBucket: - description: TargetBucket is the name of the target S3 bucket + 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. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + manualDefaultBackingStore: + description: |- + ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore + will not be reconciled by the operator and it should be manually handled by the user. It will allow the + user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and + update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore + nullable: true + type: boolean + pvPoolDefaultStorageClass: + description: |- + PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. + This affects where the system stores data chunks (encrypted). + Updates to this field will only affect new pv-pools, + but updates to existing pools are not supported by the operator. + type: string + region: + description: |- + Region (optional) provide a region for the location info + of the endpoints in the endpoint deployment + type: string + security: + description: Security represents security settings + properties: + kms: + description: KeyManagementServiceSpec represent various details + of the KMS server + properties: + connectionDetails: + additionalProperties: type: string - required: - - endpoint - - secret - - targetBucket - type: object - type: - description: Type is an enum of supported types - type: string - required: - - type - type: object - denyHTTP: - description: - DenyHTTP (optional) if given will deny access to the - NooBaa S3 service using HTTP (only HTTPS) - type: boolean - disableLoadBalancerService: - description: - DisableLoadBalancerService (optional) sets the service - type to ClusterIP instead of LoadBalancer - nullable: true - type: boolean - endpoints: + type: object + enableKeyRotation: + type: boolean + schedule: + type: string + tokenSecretName: + type: string + type: object + type: object + tolerations: + description: Tolerations (optional) passed through to noobaa's pods + items: description: |- - Endpoints (optional) sets configuration info for the noobaa endpoint - deployment. + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: - additionalVirtualHosts: + effect: description: |- - AdditionalVirtualHosts (optional) provide a list of additional hostnames - (on top of the builtin names defined by the cluster: service name, elb name, route name) - to be used as virtual hosts by the the endpoints in the endpoint deployment - items: - type: string - type: array - maxCount: + 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: |- - MaxCount, the number of endpoint instances (pods) - to be used as the upper bound when autoscaling - format: int32 - type: integer - minCount: + 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: |- - MinCount, the number of endpoint instances (pods) - to be used as the lower bound when autoscaling - format: int32 + 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 - resources: - description: - Resources (optional) overrides the default resource - requirements for every endpoint pod - properties: - claims: - description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - type: object - envVariablesOverride: - description: Override variables for all pods managed by NooBaa's operator + 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 - properties: - core: - description: "List of environment variables to set in the Core statefulset containers." - items: - description: EnvVar represents an environment variable present in a Container. - x-kubernetes-preserve-unknown-fields: true - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - endpoint: - description: "List of environment variables to set in the Endpoint deployment containers." - items: - description: EnvVar represents an environment variable present in a Container. - x-kubernetes-preserve-unknown-fields: true - type: object - x-kubernetes-preserve-unknown-fields: true - type: array - externalPgSSLRequired: - description: - ExternalPgSSLRequired (optional) holds an optional boolean - to force ssl connections to the external Postgres DB - type: boolean - externalPgSSLSecret: - description: - ExternalPgSSLSecret (optional) holds an optional secret - with client key and cert used for connecting to external Postgres - DB - properties: - name: - description: - name is unique within a namespace to reference a - secret resource. + type: array + type: object + status: + description: Most recently observed status of the noobaa system. + properties: + accounts: + description: Accounts reports accounts info for the admin account + properties: + admin: + description: UserStatus is the status info of a user secret + properties: + secretRef: + description: |- + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: name is unique within a namespace to reference + a secret resource. + type: string + namespace: + description: namespace defines the space within which + the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + required: + - secretRef + type: object + required: + - admin + type: object + actualImage: + description: ActualImage is set to report which image the operator + is using + type: string + beforeUpgradeDbImage: + description: BeforeUpgradeDbImage is the db image used before last + db upgrade + type: string + conditions: + description: Conditions is a list of conditions related to operator + reconciliation + items: + description: |- + Condition represents the state of the operator's + reconciliation functionality. + properties: + lastHeartbeatTime: + format: date-time type: string - namespace: - description: - namespace defines the space within which the secret - name must be unique. + lastTransitionTime: + format: date-time type: string - type: object - x-kubernetes-map-type: atomic - externalPgSSLUnauthorized: - description: - ExternalPgSSLUnauthorized (optional) holds an optional - boolean to allow unauthorized connections to external Postgres DB - type: boolean - externalPgSecret: - description: - ExternalPgSecret (optional) holds an optional secret - with a url to an extrenal Postgres DB to be used - properties: - name: - description: - name is unique within a namespace to reference a - secret resource. + message: type: string - namespace: - description: - namespace defines the space within which the secret - name must be unique. + 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 - x-kubernetes-map-type: atomic - image: - description: - Image (optional) overrides the default image for the - server container - type: string - imagePullSecret: - description: - ImagePullSecret (optional) sets a pull secret for the - system image + type: array + endpoints: + description: |- + Endpoints reports the actual number of endpoints in the endpoint deployment + and the virtual hosts list used recognized by the endpoints + properties: + readyCount: + format: int32 + type: integer + virtualHosts: + items: + type: string + type: array + required: + - readyCount + - virtualHosts + type: object + lastKeyRotateTime: + description: LastKeyRotateTime is the time system ran an encryption + key rotate + format: date-time + type: string + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this noobaa system. + It corresponds to the CR generation, which is updated on mutation by the API Server. + format: int64 + type: integer + phase: + description: Phase is a simple, high-level summary of where the System + is in its lifecycle + type: string + postgresUpdatePhase: + description: Upgrade reports the status of the ongoing postgres upgrade + process + type: string + readme: + description: Readme is a user readable string with explanations on + the system + type: string + relatedObjects: + description: RelatedObjects is a list of objects related to this operator. + items: + description: ObjectReference contains enough information to let + you inspect or modify the referred object. properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + type: string + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string name: - default: "" description: |- Name of the referent. - This field is effectively required, but due to backwards compatibility is - allowed to be empty. Instances of this type with an empty value here are - almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string - type: object - x-kubernetes-map-type: atomic - joinSecret: - description: |- - JoinSecret (optional) instructs the operator to join another cluster - and point to a secret that holds the join information - properties: - name: - description: - name is unique within a namespace to reference a - secret resource. - type: string namespace: - description: - namespace defines the space within which the secret - name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - labels: - additionalProperties: - additionalProperties: - type: string - description: Labels are label for a given daemon - type: object - description: - The labels-related configuration to add/set on each Pod - related object. - nullable: true - type: object - x-kubernetes-preserve-unknown-fields: true - loadBalancerSourceSubnets: - description: |- - LoadBalancerSourceSubnets (optional) if given will allow access to the NooBaa services - only from the listed subnets. This field will have no effect if DisableLoadBalancerService is set - to true - properties: - s3: - description: - S3 is a list of subnets that will be allowed to access - the Noobaa S3 service - items: - type: string - type: array - sts: - description: - STS is a list of subnets that will be allowed to - access the Noobaa STS service - items: - type: string - type: array - type: object - logResources: - description: - LogResources (optional) overrides the default resource - requirements for the noobaa-log-processor container - properties: - claims: description: |- - Claims lists the names of resources, defined in spec.resourceClaims, - that are used by this container. - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - This field is immutable. It can only be set for containers. - 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 - request: - description: |- - Request is the name chosen for a request in the referenced claim. - If empty, everything from the claim is made available, otherwise - only the result of this request. - 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 + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + resourceVersion: 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 + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + type: string + uid: 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. Requests cannot exceed Limits. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - type: object - type: object - manualDefaultBackingStore: - description: |- - ManualDefaultBackingStore (optional - default value is false) if true the default backingstore/namespacestore - will not be reconciled by the operator and it should be manually handled by the user. It will allow the - user to delete DefaultBackingStore/DefaultNamespaceStore, user needs to delete associated buckets and - update the admin account with new BackingStore/NamespaceStore in order to delete the DefaultBackingStore/DefaultNamespaceStore - nullable: true - type: boolean - pvPoolDefaultStorageClass: - description: |- - PVPoolDefaultStorageClass (optional) overrides the default cluster StorageClass for the pv-pool volumes. - This affects where the system stores data chunks (encrypted). - Updates to this field will only affect new pv-pools, - but updates to existing pools are not supported by the operator. - type: string - region: - description: |- - Region (optional) provide a region for the location info - of the endpoints in the endpoint deployment - type: string - security: - description: Security represents security settings - properties: - kms: - description: - KeyManagementServiceSpec represent various details - of the KMS server - properties: - connectionDetails: - additionalProperties: - type: string - type: object - enableKeyRotation: - type: boolean - schedule: - type: string - tokenSecretName: - type: string - type: object + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + type: string type: object - tolerations: - description: Tolerations (optional) passed through to noobaa's pods - items: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . + x-kubernetes-map-type: atomic + type: array + services: + description: Services reports addresses for the services + properties: + serviceMgmt: + description: ServiceStatus is the status info and network addresses + of a service 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: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: 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: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: 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: + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: 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: + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: 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 + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - type: array - type: object - status: - description: Most recently observed status of the noobaa system. - properties: - accounts: - description: Accounts reports accounts info for the admin account - properties: - admin: - description: UserStatus is the status info of a user secret - properties: - secretRef: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: - name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: - namespace defines the space within which - the secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - required: - - secretRef - type: object - required: - - admin - type: object - actualImage: - description: - ActualImage is set to report which image the operator - is using - type: string - beforeUpgradeDbImage: - description: - BeforeUpgradeDbImage is the db image used before last - db upgrade - type: string - conditions: - description: - Conditions is a list of conditions related to operator - reconciliation - items: - description: |- - Condition represents the state of the operator's - reconciliation functionality. + serviceS3: + description: ServiceStatus is the status info and network addresses + of a service 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 + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: + description: |- + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: + description: |- + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - type: array - endpoints: - description: |- - Endpoints reports the actual number of endpoints in the endpoint deployment - and the virtual hosts list used recognized by the endpoints - properties: - readyCount: - format: int32 - type: integer - virtualHosts: - items: - type: string - type: array - required: - - readyCount - - virtualHosts - type: object - lastKeyRotateTime: - description: - LastKeyRotateTime is the time system ran an encryption - key rotate - format: date-time - type: string - observedGeneration: - description: |- - ObservedGeneration is the most recent generation observed for this noobaa system. - It corresponds to the CR generation, which is updated on mutation by the API Server. - format: int64 - type: integer - phase: - description: - Phase is a simple, high-level summary of where the System - is in its lifecycle - type: string - postgresUpdatePhase: - description: - Upgrade reports the status of the ongoing postgres upgrade - process - type: string - readme: - description: - Readme is a user readable string with explanations on - the system - type: string - relatedObjects: - description: RelatedObjects is a list of objects related to this operator. - items: - description: - ObjectReference contains enough information to let - you inspect or modify the referred object. + serviceSts: + description: ServiceStatus is the status info and network addresses + of a service properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: description: |- - If referring to a piece of an object instead of an entire object, this string - should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within a pod, this would take on a value like: - "spec.containers{name}" (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined way of - referencing a part of an object. - type: string - kind: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - resourceVersion: + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array + type: object + serviceSyslog: + description: ServiceStatus is the status info and network addresses + of a service + properties: + externalDNS: + description: ExternalDNS are external public addresses for + the service + items: + type: string + type: array + externalIP: description: |- - Specific resourceVersion to which this reference is made, if any. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - type: string - uid: + ExternalIP are external public addresses for the service + LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service + IngressPorts are manually created public addresses for the service + https://kubernetes.io/docs/concepts/services-networking/service/#external-ips + https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer + https://kubernetes.io/docs/concepts/services-networking/ingress/ + items: + type: string + type: array + internalDNS: + description: InternalDNS are internal addresses of the service + inside the cluster + items: + type: string + type: array + internalIP: description: |- - UID of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids - type: string + InternalIP are internal addresses of the service inside the cluster + https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + items: + type: string + type: array + nodePorts: + description: |- + NodePorts are the most basic network available. + NodePorts use the networks available on the hosts of kubernetes nodes. + This generally works from within a pod, and from the internal + network of the nodes, but may fail from public network. + https://kubernetes.io/docs/concepts/services-networking/service/#nodeport + items: + type: string + type: array + podPorts: + description: |- + PodPorts are the second most basic network address. + Every pod has an IP in the cluster and the pods network is a mesh + so the operator running inside a pod in the cluster can use this address. + Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. + Note2: when running the operator outside of the cluster, pod IP is not accessible. + items: + type: string + type: array type: object - x-kubernetes-map-type: atomic - type: array - services: - description: Services reports addresses for the services - properties: - serviceMgmt: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceS3: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceSts: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - serviceSyslog: - description: - ServiceStatus is the status info and network addresses - of a service - properties: - externalDNS: - description: - ExternalDNS are external public addresses for - the service - items: - type: string - type: array - externalIP: - description: |- - ExternalIP are external public addresses for the service - LoadBalancerPorts such as AWS ELB provide public address and load balancing for the service - IngressPorts are manually created public addresses for the service - https://kubernetes.io/docs/concepts/services-networking/service/#external-ips - https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer - https://kubernetes.io/docs/concepts/services-networking/ingress/ - items: - type: string - type: array - internalDNS: - description: - InternalDNS are internal addresses of the service - inside the cluster - items: - type: string - type: array - internalIP: - description: |- - InternalIP are internal addresses of the service inside the cluster - https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - items: - type: string - type: array - nodePorts: - description: |- - NodePorts are the most basic network available. - NodePorts use the networks available on the hosts of kubernetes nodes. - This generally works from within a pod, and from the internal - network of the nodes, but may fail from public network. - https://kubernetes.io/docs/concepts/services-networking/service/#nodeport - items: - type: string - type: array - podPorts: - description: |- - PodPorts are the second most basic network address. - Every pod has an IP in the cluster and the pods network is a mesh - so the operator running inside a pod in the cluster can use this address. - Note: pod IPs are not guaranteed to persist over restarts, so should be rediscovered. - Note2: when running the operator outside of the cluster, pod IP is not accessible. - items: - type: string - type: array - type: object - required: - - serviceMgmt - - serviceS3 - type: object - upgradePhase: - description: Upgrade reports the status of the ongoing upgrade process - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} + required: + - serviceMgmt + - serviceS3 + type: object + upgradePhase: + description: Upgrade reports the status of the ongoing upgrade process + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} ` const Sha256_deploy_crds_noobaa_io_v1alpha1_backingstore_cr_yaml = "84ca6f2a35a413e74a51375bd0ec31c33bb76a00de8e0ef8d02a7798e02ec460"