diff --git a/cli/cmd/version_test.go b/cli/cmd/version_test.go index e79080fae..8c2a5a916 100644 --- a/cli/cmd/version_test.go +++ b/cli/cmd/version_test.go @@ -28,7 +28,7 @@ const ( testVersionValue = "1.0.0" testGoVersion = "go1.19" testAPIVersion = "v1" - testLongVersion = "26.06.0-custom+20250101" + testLongVersion = "26.06.1-custom+20250101" ) func withVersionTestMode(clientOnlyVal bool, operatingMode, outputFormat string, fn func()) { diff --git a/config/config.go b/config/config.go index 24463be5e..c8cff2e77 100644 --- a/config/config.go +++ b/config/config.go @@ -149,7 +149,7 @@ const ( OrchestratorName = "trident" OrchestratorClientName = OrchestratorName + "ctl" OrchestratorAPIVersion = "1" - DefaultOrchestratorVersion = "26.06.0" + DefaultOrchestratorVersion = "26.06.1" PersistentStoreBootstrapAttempts = 30 PersistentStoreBootstrapTimeout = PersistentStoreBootstrapAttempts * time.Second PersistentStoreTimeout = 10 * time.Second diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index df6730ef0..0e3788709 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -505,7 +505,7 @@ spec: fieldPath: metadata.name - name: OPERATOR_NAME value: trident-operator - image: docker.io/netapp/trident-operator:26.06.0 + image: docker.io/netapp/trident-operator:26.06.1 imagePullPolicy: IfNotPresent name: trident-operator resources: diff --git a/deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml b/deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml index 6f71e0636..c184244d6 100644 --- a/deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml +++ b/deploy/crds/tridentorchestrator_cr_imagepullsecrets.yaml @@ -5,6 +5,6 @@ metadata: spec: debug: true namespace: trident - tridentImage: netapp/trident:26.06.0 + tridentImage: netapp/trident:26.06.1 imagePullSecrets: - - thisisasecret + - thisisasecret diff --git a/deploy/operator.yaml b/deploy/operator.yaml index 76dda4867..71d7f6f4d 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -22,10 +22,10 @@ spec: serviceAccountName: trident-operator containers: - name: trident-operator - image: docker.io/netapp/trident-operator:26.06.0 + image: docker.io/netapp/trident-operator:26.06.1 command: - - "/trident-operator" - - "--debug" + - "/trident-operator" + - "--debug" imagePullPolicy: IfNotPresent securityContext: readOnlyRootFilesystem: true diff --git a/frontend/csi/utils.go b/frontend/csi/utils.go index 51c6e8b93..f20dd3528 100644 --- a/frontend/csi/utils.go +++ b/frontend/csi/utils.go @@ -392,7 +392,7 @@ func ensureLUKSVolumePassphrase( Logc(ctx).WithFields(LogFields{ "volume": volumeId, }).Debugf("Current LUKS passphrase name '%s'.", luksPassphraseName) - // Disabled in all supported versions until 26.06.0. Users must track LUKS passphrases for volumes. + // Disabled in all supported versions until 26.06.1. Users must track LUKS passphrases for volumes. // if forceUpdate { // luksPassphraseNames := []string{luksPassphraseName} // err = restClient.UpdateVolumeLUKSPassphraseNames(ctx, volumeId, luksPassphraseNames) @@ -421,7 +421,7 @@ func ensureLUKSVolumePassphrase( "volume": volumeId, }).Debugf("Current LUKS passphrase name '%s'.", previousLUKSPassphraseName) - // Disabled in all supported versions until 26.06.0. Users must track LUKS passphrases for volumes. + // Disabled in all supported versions until 26.06.1. Users must track LUKS passphrases for volumes. // Send up current and previous passphrase names, if rotation fails // luksPassphraseNames := []string{luksPassphraseName, previousLUKSPassphraseName} // err = restClient.UpdateVolumeLUKSPassphraseNames(ctx, volumeId, luksPassphraseNames) @@ -449,7 +449,7 @@ func ensureLUKSVolumePassphrase( // isCurrent, err := luksDevice.CheckPassphrase(ctx, luksPassphrase) // if err != nil { // return fmt.Errorf("could not check current passphrase for LUKS volume; %v", err) - // Disabled in all supported versions until 26.06.0. Users must track LUKS passphrases for volumes. + // Disabled in all supported versions until 26.06.1. Users must track LUKS passphrases for volumes. // } else if isCurrent { // // Send only current passphrase up // luksPassphraseNames = []string{luksPassphraseName} diff --git a/hack/VERSION b/hack/VERSION index 4fd726b94..73c81fd32 100644 --- a/hack/VERSION +++ b/hack/VERSION @@ -1 +1 @@ -26.06.0 +26.06.1 diff --git a/helm/trident-operator/Chart.yaml b/helm/trident-operator/Chart.yaml index 8909a741e..05ad551bf 100644 --- a/helm/trident-operator/Chart.yaml +++ b/helm/trident-operator/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: trident-operator -version: 100.2606.0 # Some services require a semver here: "100." +version: 100.2606.1 # Some services require a semver here: "100." kubeVersion: ">= 1.24.0-0" description: "A Helm chart for deploying NetApp's Trident CSI storage provisioner using the Trident Operator." type: application @@ -11,4 +11,4 @@ icon: "https://raw.githubusercontent.com/NetApp/trident/master/logo/trident.png" # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 26.06.0 +appVersion: 26.06.1 diff --git a/helm/trident-operator/templates/NOTES.txt b/helm/trident-operator/templates/NOTES.txt index acb0dd88b..f0a393011 100644 --- a/helm/trident-operator/templates/NOTES.txt +++ b/helm/trident-operator/templates/NOTES.txt @@ -2,7 +2,7 @@ Thank you for installing {{ .Chart.Name }}, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes. -Your release is named '{{ .Release.Name }}' and is installed into the '{{ .Release.Namespace }}' namespace. +Your release is named '{{ .Release.Name }}' and is installed into the '{{ include "trident.namespace" . }}' namespace. Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster. To configure Trident to manage storage resources, you will now need to configure at least one storage diff --git a/helm/trident-operator/templates/_helpers.tpl b/helm/trident-operator/templates/_helpers.tpl index bbf3dc01f..bd7f33d5b 100644 --- a/helm/trident-operator/templates/_helpers.tpl +++ b/helm/trident-operator/templates/_helpers.tpl @@ -50,6 +50,13 @@ app.kubernetes.io/name: {{ include "trident.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} +{{/* +Resolve namespace for namespaced resources. +*/}} +{{- define "trident.namespace" -}} +{{- default .Release.Namespace .Values.namespace -}} +{{- end }} + {{/* Trident operator level */}} @@ -225,7 +232,7 @@ Override auto-detection and force install the roles by setting Values.forceInsta */}} {{- define "shouldInstallRancherRoles" -}} {{- $isRancher := false -}} -{{- $currentNs := .Release.Namespace -}} +{{- $currentNs := include "trident.namespace" . -}} {{- $currentNsObj := lookup "v1" "Namespace" "" $currentNs -}} {{- /* Check if 'forceInstallRancherClusterRoles' is set */ -}} {{- if .Values.forceInstallRancherClusterRoles }} diff --git a/helm/trident-operator/templates/clusterrolebinding-rancher.yaml b/helm/trident-operator/templates/clusterrolebinding-rancher.yaml index b70fcff99..b6c718ebd 100644 --- a/helm/trident-operator/templates/clusterrolebinding-rancher.yaml +++ b/helm/trident-operator/templates/clusterrolebinding-rancher.yaml @@ -10,5 +10,5 @@ roleRef: subjects: - kind: ServiceAccount name: trident-operator - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} {{- end }} diff --git a/helm/trident-operator/templates/clusterrolebinding.yaml b/helm/trident-operator/templates/clusterrolebinding.yaml index e62975255..d52c6a80f 100644 --- a/helm/trident-operator/templates/clusterrolebinding.yaml +++ b/helm/trident-operator/templates/clusterrolebinding.yaml @@ -7,7 +7,7 @@ metadata: subjects: - kind: ServiceAccount name: trident-operator - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} roleRef: kind: ClusterRole name: trident-operator diff --git a/helm/trident-operator/templates/deployment.yaml b/helm/trident-operator/templates/deployment.yaml index 9de1109ca..8bd3cea4c 100644 --- a/helm/trident-operator/templates/deployment.yaml +++ b/helm/trident-operator/templates/deployment.yaml @@ -8,7 +8,7 @@ metadata: labels: app: operator.trident.netapp.io name: trident-operator - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} spec: replicas: 1 strategy: diff --git a/helm/trident-operator/templates/namespace.yaml b/helm/trident-operator/templates/namespace.yaml new file mode 100644 index 000000000..36f39f4f2 --- /dev/null +++ b/helm/trident-operator/templates/namespace.yaml @@ -0,0 +1,9 @@ +{{- if .Values.namespace }} +apiVersion: v1 +kind: Namespace +metadata: + name: {{ .Values.namespace }} + labels: + {{- include "trident.labels" . | nindent 4 }} +{{- end }} + diff --git a/helm/trident-operator/templates/postdeletecrdshook.yaml b/helm/trident-operator/templates/postdeletecrdshook.yaml index 11357458b..9a2ca6ea3 100644 --- a/helm/trident-operator/templates/postdeletecrdshook.yaml +++ b/helm/trident-operator/templates/postdeletecrdshook.yaml @@ -4,7 +4,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: post-delete-service-account - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} annotations: "helm.sh/hook": post-delete "helm.sh/hook-weight": "-10" @@ -38,7 +38,7 @@ metadata: subjects: - kind: ServiceAccount name: post-delete-service-account - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} roleRef: kind: ClusterRole name: post-delete-cluster-role @@ -50,7 +50,7 @@ apiVersion: batch/v1 kind: Job metadata: name: post-delete-hook - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} labels: app.kubernetes.io/managed-by: {{ .Release.Service | quote }} app.kubernetes.io/instance: {{ .Release.Name | quote }} @@ -81,4 +81,4 @@ spec: restartPolicy: Never backoffLimit: 4 -{{- end }} \ No newline at end of file +{{- end }} diff --git a/helm/trident-operator/templates/postinstallupgradehook.yaml b/helm/trident-operator/templates/postinstallupgradehook.yaml index fa92f01a2..b3e2ca4b9 100644 --- a/helm/trident-operator/templates/postinstallupgradehook.yaml +++ b/helm/trident-operator/templates/postinstallupgradehook.yaml @@ -3,7 +3,7 @@ apiVersion: v1 kind: Service metadata: name: trident-operator - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} spec: selector: app: operator.trident.netapp.io @@ -17,7 +17,7 @@ apiVersion: v1 kind: Pod metadata: name: trident-post-install-upgrade-hook - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} annotations: "helm.sh/hook": post-install, post-upgrade "helm.sh/hook-delete-policy": hook-succeeded, hook-failed diff --git a/helm/trident-operator/templates/predeletecrdshook.yaml b/helm/trident-operator/templates/predeletecrdshook.yaml index 8019324f9..e39d40a92 100644 --- a/helm/trident-operator/templates/predeletecrdshook.yaml +++ b/helm/trident-operator/templates/predeletecrdshook.yaml @@ -4,7 +4,7 @@ apiVersion: batch/v1 kind: Job metadata: name: pre-delete-hook - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} labels: app.kubernetes.io/managed-by: {{ .Release.Service | quote }} app.kubernetes.io/instance: {{ .Release.Name | quote }} @@ -28,8 +28,8 @@ spec: - -c - | set -x - if kubectl get torc trident -n trident; then - kubectl patch torc trident -n trident --type=merge -p '{"spec":{"wipeout":["crds"],"uninstall":true, "skipCRDsToObliviate":["tridentorchestrators.trident.netapp.io", "tridentconfigurators.trident.netapp.io"]}}' + if kubectl get torc trident -n {{ include "trident.namespace" $ | quote }}; then + kubectl patch torc trident -n {{ include "trident.namespace" $ | quote }} --type=merge -p '{"spec":{"wipeout":["crds"],"uninstall":true, "skipCRDsToObliviate":["tridentorchestrators.trident.netapp.io", "tridentconfigurators.trident.netapp.io"]}}' while kubectl get crds | grep '.trident.netapp.io' | grep -v -e 'tridentorchestrators.trident.netapp.io' -e 'tridentconfigurators.trident.netapp.io'; do echo 'Waiting for CRDs to be deleted...' sleep 5 diff --git a/helm/trident-operator/templates/serviceaccount.yaml b/helm/trident-operator/templates/serviceaccount.yaml index 7a73016df..5e9698c30 100644 --- a/helm/trident-operator/templates/serviceaccount.yaml +++ b/helm/trident-operator/templates/serviceaccount.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: trident-operator - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} {{- if and (ne .Values.cloudIdentity "") (ne .Values.cloudProvider "") }} {{- $cloudIdentity := trimPrefix "'" .Values.cloudIdentity }} {{- $cloudIdentity = trimSuffix "'" $cloudIdentity }} diff --git a/helm/trident-operator/templates/tridentorchestrator.yaml b/helm/trident-operator/templates/tridentorchestrator.yaml index 5f5038df8..65e3e6fcc 100644 --- a/helm/trident-operator/templates/tridentorchestrator.yaml +++ b/helm/trident-operator/templates/tridentorchestrator.yaml @@ -3,7 +3,7 @@ kind: TridentOrchestrator metadata: name: trident spec: - namespace: {{ .Release.Namespace }} + namespace: {{ include "trident.namespace" . }} enableForceDetach: {{ include "trident.enableForceDetach" $ }} IPv6: {{ include "trident.IPv6" $ }} k8sTimeout: {{ .Values.tridentK8sTimeout }} diff --git a/helm/trident-operator/values.yaml b/helm/trident-operator/values.yaml index e30cee4bf..895c139c1 100644 --- a/helm/trident-operator/values.yaml +++ b/helm/trident-operator/values.yaml @@ -4,6 +4,10 @@ # helmHookImage specifies the image used for Helm hook jobs helmHookImage: "alpine/k8s:1.33.0" +# namespace overrides the deployment namespace for chart resources when set. +# Leave empty to use the Helm release namespace. +namespace: "" + ## Node labels for pod assignment ## ref: https://kubernetes.io/docs/user-guide/node-selection/ nodeSelector: {} @@ -29,13 +33,12 @@ affinity: - key: kubernetes.io/arch operator: In values: - - arm64 - - amd64 + - arm64 + - amd64 - key: kubernetes.io/os operator: In values: - - linux - + - linux # tridentControllerPluginNodeSelector additional nodeSelectors for the Pod running the Trident Controller CSI Plugin. # tridentControllerPluginNodeSelector : {} @@ -46,11 +49,9 @@ affinity: # tridentNodePluginNodeSelector additional nodeSelectors for Pods running the Trident Node CSI Plugin. # tridentNodePluginNodeSelector : {} -# tridentNodePluginTolerations overrides tolerations for Pods running the Trident Node CSI Plugin. +# tridentNodePluginTolerations overrides tolerations for Pods running the Trident Node CSI Plugin. # tridentNodePluginTolerations: [] - - # imageRegistry identifies the registry for the trident-operator, trident, and other images. Leave empty to accept the default. imageRegistry: "" @@ -63,8 +64,7 @@ imagePullSecrets: [] # kubeletDir allows overriding the host location of kubelet's internal state. (default "/var/lib/kubelet"). kubeletDir: "" - -# operatorLogLevel allows the log level of the Trident operator to be set to one of these: +# operatorLogLevel allows the log level of the Trident operator to be set to one of these: # trace, debug, info, warn, error, fatal. # operatorLogLevel: "info" @@ -77,7 +77,6 @@ operatorImage: "" # operatorImageTag allows overriding the tag of the trident-operator image. operatorImageTag: "" - # tridentIPv6 allows enabling Trident to work in IPv6 clusters. tridentIPv6: false @@ -170,7 +169,7 @@ iscsiSelfHealingWaitTime: "7m0s" configuratorReconcileInterval: 30m0s # forceInstallRancherClusterRoles will install a Rancher specific ClusterRole and ClusterRoleBinding when set to true. -# When set to false, the ClusterRole and ClusterRoleBinding will be installed only when a Rancher cluster is detected. +# When set to false, the ClusterRole and ClusterRoleBinding will be installed only when a Rancher cluster is detected. forceInstallRancherClusterRoles: false # Auto generated ANF backend related fields consumed by the configurator controller. @@ -191,10 +190,10 @@ anfConfigurator: ontapConfigurator: enabled: false svms: - - fsxnID: '' - svmName: '' + - fsxnID: "" + svmName: "" protocols: [] - authType: '' + authType: "" # enableConcurrency enables the concurrent core feature in Trident **TECH PREVIEW** enableConcurrency: false @@ -221,7 +220,7 @@ enableConcurrency: false # sub-sections: 'linux' and 'windows'. Each OS section lists its specific containers. # # 3. OPERATOR POD: -# Unlike controller and node pods, the operator has actual default values directly specified +# Unlike controller and node pods, the operator has actual default values directly specified # (not in comments). If removed, no values will be applied. resources: controller: diff --git a/operator/controllers/orchestrator/installer/installer_test.go b/operator/controllers/orchestrator/installer/installer_test.go index aaae743c9..f4ef4b5d2 100644 --- a/operator/controllers/orchestrator/installer/installer_test.go +++ b/operator/controllers/orchestrator/installer/installer_test.go @@ -75,7 +75,7 @@ func createTestLabels() map[string]string { labels := make(map[string]string) labels[appLabelKey] = appLabelValue labels[K8sVersionLabelKey] = "v1.28.8" - labels[TridentVersionLabelKey] = "v26.06.0" + labels[TridentVersionLabelKey] = "v26.06.1" return labels } diff --git a/storage_drivers/ontap/api/client_app_transport.go b/storage_drivers/ontap/api/client_app_transport.go index 074040c6a..b51d88fce 100644 --- a/storage_drivers/ontap/api/client_app_transport.go +++ b/storage_drivers/ontap/api/client_app_transport.go @@ -14,7 +14,7 @@ import ( const ClientAppHeader = "X-Dot-Client-App" // ClientAppHeaderValue returns the value to send in the X-Dot-Client-App header -// for every REST/ZAPI request Trident issues to ONTAP, e.g. "Trident/26.06.0". +// for every REST/ZAPI request Trident issues to ONTAP, e.g. "Trident/26.06.1". func ClientAppHeaderValue() string { return "Trident/" + tridentconfig.OrchestratorVersion.ShortString() } diff --git a/storage_drivers/ontap/api/client_app_transport_test.go b/storage_drivers/ontap/api/client_app_transport_test.go index b1d1fa04b..f20cf20dc 100644 --- a/storage_drivers/ontap/api/client_app_transport_test.go +++ b/storage_drivers/ontap/api/client_app_transport_test.go @@ -36,7 +36,7 @@ func TestClientAppHeaderName(t *testing.T) { // TestClientAppTransport_RoundTrip verifies the transport stamps the header // on every outgoing request. func TestClientAppTransport_RoundTrip(t *testing.T) { - const want = "Trident/26.06.0" + const want = "Trident/26.06.1" var seen atomic.Int32 base := roundTripFunc(func(r *http.Request) (*http.Response, error) {