From 85d4ed251dc3a36fc9fe7caa501bdbbdbb0b5726 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Fri, 15 Mar 2024 21:15:27 +0100 Subject: [PATCH] Update piraeus-operator and LINSTOR v2.4.1 (#45) --- .../charts/piraeus/Chart.yaml | 4 +- .../charts/piraeus/templates/config.yaml | 30 +- .../charts/piraeus/templates/crds.yaml | 747 ++++++++++-------- .../validating-webhook-configuration.yaml | 24 + 4 files changed, 454 insertions(+), 351 deletions(-) diff --git a/packages/system/piraeus-operator/charts/piraeus/Chart.yaml b/packages/system/piraeus-operator/charts/piraeus/Chart.yaml index 2afc4450..2f6ccc76 100644 --- a/packages/system/piraeus-operator/charts/piraeus/Chart.yaml +++ b/packages/system/piraeus-operator/charts/piraeus/Chart.yaml @@ -3,8 +3,8 @@ name: piraeus description: | The Piraeus Operator manages software defined storage clusters using LINSTOR in Kubernetes. type: application -version: 2.3.0 -appVersion: "v2.3.0" +version: 2.4.1 +appVersion: "v2.4.1" maintainers: - name: Piraeus Datastore url: https://piraeus.io diff --git a/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml b/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml index 4f0dcfd3..41e434c3 100644 --- a/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml +++ b/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml @@ -17,19 +17,19 @@ data: # quay.io/piraeusdatastore/piraeus-server:v1.24.2 components: linstor-controller: - tag: v1.25.1 + tag: v1.26.2 image: piraeus-server linstor-satellite: - tag: v1.25.1 + tag: v1.26.2 image: piraeus-server linstor-csi: - tag: v1.3.0 + tag: v1.4.0 image: piraeus-csi drbd-reactor: tag: v1.4.0 image: drbd-reactor ha-controller: - tag: v1.1.4 + tag: v1.2.0 image: piraeus-ha-controller drbd-shutdown-guard: tag: v1.0.0 @@ -38,7 +38,7 @@ data: tag: v0.10 image: ktls-utils drbd-module-loader: - tag: v9.2.6 + tag: v9.2.8 # The special "match" attribute is used to select an image based on the node's reported OS. # The operator will first check the k8s node's ".status.nodeInfo.osImage" field, and compare it against the list # here. If one matches, that specific image name will be used instead of the fallback image. @@ -54,12 +54,18 @@ data: image: drbd9-almalinux8 - osImage: AlmaLinux 9 image: drbd9-almalinux9 + - osImage: Rocky Linux 8 + image: drbd9-almalinux8 + - osImage: Rocky Linux 9 + image: drbd9-almalinux9 - osImage: Ubuntu 18\.04 image: drbd9-bionic - osImage: Ubuntu 20\.04 image: drbd9-focal - osImage: Ubuntu 22\.04 image: drbd9-jammy + - osImage: Debian GNU/Linux 12 + image: drbd9-bookworm - osImage: Debian GNU/Linux 11 image: drbd9-bullseye - osImage: Debian GNU/Linux 10 @@ -69,25 +75,25 @@ data: base: registry.k8s.io/sig-storage components: csi-attacher: - tag: v4.4.2 + tag: v4.5.0 image: csi-attacher csi-livenessprobe: - tag: v2.11.0 + tag: v2.12.0 image: livenessprobe csi-provisioner: - tag: v3.6.2 + tag: v4.0.0 image: csi-provisioner csi-snapshotter: - tag: v6.3.2 + tag: v7.0.1 image: csi-snapshotter csi-resizer: - tag: v1.9.2 + tag: v1.10.0 image: csi-resizer csi-external-health-monitor-controller: - tag: v0.10.0 + tag: v0.11.0 image: csi-external-health-monitor-controller csi-node-driver-registrar: - tag: v2.9.1 + tag: v2.10.0 image: csi-node-driver-registrar {{- range $idx, $value := .Values.imageConfigOverride }} {{ add $idx 1 }}_helm_override.yaml: | diff --git a/packages/system/piraeus-operator/charts/piraeus/templates/crds.yaml b/packages/system/piraeus-operator/charts/piraeus/templates/crds.yaml index fdd021db..0b43f8e7 100644 --- a/packages/system/piraeus-operator/charts/piraeus/templates/crds.yaml +++ b/packages/system/piraeus-operator/charts/piraeus/templates/crds.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: linstorclusters.piraeus.io spec: group: piraeus.io @@ -21,14 +21,19 @@ spec: description: LinstorCluster is the Schema for the linstorclusters 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' + 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' + 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 @@ -36,19 +41,23 @@ spec: description: LinstorClusterSpec defines the desired state of LinstorCluster properties: apiTLS: - description: "ApiTLS secures the LINSTOR API. \n This configures the - TLS key and certificate used to secure the LINSTOR API." + description: |- + ApiTLS secures the LINSTOR API. + + + This configures the TLS key and certificate used to secure the LINSTOR API. nullable: true properties: apiSecretName: - description: ApiSecretName references a secret holding the TLS - key and certificate used to protect the API. Defaults to "linstor-api-tls". + description: |- + ApiSecretName references a secret holding the TLS key and certificate used to protect the API. + Defaults to "linstor-api-tls". type: string certManager: - description: CertManager references a cert-manager Issuer or ClusterIssuer. - If set, cert-manager.io/Certificate resources will be created, - provisioning the secrets referenced in *SecretName using the - issuer configured here. + description: |- + CertManager references a cert-manager Issuer or ClusterIssuer. + If set, cert-manager.io/Certificate resources will be created, provisioning the secrets referenced in + *SecretName using the issuer configured here. properties: group: description: Group of the resource being referred to. @@ -63,19 +72,19 @@ spec: - name type: object clientSecretName: - description: ClientSecretName references a secret holding the - TLS key and certificate used by the operator to configure the - cluster. Defaults to "linstor-client-tls". + description: |- + ClientSecretName references a secret holding the TLS key and certificate used by the operator to configure + the cluster. Defaults to "linstor-client-tls". type: string csiControllerSecretName: - description: CsiControllerSecretName references a secret holding - the TLS key and certificate used by the CSI Controller to provision - volumes. Defaults to "linstor-csi-controller-tls". + description: |- + CsiControllerSecretName references a secret holding the TLS key and certificate used by the CSI Controller + to provision volumes. Defaults to "linstor-csi-controller-tls". type: string csiNodeSecretName: - description: CsiNodeSecretName references a secret holding the - TLS key and certificate used by the CSI Nodes to query the volume - state. Defaults to "linstor-csi-node-tls". + description: |- + CsiNodeSecretName references a secret holding the TLS key and certificate used by the CSI Nodes to query + the volume state. Defaults to "linstor-csi-node-tls". type: string type: object controller: @@ -87,10 +96,13 @@ spec: description: Enable the component. type: boolean podTemplate: - description: "Template to apply to Pods of the component. \n The - template is applied as a patch to the default deployment, so - it can be \"sparse\", not listing any containers or volumes - that should remain unchanged. See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + description: |- + Template to apply to Pods of the component. + + + The template is applied as a patch to the default deployment, so it can be "sparse", not listing any + containers or volumes that should remain unchanged. + See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true @@ -104,10 +116,13 @@ spec: description: Enable the component. type: boolean podTemplate: - description: "Template to apply to Pods of the component. \n The - template is applied as a patch to the default deployment, so - it can be \"sparse\", not listing any containers or volumes - that should remain unchanged. See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + description: |- + Template to apply to Pods of the component. + + + The template is applied as a patch to the default deployment, so it can be "sparse", not listing any + containers or volumes that should remain unchanged. + See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true @@ -120,18 +135,22 @@ spec: description: Enable the component. type: boolean podTemplate: - description: "Template to apply to Pods of the component. \n The - template is applied as a patch to the default deployment, so - it can be \"sparse\", not listing any containers or volumes - that should remain unchanged. See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + description: |- + Template to apply to Pods of the component. + + + The template is applied as a patch to the default deployment, so it can be "sparse", not listing any + containers or volumes that should remain unchanged. + See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true type: object externalController: - description: ExternalController references an external controller. - When set, the Operator will skip deploying a LINSTOR Controller - and instead use the external cluster to register satellites. + description: |- + ExternalController references an external controller. + When set, the Operator will skip deploying a LINSTOR Controller and instead use the external cluster + to register satellites. properties: url: description: URL of the external controller. @@ -149,27 +168,31 @@ spec: description: Enable the component. type: boolean podTemplate: - description: "Template to apply to Pods of the component. \n The - template is applied as a patch to the default deployment, so - it can be \"sparse\", not listing any containers or volumes - that should remain unchanged. See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + description: |- + Template to apply to Pods of the component. + + + The template is applied as a patch to the default deployment, so it can be "sparse", not listing any + containers or volumes that should remain unchanged. + See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true type: object internalTLS: - description: "InternalTLS secures the connection between LINSTOR Controller - and Satellite. \n This configures the client certificate used when - the Controller connects to a Satellite. This only has an effect - when the Satellite is configured to for secure connections using - `LinstorSatellite.spec.internalTLS`." + description: |- + InternalTLS secures the connection between LINSTOR Controller and Satellite. + + + This configures the client certificate used when the Controller connects to a Satellite. This only has an effect + when the Satellite is configured to for secure connections using `LinstorSatellite.spec.internalTLS`. nullable: true properties: certManager: - description: CertManager references a cert-manager Issuer or ClusterIssuer. - If set, a Certificate resource will be created, provisioning - the secret references in SecretName using the issuer configured - here. + description: |- + CertManager references a cert-manager Issuer or ClusterIssuer. + If set, a Certificate resource will be created, provisioning the secret references in SecretName using the + issuer configured here. properties: group: description: Group of the resource being referred to. @@ -189,50 +212,53 @@ spec: type: string type: object linstorPassphraseSecret: - description: "LinstorPassphraseSecret used to configure the LINSTOR - master passphrase. \n The referenced secret must contain a single - key \"MASTER_PASSPHRASE\". The master passphrase is used to * Derive - encryption keys for volumes using the LUKS layer. * Store credentials - for accessing remotes for backups. See https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-encrypt_commands - for more information." + description: |- + LinstorPassphraseSecret used to configure the LINSTOR master passphrase. + + + The referenced secret must contain a single key "MASTER_PASSPHRASE". The master passphrase is used to + * Derive encryption keys for volumes using the LUKS layer. + * Store credentials for accessing remotes for backups. + See https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-encrypt_commands for more information. type: string nodeAffinity: - description: NodeAffinity selects the nodes on which LINSTOR Satellite - will be deployed. See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + description: |- + NodeAffinity selects the nodes on which LINSTOR Satellite will be deployed. + See https://kubernetes.io/docs/concepts/configuration/assign-pod-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. + 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. + 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. + 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. + 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 @@ -245,27 +271,26 @@ spec: 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. + 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. + 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. + 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 @@ -284,13 +309,16 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector selects the nodes on which LINSTOR Satellites - will be deployed. See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + description: |- + NodeSelector selects the nodes on which LINSTOR Satellites will be deployed. + See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ type: object patches: - description: "Patches is a list of kustomize patches to apply. \n - See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ - for how to create patches." + description: |- + Patches is a list of kustomize patches to apply. + + + See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches. items: description: Patch represent either a Strategic Merge Patch or a JSON patch and its targets. @@ -309,8 +337,9 @@ spec: applied to properties: annotationSelector: - description: AnnotationSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + AnnotationSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource annotations. type: string group: @@ -318,8 +347,9 @@ spec: kind: type: string labelSelector: - description: LabelSelector is a string that follows the - label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + LabelSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource labels. type: string name: @@ -335,9 +365,12 @@ spec: type: object type: array properties: - description: "Properties to apply on the cluster level. \n Use to - create default settings for DRBD that should apply to all resources - or to configure some other cluster wide default." + description: |- + Properties to apply on the cluster level. + + + Use to create default settings for DRBD that should apply to all resources or to configure some other cluster + wide default. items: properties: name: @@ -365,42 +398,42 @@ spec: description: Current LINSTOR Cluster state items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -414,11 +447,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -444,7 +478,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: linstornodeconnections.piraeus.io spec: group: piraeus.io @@ -462,14 +496,19 @@ spec: 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' + 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' + 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 @@ -496,9 +535,12 @@ spec: - name x-kubernetes-list-type: map properties: - description: "Properties to apply for the node connection. \n Use - to create default settings for DRBD that should apply to all resources - connections between a set of cluster nodes." + description: |- + Properties to apply for the node connection. + + + Use to create default settings for DRBD that should apply to all resources connections between a set of + cluster nodes. items: properties: name: @@ -516,9 +558,9 @@ spec: - name x-kubernetes-list-type: map selector: - description: Selector selects which pair of Satellites the connection - should apply to. If not given, the connection will be applied to - all connections. + description: |- + Selector selects which pair of Satellites the connection should apply to. + If not given, the connection will be applied to all connections. items: description: SelectorTerm matches pairs of nodes by checking that the nodes match all specified requirements. @@ -534,16 +576,14 @@ spec: type: string op: default: Exists - description: Op to apply to the label. Exists (default) - checks for the presence of the label on both nodes in - the pair. DoesNotExist checks that the label is not - present on either node in the pair. In checks for the - presence of the label value given by Values on both - nodes in the pair. NotIn checks that both nodes in the - pair do not have any of the label values given by Values. - Same checks that the label value is equal in the node - pair. NotSame checks that the label value is not equal - in the node pair. + description: |- + Op to apply to the label. + Exists (default) checks for the presence of the label on both nodes in the pair. + DoesNotExist checks that the label is not present on either node in the pair. + In checks for the presence of the label value given by Values on both nodes in the pair. + NotIn checks that both nodes in the pair do not have any of the label values given by Values. + Same checks that the label value is equal in the node pair. + NotSame checks that the label value is not equal in the node pair. enum: - Exists - DoesNotExist @@ -572,42 +612,42 @@ spec: description: Current LINSTOR Node Connection state items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -621,11 +661,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -651,7 +692,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: linstorsatelliteconfigurations.piraeus.io spec: group: piraeus.io @@ -669,33 +710,43 @@ spec: 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' + 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' + 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: "LinstorSatelliteConfigurationSpec defines a partial, desired - state of a LinstorSatelliteSpec. \n All the LinstorSatelliteConfiguration - resources with matching NodeSelector will be merged into a single LinstorSatelliteSpec." + description: |- + LinstorSatelliteConfigurationSpec defines a partial, desired state of a LinstorSatelliteSpec. + + + All the LinstorSatelliteConfiguration resources with matching NodeSelector will + be merged into a single LinstorSatelliteSpec. properties: internalTLS: - description: "InternalTLS configures secure communication for the - LINSTOR Satellite. \n If set, the control traffic between LINSTOR - Controller and Satellite will be encrypted using mTLS." + description: |- + InternalTLS configures secure communication for the LINSTOR Satellite. + + + If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS. nullable: true properties: certManager: - description: CertManager references a cert-manager Issuer or ClusterIssuer. - If set, a Certificate resource will be created, provisioning - the secret references in SecretName using the issuer configured - here. + description: |- + CertManager references a cert-manager Issuer or ClusterIssuer. + If set, a Certificate resource will be created, provisioning the secret references in SecretName using the + issuer configured here. properties: group: description: Group of the resource being referred to. @@ -714,50 +765,52 @@ spec: and certificates. type: string tlsHandshakeDaemon: - description: "TLSHandshakeDaemon enables tlshd for establishing - TLS sessions for use by DRBD. \n If enabled, adds a new sidecar - to the LINSTOR Satellite that runs the tlshd handshake daemon. - The daemon uses the TLS certificate and key to establish secure - connections on behalf of DRBD." + description: |- + TLSHandshakeDaemon enables tlshd for establishing TLS sessions for use by DRBD. + + + If enabled, adds a new sidecar to the LINSTOR Satellite that runs the tlshd handshake daemon. + The daemon uses the TLS certificate and key to establish secure connections on behalf of DRBD. type: boolean type: object nodeAffinity: - description: NodeAffinity selects which LinstorSatellite resources - this spec should be applied to. See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + description: |- + NodeAffinity selects which LinstorSatellite resources this spec should be applied to. + See https://kubernetes.io/docs/concepts/configuration/assign-pod-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. + 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. + 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. + 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. + 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 @@ -770,27 +823,26 @@ spec: 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. + 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. + 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. + 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 @@ -809,13 +861,16 @@ spec: nodeSelector: additionalProperties: type: string - description: NodeSelector selects which LinstorSatellite resources - this spec should be applied to. See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + description: |- + NodeSelector selects which LinstorSatellite resources this spec should be applied to. + See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ type: object patches: - description: "Patches is a list of kustomize patches to apply. \n - See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ - for how to create patches." + description: |- + Patches is a list of kustomize patches to apply. + + + See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches. items: description: Patch represent either a Strategic Merge Patch or a JSON patch and its targets. @@ -834,8 +889,9 @@ spec: applied to properties: annotationSelector: - description: AnnotationSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + AnnotationSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource annotations. type: string group: @@ -843,8 +899,9 @@ spec: kind: type: string labelSelector: - description: LabelSelector is a string that follows the - label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + LabelSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource labels. type: string name: @@ -860,10 +917,13 @@ spec: type: object type: array podTemplate: - description: "Template to apply to Satellite Pods. \n The template - is applied as a patch to the default resource, so it can be \"sparse\", - not listing any containers or volumes that should remain unchanged. - See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + description: |- + Template to apply to Satellite Pods. + + + The template is applied as a patch to the default resource, so it can be "sparse", not listing any + containers or volumes that should remain unchanged. + See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true @@ -996,42 +1056,42 @@ spec: description: Current LINSTOR Satellite Config state items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -1045,11 +1105,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -1075,7 +1136,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: linstorsatellites.piraeus.io spec: group: piraeus.io @@ -1092,14 +1153,19 @@ spec: description: LinstorSatellite is the Schema for the linstorsatellites 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' + 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' + 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 @@ -1115,9 +1181,9 @@ spec: operator to validate the https endpoint. type: string externalController: - description: ExternalController references an external controller. - When set, the Operator uses the external cluster to register - satellites. + description: |- + ExternalController references an external controller. + When set, the Operator uses the external cluster to register satellites. properties: url: description: URL of the external controller. @@ -1132,18 +1198,19 @@ spec: type: string type: object internalTLS: - description: "InternalTLS configures secure communication for the - LINSTOR Satellite. \n If set, the control traffic between LINSTOR - Controller and Satellite will be encrypted using mTLS. The Controller - will use the client key from `LinstorCluster.spec.internalTLS` when - connecting." + description: |- + InternalTLS configures secure communication for the LINSTOR Satellite. + + + If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS. + The Controller will use the client key from `LinstorCluster.spec.internalTLS` when connecting. nullable: true properties: certManager: - description: CertManager references a cert-manager Issuer or ClusterIssuer. - If set, a Certificate resource will be created, provisioning - the secret references in SecretName using the issuer configured - here. + description: |- + CertManager references a cert-manager Issuer or ClusterIssuer. + If set, a Certificate resource will be created, provisioning the secret references in SecretName using the + issuer configured here. properties: group: description: Group of the resource being referred to. @@ -1162,17 +1229,20 @@ spec: and certificates. type: string tlsHandshakeDaemon: - description: "TLSHandshakeDaemon enables tlshd for establishing - TLS sessions for use by DRBD. \n If enabled, adds a new sidecar - to the LINSTOR Satellite that runs the tlshd handshake daemon. - The daemon uses the TLS certificate and key to establish secure - connections on behalf of DRBD." + description: |- + TLSHandshakeDaemon enables tlshd for establishing TLS sessions for use by DRBD. + + + If enabled, adds a new sidecar to the LINSTOR Satellite that runs the tlshd handshake daemon. + The daemon uses the TLS certificate and key to establish secure connections on behalf of DRBD. type: boolean type: object patches: - description: "Patches is a list of kustomize patches to apply. \n - See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ - for how to create patches." + description: |- + Patches is a list of kustomize patches to apply. + + + See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches. items: description: Patch represent either a Strategic Merge Patch or a JSON patch and its targets. @@ -1191,8 +1261,9 @@ spec: applied to properties: annotationSelector: - description: AnnotationSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + AnnotationSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource annotations. type: string group: @@ -1200,8 +1271,9 @@ spec: kind: type: string labelSelector: - description: LabelSelector is a string that follows the - label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + description: |- + LabelSelector is a string that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api It matches against the resource labels. type: string name: @@ -1349,42 +1421,42 @@ spec: description: Current LINSTOR Satellite state items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -1398,11 +1470,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/packages/system/piraeus-operator/charts/piraeus/templates/validating-webhook-configuration.yaml b/packages/system/piraeus-operator/charts/piraeus/templates/validating-webhook-configuration.yaml index ef22851b..5a6c5c9e 100644 --- a/packages/system/piraeus-operator/charts/piraeus/templates/validating-webhook-configuration.yaml +++ b/packages/system/piraeus-operator/charts/piraeus/templates/validating-webhook-configuration.yaml @@ -152,3 +152,27 @@ webhooks: resources: - linstorsatelliteconfigurations sideEffects: None +- admissionReviewVersions: + - v1 + clientConfig: + service: + name: '{{ include "piraeus-operator.fullname" . }}-webhook-service' + namespace: '{{ .Release.Namespace }}' + path: /validate-storage-k8s-io-v1-storageclass + {{- if not .Values.tls.certManagerIssuerRef }} + caBundle: {{ $ca }} + {{- end }} + failurePolicy: {{ .Values.webhook.failurePolicy }} + timeoutSeconds: {{ .Values.webhook.timeoutSeconds }} + name: vstorageclass.kb.io + rules: + - apiGroups: + - storage.k8s.io + apiVersions: + - v1 + operations: + - CREATE + - UPDATE + resources: + - storageclasses + sideEffects: None