From 89d59a1dbdc1d64a82b7b3a2e3216eb42b9cf4a7 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Mon, 21 Oct 2024 13:18:07 +0200 Subject: [PATCH] Update LINSTOR v1.29.1 Signed-off-by: Andrei Kvapil --- .../charts/piraeus/Chart.yaml | 4 +- .../charts/piraeus/templates/config.yaml | 20 +- .../charts/piraeus/templates/crds.yaml | 246 ++++++++++++------ 3 files changed, 172 insertions(+), 98 deletions(-) diff --git a/packages/system/piraeus-operator/charts/piraeus/Chart.yaml b/packages/system/piraeus-operator/charts/piraeus/Chart.yaml index 71717397f..9ba10fa35 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.5.2 -appVersion: "v2.5.2" +version: 2.6.0 +appVersion: "v2.6.0" 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 3c5235af5..da49186eb 100644 --- a/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml +++ b/packages/system/piraeus-operator/charts/piraeus/templates/config.yaml @@ -17,11 +17,11 @@ data: # quay.io/piraeusdatastore/piraeus-server:v1.24.2 components: linstor-controller: - tag: v1.28.0 + tag: v1.29.1 image: piraeus-server linstor-satellite: # Pin with digest to ensure we pull the version with downgraded thin-send-recv - tag: v1.28.0 + tag: v1.29.1 image: piraeus-server linstor-csi: tag: v1.6.3 @@ -39,7 +39,7 @@ data: tag: v0.11 image: ktls-utils drbd-module-loader: - tag: v9.2.10 + tag: v9.2.11 # 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. @@ -90,25 +90,25 @@ data: base: registry.k8s.io/sig-storage components: csi-attacher: - tag: v4.6.1 + tag: v4.7.0 image: csi-attacher csi-livenessprobe: - tag: v2.13.1 + tag: v2.14.0 image: livenessprobe csi-provisioner: - tag: v5.0.1 + tag: v5.1.0 image: csi-provisioner csi-snapshotter: - tag: v8.0.1 + tag: v8.1.0 image: csi-snapshotter csi-resizer: - tag: v1.11.1 + tag: v1.12.0 image: csi-resizer csi-external-health-monitor-controller: - tag: v0.12.1 + tag: v0.13.0 image: csi-external-health-monitor-controller csi-node-driver-registrar: - tag: v2.11.1 + tag: v2.12.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 44cc49af2..2ba8f3abc 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.14.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: linstorclusters.piraeus.io spec: group: piraeus.io @@ -44,7 +44,6 @@ spec: description: |- ApiTLS secures the LINSTOR API. - This configures the TLS key and certificate used to secure the LINSTOR API. nullable: true properties: @@ -128,7 +127,6 @@ spec: 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 @@ -148,7 +146,6 @@ spec: 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 @@ -167,7 +164,6 @@ spec: 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 @@ -200,7 +196,6 @@ spec: 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 @@ -212,7 +207,6 @@ spec: 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 @@ -273,7 +267,6 @@ spec: 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. @@ -380,7 +373,6 @@ spec: 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 @@ -425,13 +417,14 @@ spec: version: type: string type: object + required: + - patch type: object type: array properties: 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: @@ -460,16 +453,8 @@ spec: conditions: description: Current LINSTOR Cluster state items: - description: "Condition contains details for one aspect of the current - 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}" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: description: |- @@ -510,12 +495,7 @@ 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. 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 @@ -541,7 +521,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: linstornodeconnections.piraeus.io spec: group: piraeus.io @@ -601,7 +581,6 @@ spec: 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: @@ -664,6 +643,8 @@ spec: - key type: object type: array + required: + - matchLabels type: object type: array type: object @@ -674,16 +655,8 @@ spec: conditions: description: Current LINSTOR Node Connection state items: - description: "Condition contains details for one aspect of the current - 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}" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: description: |- @@ -724,12 +697,7 @@ 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. 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 @@ -755,7 +723,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: linstorsatelliteconfigurations.piraeus.io spec: group: piraeus.io @@ -793,7 +761,6 @@ spec: 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: @@ -801,7 +768,6 @@ spec: 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: @@ -860,7 +826,6 @@ spec: 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 @@ -966,7 +931,6 @@ spec: 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 @@ -1011,13 +975,14 @@ spec: version: type: string type: object + required: + - patch type: object type: array podTemplate: 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 @@ -1028,6 +993,38 @@ spec: description: Properties is a list of properties to set on the node. items: properties: + expandFrom: + description: |- + ExpandFrom can reference multiple resource fields at once. + It either sets the property to an aggregate value based on matched resource fields, or expands to multiple + properties. + properties: + delimiter: + description: Delimiter used to join multiple key and value + pairs together. + type: string + nameTemplate: + description: |- + NameTemplate defines how the property key is expanded. + If set, the template is appended to the defined property name, creating multiple properties instead of one + aggregate. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + nodeFieldRef: + description: Select a field of the node. Supports `metadata.name`, + `metadata.labels['']`, `metadata.annotations['']`. + minLength: 1 + type: string + valueTemplate: + description: |- + ValueTemplate defines how the property value is expanded. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + required: + - nodeFieldRef + type: object name: description: Name of the property to set. minLength: 1 @@ -1047,6 +1044,8 @@ spec: `metadata.labels['']`, `metadata.annotations['']`. minLength: 1 type: string + required: + - nodeFieldRef type: object required: - name @@ -1102,6 +1101,38 @@ spec: description: Properties to set on the storage pool. items: properties: + expandFrom: + description: |- + ExpandFrom can reference multiple resource fields at once. + It either sets the property to an aggregate value based on matched resource fields, or expands to multiple + properties. + properties: + delimiter: + description: Delimiter used to join multiple key and + value pairs together. + type: string + nameTemplate: + description: |- + NameTemplate defines how the property key is expanded. + If set, the template is appended to the defined property name, creating multiple properties instead of one + aggregate. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + nodeFieldRef: + description: Select a field of the node. Supports + `metadata.name`, `metadata.labels['']`, `metadata.annotations['']`. + minLength: 1 + type: string + valueTemplate: + description: |- + ValueTemplate defines how the property value is expanded. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + required: + - nodeFieldRef + type: object name: description: Name of the property to set. minLength: 1 @@ -1122,6 +1153,8 @@ spec: `metadata.name`, `metadata.labels['']`, `metadata.annotations['']`. minLength: 1 type: string + required: + - nodeFieldRef type: object required: - name @@ -1168,16 +1201,8 @@ spec: conditions: description: Current LINSTOR Satellite Config state items: - description: "Condition contains details for one aspect of the current - 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}" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: description: |- @@ -1218,12 +1243,7 @@ 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. 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 @@ -1249,7 +1269,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.14.0 + controller-gen.kubebuilder.io/version: v0.16.1 name: linstorsatellites.piraeus.io spec: group: piraeus.io @@ -1343,7 +1363,6 @@ spec: 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 @@ -1403,7 +1422,6 @@ spec: 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 @@ -1412,7 +1430,6 @@ spec: 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 @@ -1457,12 +1474,46 @@ spec: version: type: string type: object + required: + - patch type: object type: array properties: description: Properties is a list of properties to set on the node. items: properties: + expandFrom: + description: |- + ExpandFrom can reference multiple resource fields at once. + It either sets the property to an aggregate value based on matched resource fields, or expands to multiple + properties. + properties: + delimiter: + description: Delimiter used to join multiple key and value + pairs together. + type: string + nameTemplate: + description: |- + NameTemplate defines how the property key is expanded. + If set, the template is appended to the defined property name, creating multiple properties instead of one + aggregate. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + nodeFieldRef: + description: Select a field of the node. Supports `metadata.name`, + `metadata.labels['']`, `metadata.annotations['']`. + minLength: 1 + type: string + valueTemplate: + description: |- + ValueTemplate defines how the property value is expanded. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + required: + - nodeFieldRef + type: object name: description: Name of the property to set. minLength: 1 @@ -1482,6 +1533,8 @@ spec: `metadata.labels['']`, `metadata.annotations['']`. minLength: 1 type: string + required: + - nodeFieldRef type: object required: - name @@ -1540,6 +1593,38 @@ spec: description: Properties to set on the storage pool. items: properties: + expandFrom: + description: |- + ExpandFrom can reference multiple resource fields at once. + It either sets the property to an aggregate value based on matched resource fields, or expands to multiple + properties. + properties: + delimiter: + description: Delimiter used to join multiple key and + value pairs together. + type: string + nameTemplate: + description: |- + NameTemplate defines how the property key is expanded. + If set, the template is appended to the defined property name, creating multiple properties instead of one + aggregate. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + nodeFieldRef: + description: Select a field of the node. Supports + `metadata.name`, `metadata.labels['']`, `metadata.annotations['']`. + minLength: 1 + type: string + valueTemplate: + description: |- + ValueTemplate defines how the property value is expanded. + * $1 is replaced with the matched key. + * $2 is replaced with the matched value. + type: string + required: + - nodeFieldRef + type: object name: description: Name of the property to set. minLength: 1 @@ -1560,6 +1645,8 @@ spec: `metadata.name`, `metadata.labels['']`, `metadata.annotations['']`. minLength: 1 type: string + required: + - nodeFieldRef type: object required: - name @@ -1607,16 +1694,8 @@ spec: conditions: description: Current LINSTOR Satellite state items: - description: "Condition contains details for one aspect of the current - 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}" + description: Condition contains details for one aspect of the current + state of this API Resource. properties: lastTransitionTime: description: |- @@ -1657,12 +1736,7 @@ 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. 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