diff --git a/Documentation/CRDs/specification.md b/Documentation/CRDs/specification.md
index 62ba4f53e5f0..b84be542f70d 100644
--- a/Documentation/CRDs/specification.md
+++ b/Documentation/CRDs/specification.md
@@ -5556,7 +5556,7 @@ string
(Optional)
- The IP of this endpoint. As a legacy behavior, this supports being given a DNS-adressable hostname as well.
+The IP of this endpoint. As a legacy behavior, this supports being given a DNS-addressable hostname as well.
|
diff --git a/Documentation/Helm-Charts/operator-chart.md b/Documentation/Helm-Charts/operator-chart.md
index b3f181e676b3..b722b44f8894 100644
--- a/Documentation/Helm-Charts/operator-chart.md
+++ b/Documentation/Helm-Charts/operator-chart.md
@@ -53,18 +53,21 @@ The following table lists the configurable parameters of the rook-operator chart
| `containerSecurityContext` | Set the container security context for the operator | `{"capabilities":{"drop":["ALL"]},"runAsGroup":2016,"runAsNonRoot":true,"runAsUser":2016}` |
| `crds.enabled` | Whether the helm chart should create and update the CRDs. If false, the CRDs must be managed independently with deploy/examples/crds.yaml. **WARNING** Only set during first deployment. If later disabled the cluster may be DESTROYED. If the CRDs are deleted in this case, see [the disaster recovery guide](https://rook.io/docs/rook/latest/Troubleshooting/disaster-recovery/#restoring-crds-after-deletion) to restore them. | `true` |
| `csi.allowUnsupportedVersion` | Allow starting an unsupported ceph-csi image | `false` |
-| `csi.attacher.image` | Kubernetes CSI Attacher image | `registry.k8s.io/sig-storage/csi-attacher:v4.5.0` |
+| `csi.attacher.repository` | Kubernetes CSI Attacher image repository | `"registry.k8s.io/sig-storage/csi-attacher"` |
+| `csi.attacher.tag` | Attacher image tag | `"v4.5.0"` |
| `csi.cephFSAttachRequired` | Whether to skip any attach operation altogether for CephFS PVCs. See more details [here](https://kubernetes-csi.github.io/docs/skip-attach.html#skip-attach-with-csi-driver-object). If cephFSAttachRequired is set to false it skips the volume attachments and makes the creation of pods using the CephFS PVC fast. **WARNING** It's highly discouraged to use this for CephFS RWO volumes. Refer to this [issue](https://github.com/kubernetes/kubernetes/issues/103305) for more details. | `true` |
| `csi.cephFSFSGroupPolicy` | Policy for modifying a volume's ownership or permissions when the CephFS PVC is being mounted. supported values are documented at https://kubernetes-csi.github.io/docs/support-fsgroup.html | `"File"` |
| `csi.cephFSKernelMountOptions` | Set CephFS Kernel mount options to use https://docs.ceph.com/en/latest/man/8/mount.ceph/#options. Set to "ms_mode=secure" when connections.encrypted is enabled in CephCluster CR | `nil` |
| `csi.cephFSPluginUpdateStrategy` | CSI CephFS plugin daemonset update strategy, supported values are OnDelete and RollingUpdate | `RollingUpdate` |
| `csi.cephFSPluginUpdateStrategyMaxUnavailable` | A maxUnavailable parameter of CSI cephFS plugin daemonset update strategy. | `1` |
-| `csi.cephcsi.image` | Ceph CSI image | `quay.io/cephcsi/cephcsi:v3.11.0` |
+| `csi.cephcsi.repository` | Ceph CSI image repository | `"quay.io/cephcsi/cephcsi"` |
+| `csi.cephcsi.tag` | Ceph CSI image tag | `"v3.11.0"` |
| `csi.cephfsLivenessMetricsPort` | CSI CephFS driver metrics port | `9081` |
| `csi.cephfsPodLabels` | Labels to add to the CSI CephFS Deployments and DaemonSets Pods | `nil` |
| `csi.clusterName` | Cluster name identifier to set as metadata on the CephFS subvolume and RBD images. This will be useful in cases like for example, when two container orchestrator clusters (Kubernetes/OCP) are using a single ceph cluster | `nil` |
| `csi.csiAddons.enabled` | Enable CSIAddons | `false` |
-| `csi.csiAddons.image` | CSIAddons Sidecar image | `"quay.io/csiaddons/k8s-sidecar:v0.8.0"` |
+| `csi.csiAddons.repository` | CSIAddons sidecar image repository | `"quay.io/csiaddons/k8s-sidecar"` |
+| `csi.csiAddons.tag` | CSIAddons sidecar image tag | `"v0.8.0"` |
| `csi.csiAddonsPort` | CSI Addons server port | `9070` |
| `csi.csiCephFSPluginResource` | CEPH CSI CephFS plugin resource requirement list | see values.yaml |
| `csi.csiCephFSPluginVolume` | The volume of the CephCSI CephFS plugin DaemonSet | `nil` |
@@ -107,7 +110,8 @@ The following table lists the configurable parameters of the rook-operator chart
| `csi.pluginNodeAffinity` | The node labels for affinity of the CephCSI RBD plugin DaemonSet [^1] | `nil` |
| `csi.pluginPriorityClassName` | PriorityClassName to be set on csi driver plugin pods | `"system-node-critical"` |
| `csi.pluginTolerations` | Array of tolerations in YAML format which will be added to CephCSI plugin DaemonSet | `nil` |
-| `csi.provisioner.image` | Kubernetes CSI provisioner image | `registry.k8s.io/sig-storage/csi-provisioner:v4.0.0` |
+| `csi.provisioner.repository` | Kubernetes CSI provisioner image repository | `"registry.k8s.io/sig-storage/csi-provisioner"` |
+| `csi.provisioner.tag` | Provisioner image tag | `"v4.0.0"` |
| `csi.provisionerNodeAffinity` | The node labels for affinity of the CSI provisioner deployment [^1] | `nil` |
| `csi.provisionerPriorityClassName` | PriorityClassName to be set on csi driver provisioner pods | `"system-cluster-critical"` |
| `csi.provisionerReplicas` | Set replicas for csi provisioner deployment | `2` |
@@ -118,14 +122,17 @@ The following table lists the configurable parameters of the rook-operator chart
| `csi.rbdPluginUpdateStrategy` | CSI RBD plugin daemonset update strategy, supported values are OnDelete and RollingUpdate | `RollingUpdate` |
| `csi.rbdPluginUpdateStrategyMaxUnavailable` | A maxUnavailable parameter of CSI RBD plugin daemonset update strategy. | `1` |
| `csi.rbdPodLabels` | Labels to add to the CSI RBD Deployments and DaemonSets Pods | `nil` |
-| `csi.registrar.image` | Kubernetes CSI registrar image | `registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0` |
-| `csi.resizer.image` | Kubernetes CSI resizer image | `registry.k8s.io/sig-storage/csi-resizer:v1.10.0` |
+| `csi.registrar.repository` | Kubernetes CSI registrar image repository | `"registry.k8s.io/sig-storage/csi-node-driver-registrar"` |
+| `csi.registrar.tag` | Registrar image tag | `"v2.10.0"` |
+| `csi.resizer.repository` | Kubernetes CSI resizer image repository | `"registry.k8s.io/sig-storage/csi-resizer"` |
+| `csi.resizer.tag` | Resizer image tag | `"v1.10.0"` |
| `csi.serviceMonitor.enabled` | Enable ServiceMonitor for Ceph CSI drivers | `false` |
| `csi.serviceMonitor.interval` | Service monitor scrape interval | `"10s"` |
| `csi.serviceMonitor.labels` | ServiceMonitor additional labels | `{}` |
| `csi.serviceMonitor.namespace` | Use a different namespace for the ServiceMonitor | `nil` |
| `csi.sidecarLogLevel` | Set logging level for Kubernetes-csi sidecar containers. Supported values from 0 to 5. 0 for general useful logs (the default), 5 for trace level verbosity. | `0` |
-| `csi.snapshotter.image` | Kubernetes CSI snapshotter image | `registry.k8s.io/sig-storage/csi-snapshotter:v7.0.1` |
+| `csi.snapshotter.repository` | Kubernetes CSI snapshotter image repository | `"registry.k8s.io/sig-storage/csi-snapshotter"` |
+| `csi.snapshotter.tag` | Snapshotter image tag | `"v7.0.1"` |
| `csi.topology.domainLabels` | domainLabels define which node labels to use as domains for CSI nodeplugins to advertise their domains | `nil` |
| `csi.topology.enabled` | Enable topology based provisioning | `false` |
| `currentNamespaceOnly` | Whether the operator should watch cluster CRD in its own namespace or not | `false` |
diff --git a/Documentation/Upgrade/rook-upgrade.md b/Documentation/Upgrade/rook-upgrade.md
index 8819f1847048..b1f90e5eb5fd 100644
--- a/Documentation/Upgrade/rook-upgrade.md
+++ b/Documentation/Upgrade/rook-upgrade.md
@@ -60,6 +60,10 @@ those releases.
If there are pods named `csi-*plugin-holder-*` in the Rook operator namespace, see the
[detailed documentation](../CRDs/Cluster/network-providers.md#holder-pod-deprecation)
to disable them. This is optional for v1.14, but will be required in a future release.
+* In the operator helm chart, the images for the CSI driver are now specified with separate
+ `repository` and `tag` values. If the CSI images have been customized, convert them from the
+ `image` value to the separated `repository` and `tag` values.
+
## Considerations
diff --git a/PendingReleaseNotes.md b/PendingReleaseNotes.md
index 41f12b6b9f2d..d583a26f952e 100644
--- a/PendingReleaseNotes.md
+++ b/PendingReleaseNotes.md
@@ -23,3 +23,4 @@
- Support for virtual style hosting for s3 buckets in the CephObjectStore.
- Add option to specify prefix for the OBC provisioner.
- Support Azure Key Vault for storing OSD encryption keys.
+- Separate image repository and tag values in the helm chart for the CSI images.
diff --git a/deploy/charts/rook-ceph/templates/configmap.yaml b/deploy/charts/rook-ceph/templates/configmap.yaml
index c6f385451421..2d502b8ce294 100644
--- a/deploy/charts/rook-ceph/templates/configmap.yaml
+++ b/deploy/charts/rook-ceph/templates/configmap.yaml
@@ -80,33 +80,33 @@ data:
CSI_LEADER_ELECTION_RETRY_PERIOD: {{ .Values.csi.csiLeaderElectionRetryPeriod | quote }}
{{- end }}
{{- if .Values.csi.cephcsi }}
-{{- if .Values.csi.cephcsi.image }}
- ROOK_CSI_CEPH_IMAGE: {{ .Values.csi.cephcsi.image | quote }}
+{{- if and .Values.csi.cephcsi.repository .Values.csi.cephcsi.tag }}
+ ROOK_CSI_CEPH_IMAGE: "{{ .Values.csi.cephcsi.repository }}:{{ .Values.csi.cephcsi.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.registrar }}
-{{- if .Values.csi.registrar.image }}
- ROOK_CSI_REGISTRAR_IMAGE: {{ .Values.csi.registrar.image | quote }}
+{{- if and .Values.csi.registrar.repository .Values.csi.registrar.tag }}
+ ROOK_CSI_REGISTRAR_IMAGE: "{{ .Values.csi.registrar.repository }}:{{ .Values.csi.registrar.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.provisioner }}
-{{- if .Values.csi.provisioner.image }}
- ROOK_CSI_PROVISIONER_IMAGE: {{ .Values.csi.provisioner.image | quote }}
+{{- if and .Values.csi.provisioner.repository .Values.csi.provisioner.tag }}
+ ROOK_CSI_PROVISIONER_IMAGE: "{{ .Values.csi.provisioner.repository }}:{{ .Values.csi.provisioner.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.snapshotter }}
-{{- if .Values.csi.snapshotter.image }}
- ROOK_CSI_SNAPSHOTTER_IMAGE: {{ .Values.csi.snapshotter.image | quote }}
+{{- if and .Values.csi.snapshotter.repository .Values.csi.snapshotter.tag }}
+ ROOK_CSI_SNAPSHOTTER_IMAGE: "{{ .Values.csi.snapshotter.repository }}:{{ .Values.csi.snapshotter.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.attacher }}
-{{- if .Values.csi.attacher.image }}
- ROOK_CSI_ATTACHER_IMAGE: {{ .Values.csi.attacher.image | quote }}
+{{- if and .Values.csi.attacher.repository .Values.csi.attacher.tag }}
+ ROOK_CSI_ATTACHER_IMAGE: "{{ .Values.csi.attacher.repository }}:{{ .Values.csi.attacher.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.resizer }}
-{{- if .Values.csi.resizer.image }}
- ROOK_CSI_RESIZER_IMAGE: {{ .Values.csi.resizer.image | quote }}
+{{- if and .Values.csi.resizer.repository .Values.csi.resizer.tag }}
+ ROOK_CSI_RESIZER_IMAGE: "{{ .Values.csi.resizer.repository }}:{{ .Values.csi.resizer.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.imagePullPolicy }}
@@ -114,8 +114,8 @@ data:
{{- end }}
{{- if .Values.csi.csiAddons }}
CSI_ENABLE_CSIADDONS: {{ .Values.csi.csiAddons.enabled | quote }}
-{{- if .Values.csi.csiAddons.image }}
- ROOK_CSIADDONS_IMAGE: {{ .Values.csi.csiAddons.image | quote }}
+{{- if and .Values.csi.csiAddons.repository .Values.csi.csiAddons.tag }}
+ ROOK_CSIADDONS_IMAGE: "{{ .Values.csi.csiAddons.repository }}:{{ .Values.csi.csiAddons.tag }}"
{{- end }}
{{- end }}
{{- if .Values.csi.topology }}
diff --git a/deploy/charts/rook-ceph/templates/resources.yaml b/deploy/charts/rook-ceph/templates/resources.yaml
index bea766e23572..d02d81c0d8bd 100644
--- a/deploy/charts/rook-ceph/templates/resources.yaml
+++ b/deploy/charts/rook-ceph/templates/resources.yaml
@@ -10313,7 +10313,7 @@ spec:
description: The DNS-addressable Hostname of this endpoint. This field will be preferred over IP if both are given.
type: string
ip:
- description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-adressable hostname as well.
+ description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-addressable hostname as well.
type: string
type: object
x-kubernetes-map-type: atomic
diff --git a/deploy/charts/rook-ceph/values.yaml b/deploy/charts/rook-ceph/values.yaml
index cd8bb03d02c1..2e733475927b 100644
--- a/deploy/charts/rook-ceph/values.yaml
+++ b/deploy/charts/rook-ceph/values.yaml
@@ -478,34 +478,40 @@ csi:
csiLeaderElectionRetryPeriod:
cephcsi:
- # -- Ceph CSI image
- # @default -- `quay.io/cephcsi/cephcsi:v3.11.0`
- image:
+ # -- Ceph CSI image repository
+ repository: quay.io/cephcsi/cephcsi
+ # -- Ceph CSI image tag
+ tag: v3.11.0
registrar:
- # -- Kubernetes CSI registrar image
- # @default -- `registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0`
- image:
+ # -- Kubernetes CSI registrar image repository
+ repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
+ # -- Registrar image tag
+ tag: v2.10.0
provisioner:
- # -- Kubernetes CSI provisioner image
- # @default -- `registry.k8s.io/sig-storage/csi-provisioner:v4.0.0`
- image:
+ # -- Kubernetes CSI provisioner image repository
+ repository: registry.k8s.io/sig-storage/csi-provisioner
+ # -- Provisioner image tag
+ tag: v4.0.0
snapshotter:
- # -- Kubernetes CSI snapshotter image
- # @default -- `registry.k8s.io/sig-storage/csi-snapshotter:v7.0.1`
- image:
+ # -- Kubernetes CSI snapshotter image repository
+ repository: registry.k8s.io/sig-storage/csi-snapshotter
+ # -- Snapshotter image tag
+ tag: v7.0.1
attacher:
- # -- Kubernetes CSI Attacher image
- # @default -- `registry.k8s.io/sig-storage/csi-attacher:v4.5.0`
- image:
+ # -- Kubernetes CSI Attacher image repository
+ repository: registry.k8s.io/sig-storage/csi-attacher
+ # -- Attacher image tag
+ tag: v4.5.0
resizer:
- # -- Kubernetes CSI resizer image
- # @default -- `registry.k8s.io/sig-storage/csi-resizer:v1.10.0`
- image:
+ # -- Kubernetes CSI resizer image repository
+ repository: registry.k8s.io/sig-storage/csi-resizer
+ # -- Resizer image tag
+ tag: v1.10.0
# -- Image pull policy
imagePullPolicy: IfNotPresent
@@ -522,8 +528,10 @@ csi:
csiAddons:
# -- Enable CSIAddons
enabled: false
- # -- CSIAddons Sidecar image
- image: "quay.io/csiaddons/k8s-sidecar:v0.8.0"
+ # -- CSIAddons sidecar image repository
+ repository: quay.io/csiaddons/k8s-sidecar
+ # -- CSIAddons sidecar image tag
+ tag: v0.8.0
nfs:
# -- Enable the nfs csi driver
diff --git a/deploy/examples/crds.yaml b/deploy/examples/crds.yaml
index e6892599247a..942b083342ef 100644
--- a/deploy/examples/crds.yaml
+++ b/deploy/examples/crds.yaml
@@ -10304,7 +10304,7 @@ spec:
description: The DNS-addressable Hostname of this endpoint. This field will be preferred over IP if both are given.
type: string
ip:
- description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-adressable hostname as well.
+ description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-addressable hostname as well.
type: string
type: object
x-kubernetes-map-type: atomic
diff --git a/pkg/apis/ceph.rook.io/v1/types.go b/pkg/apis/ceph.rook.io/v1/types.go
index 6933bcb62b67..c7995cfc5cde 100755
--- a/pkg/apis/ceph.rook.io/v1/types.go
+++ b/pkg/apis/ceph.rook.io/v1/types.go
@@ -1613,7 +1613,7 @@ type GatewaySpec struct {
// Kubernetes's v1.EndpointAddress.
// +structType=atomic
type EndpointAddress struct {
- // The IP of this endpoint. As a legacy behavior, this supports being given a DNS-adressable hostname as well.
+ // The IP of this endpoint. As a legacy behavior, this supports being given a DNS-addressable hostname as well.
// +optional
IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"`