diff --git a/Documentation/CRDs/Cluster/ceph-cluster-crd.md b/Documentation/CRDs/Cluster/ceph-cluster-crd.md index 206696dafdd0..72b0fbc70115 100755 --- a/Documentation/CRDs/Cluster/ceph-cluster-crd.md +++ b/Documentation/CRDs/Cluster/ceph-cluster-crd.md @@ -369,6 +369,7 @@ You can set annotations / labels for Rook components for the list of key value p * `mgr`: Set annotations / labels for MGRs * `mon`: Set annotations / labels for mons * `osd`: Set annotations / labels for OSDs +* `dashboard`: Set annotations / labels for the dashboard service * `prepareosd`: Set annotations / labels for OSD Prepare Jobs * `monitoring`: Set annotations / labels for service monitor * `crashcollector`: Set annotations / labels for crash collectors diff --git a/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md b/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md index 1575ad3020b5..dd4b8ad37b6d 100644 --- a/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md +++ b/Documentation/CRDs/Object-Storage/ceph-object-store-crd.md @@ -65,7 +65,7 @@ spec: #zone: #name: zone-a #hosting: - # dnsName: + # dnsNames: # - "mystore.example.com" # - "mystore.example.org" ``` diff --git a/Documentation/CRDs/specification.md b/Documentation/CRDs/specification.md index 141fcabfac78..9c7b6735785d 100644 --- a/Documentation/CRDs/specification.md +++ b/Documentation/CRDs/specification.md @@ -7386,6 +7386,8 @@ string

"crashcollector"

+

"dashboard"

+

"mds"

"mgr"

diff --git a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-drivers.md b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-drivers.md index 89b24a4bd14f..11d041d26cf6 100644 --- a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-drivers.md +++ b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-drivers.md @@ -18,7 +18,7 @@ namespace as the operator when the first CephCluster CR is created. ## Supported Versions -The supported Ceph CSI version is 3.3.0 or greater with Rook. Refer to ceph csi [releases](https://github.com/ceph/ceph-csi/releases) +The two most recent Ceph CSI version are supported with Rook. Refer to ceph csi [releases](https://github.com/ceph/ceph-csi/releases) for more information. ## Static Provisioning @@ -92,19 +92,6 @@ volumesnapshotclass, search for: `# csi-provisioner-name` All CSI pods are deployed with a sidecar container that provides a Prometheus metric for tracking whether the CSI plugin is alive and running. -These metrics are meant to be scraped (collected) by Prometheus but can also be -accessed through a GET request to a specific node as follows: - -`curl -X get http://[pod ip]:[liveness-port][liveness-path] 2>/dev/null | grep csi` - -For example: - -```console -$ curl -X GET http://10.109.65.142:9080/metrics 2>/dev/null | grep csi -# HELP csi_liveness Liveness Probe -# TYPE csi_liveness gauge -csi_liveness 1 -``` Check the [monitoring documentation](../Monitoring/ceph-monitoring.md) to see how to integrate CSI liveness and GRPC metrics into Ceph monitoring. diff --git a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-snapshot.md b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-snapshot.md index cf3c21be6946..900e36a6186c 100644 --- a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-snapshot.md +++ b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-snapshot.md @@ -4,14 +4,7 @@ title: Snapshots ## Prerequisites -- Rook officially supports v1 snapshots for Kubernetes v1.20+. - -- Install the snapshot controller and snapshot v1 CRD as required. More info can be found [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v6.0.1#usage). - -!!! note - If only Alpha snapshots are available, enable snapshotter in `rook-ceph-operator-config` or helm chart `values.yaml`, change the external-snapshotter image to `registry.k8s.io/sig-storage/csi-snapshotter:v1.2.2` and refer to the [alpha snapshots documentation](https://github.com/rook/rook/blob/release-1.3/Documentation/ceph-csi-drivers.md#rbd-snapshots) - - VolumeSnapshot betav1 is deprecated in Kubernetes 1.20+ and removed in 1.24.0. If you still require betav1 snapshots, change the external-snapshotter image to `registry.k8s.io/sig-storage/csi-snapshotter:v5.0.1` and refer to the [betav1 snapshots documentation](https://rook.github.io/docs/rook/v1.8/ceph-csi-snapshot.html#rbd-snapshots) +- Install the [snapshot controller and snapshot v1 CRD](https://github.com/kubernetes-csi/external-snapshotter/tree/master#usage). - We also need a `VolumeSnapshotClass` for volume snapshot to work. The purpose of a `VolumeSnapshotClass` is defined in [the kubernetes @@ -24,10 +17,6 @@ In short, as the documentation describes it: VolumeSnapshotClass provides a way to describe the "classes" of storage when provisioning a volume snapshot. -## Upgrade Snapshot API - -If your Kubernetes version is updated to a newer version of the snapshot API, follow the upgrade guide [here](https://github.com/kubernetes-csi/external-snapshotter/tree/v4.0.0#upgrade) to upgrade from v1alpha1 to v1beta1, or v1beta1 to v1. - ## RBD Snapshots ### VolumeSnapshotClass diff --git a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-volume-clone.md b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-volume-clone.md index 9e2d4f325e80..23841070fe96 100644 --- a/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-volume-clone.md +++ b/Documentation/Storage-Configuration/Ceph-CSI/ceph-csi-volume-clone.md @@ -15,11 +15,6 @@ for more info. ## RBD Volume Cloning -### Volume Clone Prerequisites - - 1. Requires Kubernetes v1.16+ which supports volume clone. - 2. Ceph-csi diver v3.0.0+ which supports volume clone. - ### Volume Cloning In diff --git a/Documentation/Storage-Configuration/Monitoring/ceph-monitoring.md b/Documentation/Storage-Configuration/Monitoring/ceph-monitoring.md index 46e809673735..7e93592d9599 100644 --- a/Documentation/Storage-Configuration/Monitoring/ceph-monitoring.md +++ b/Documentation/Storage-Configuration/Monitoring/ceph-monitoring.md @@ -273,6 +273,10 @@ kubectl create -f csi-metrics-service-monitor.yaml This will create the service monitor to have prometheus monitor CSI +!!! note + Please note that the liveness sidecar is disabled by default. + To enable it set `CSI_ENABLE_LIVENESS` to `true` in the Rook operator settings (operator.yaml). + ### Collecting RBD per-image IO statistics RBD per-image IO statistics collection is disabled by default. This can be enabled by setting `enableRBDStats: true` in the CephBlockPool spec. diff --git a/deploy/charts/rook-ceph-cluster/values.yaml b/deploy/charts/rook-ceph-cluster/values.yaml index 6d04631afcec..58a680f01a9f 100644 --- a/deploy/charts/rook-ceph-cluster/values.yaml +++ b/deploy/charts/rook-ceph-cluster/values.yaml @@ -270,6 +270,7 @@ cephClusterSpec: # prepareosd: # # If no mgr annotations are set, prometheus scrape annotations will be set by default. # mgr: + # dashboard: # labels: # all: @@ -281,6 +282,7 @@ cephClusterSpec: # # monitoring is a list of key-value pairs. It is injected into all the monitoring resources created by operator. # # These labels can be passed as LabelSelector to Prometheus # monitoring: + # dashboard: resources: mgr: diff --git a/pkg/apis/ceph.rook.io/v1/annotations.go b/pkg/apis/ceph.rook.io/v1/annotations.go index 10b8f407ce6d..b2d77dc2d06a 100644 --- a/pkg/apis/ceph.rook.io/v1/annotations.go +++ b/pkg/apis/ceph.rook.io/v1/annotations.go @@ -37,6 +37,11 @@ func GetMgrAnnotations(a AnnotationsSpec) Annotations { return mergeAllAnnotationsWithKey(a, KeyMgr) } +// GetDashboardAnnotations returns the Annotations for the Dashboard service +func GetDashboardAnnotations(a AnnotationsSpec) Annotations { + return mergeAllAnnotationsWithKey(a, KeyDashboard) +} + // GetMonAnnotations returns the Annotations for the MON service func GetMonAnnotations(a AnnotationsSpec) Annotations { return mergeAllAnnotationsWithKey(a, KeyMon) diff --git a/pkg/apis/ceph.rook.io/v1/keys.go b/pkg/apis/ceph.rook.io/v1/keys.go index 72e18b30fa6a..05395f1e3423 100644 --- a/pkg/apis/ceph.rook.io/v1/keys.go +++ b/pkg/apis/ceph.rook.io/v1/keys.go @@ -23,6 +23,7 @@ const ( KeyMon KeyType = "mon" KeyMonArbiter KeyType = "arbiter" KeyMgr KeyType = "mgr" + KeyDashboard KeyType = "dashboard" KeyOSDPrepare KeyType = "prepareosd" KeyRotation KeyType = "keyrotation" KeyOSD KeyType = "osd" diff --git a/pkg/apis/ceph.rook.io/v1/labels.go b/pkg/apis/ceph.rook.io/v1/labels.go index 43a3018b2f5b..ad4bb14660d4 100644 --- a/pkg/apis/ceph.rook.io/v1/labels.go +++ b/pkg/apis/ceph.rook.io/v1/labels.go @@ -43,6 +43,11 @@ func GetMgrLabels(a LabelsSpec) Labels { return mergeAllLabelsWithKey(a, KeyMgr) } +// GetDashboardLabels returns the Labels for the Dashboard service +func GetDashboardLabels(a LabelsSpec) Labels { + return mergeAllLabelsWithKey(a, KeyDashboard) +} + // GetMonLabels returns the Labels for the MON service func GetMonLabels(a LabelsSpec) Labels { return mergeAllLabelsWithKey(a, KeyMon) diff --git a/pkg/operator/ceph/cluster/mgr/spec.go b/pkg/operator/ceph/cluster/mgr/spec.go index 4a452a70acd4..01cfb5f2b617 100644 --- a/pkg/operator/ceph/cluster/mgr/spec.go +++ b/pkg/operator/ceph/cluster/mgr/spec.go @@ -344,6 +344,8 @@ func (c *Cluster) makeDashboardService(name string) (*v1.Service, error) { }, }, } + cephv1.GetDashboardAnnotations(c.spec.Annotations).ApplyToObjectMeta(&svc.ObjectMeta) + cephv1.GetDashboardLabels(c.spec.Labels).ApplyToObjectMeta(&svc.ObjectMeta) err := c.clusterInfo.OwnerInfo.SetControllerReference(svc) if err != nil { return nil, errors.Wrapf(err, "failed to set owner reference to dashboard service %q", svc.Name)