Commit Graph
384 Commits
Author SHA1 Message Date
chanyoung d8073bc36f tests: fix unit test failure on macOS due to temp directory path
Use os.TempDir() instead of '/tmp'. This is for the peermap tests.

Signed-off-by: chanyoung <park910113@gmail.com>
(cherry picked from commit d77f6e5e3d)
2024-08-23 13:16:17 +00:00
Travis Nielsen 1283f1d132 Merge pull request #14605 from rook/mergify/bp/release-1.15/pr-14357
csi: update csi sidecars' image version (backport #14357)
2024-08-20 12:11:53 -06:00
subhamkrai 4dca62d0ea csi: update csi-operator to use latest tag v0.1
updating csi-operator version in go.mod and csi-operator.yaml
to use latest release v0.1. And also fixing one small bug
where csi-driver log level was set in csi-operator log level.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 89e9077e72)
2024-08-20 17:28:14 +00:00
Praveen M cf42f35f12 csi: update csi sidecars' image version
Below csi sidecars are updated with latest available versions

csi-resizer: v1.11.1
csi-provisioner: v5.0.1
csi-attacher: v4.6.1
csi-snapshotter: v8.0.1
csi-node-driver-registrar: v2.11.1

Signed-off-by: Praveen M <m.praveen@ibm.com>
(cherry picked from commit a1ddf4535d)

# Conflicts:
#	deploy/examples/images.txt
2024-08-20 17:22:10 +00:00
Travis Nielsen 6d4837c4cb core: add annotations and labels to detect version jobs
The jobs to detect the ceph and csi versions now can have
custom annotationso and labels added to them. They are
very short-lived jobs, but they may need custom annotations
in some environments to run.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 5014d5bcf2)
2024-08-16 16:04:59 +00:00
Madhu Rajanna 9e64a840aa csi: update cephcsi to 3.12.0
updating cephcsi image to 3.12.0
release.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 7c7e8a2b32)
2024-08-16 08:43:34 -06:00
Madhu Rajanna 9e98ae6512 csi: update csi-addons to v0.9.0
As we have new csi-addons v0.9.0
updating the same here as well.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 123025f22c)

# Conflicts:
#	go.sum
2024-08-16 14:36:41 +00:00
subhamkrai 3293c16d0c csi: add unit test for csi-op resources
adding unit test for csi-op resources and also
fixing small pointer issue with this commit.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit f40cb392c9)
2024-08-15 16:45:06 -06:00
subhamkrai be9114e2b1 csi: add annotation to existing CSI driver
adding annotation to existing CSI driver resource so that
csi-operator can take ownership of existing CSI driver resources.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 64cce51f03)
2024-08-15 16:45:05 -06:00
subhamkrai 26d44d6415 csi: add csi-operator operator config cr
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 1ad20d07e7)
2024-08-15 16:45:05 -06:00
subhamkrai ae5c3f85ec csi: add new CSI-operator config CR
adding changes to create CSI-operator config CR based on
every radosnamesapce and subvolumegroup.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 667e044013)
2024-08-15 16:45:05 -06:00
subhamkrai dcff7aead5 csi: add code for new CSI operator CR cephcluster
adding code changes,rbac changes required for create the new
Ceph-CSI operator CR named cephCluster in api group 'csi.ceph.io'.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 4b0b3a55d9)
2024-08-15 16:44:53 -06:00
Praveen M 2ea52ef139 csi: explicitly set Topology feature-gate
issue:
external-provisioner (v5) enabled topology feature-gate by default
and the current implementation in Rook uses a conditional block to
enable the topology feature gate. This approach now does not directly
reflect the state of the `CSI_ENABLE_TOPOLOGY`.

fix:
replacing the conditional block with a direct use of the
`CSI_ENABLE_TOPOLOGY` for flag value.

Signed-off-by: Praveen M <m.praveen@ibm.com>
(cherry picked from commit e30e5e881f)
2024-08-01 16:46:09 +00:00
Madhu Rajanna cb87c3a845 csi: fix template render in logRotation
the templateParam need to be updated
with the right values before we are
rendering the template.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-07-17 08:15:30 +02:00
Travis Nielsen 9967b161f9 Merge pull request #14420 from YiteGu/make-kube-api-limit-configurable
csi: make kube apiserver qps configurable
2024-07-16 07:40:56 -06:00
yite.gu 80541a23c9 csi: make kube apiserver qps configurable
This commit adds the flexibility to configure kube apiserver qps
as per the user requirement and also keeps the existing values as
the default one.

Signed-off-by: yite.gu <yitegu0@gmail.com>
2024-07-16 18:39:16 +08:00
parth-gr 4ca8b12e12 csi: add log rotation for csi cephfs nfs pod containers
Use the same logrotate flow of rbd, as merged in #14305

1) Make the csi cephfs and nfs container logs persisted in a file

2) Use the cephcluster api specs to configure the log rotate

3) Add log rotation to rotate the log file and
Add a sidecar log collector container

And some fixes on the implementation:

1) Add a operator namespace in the log file path

2) Only add volume to the container if logrotate is enabled

Closes: https://github.com/rook/rook/issues/12809, https://github.com/rook/rook/issues/14429

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-07-12 12:50:35 +05:30
Travis Nielsen b8bcd71929 Merge pull request #14421 from subhamkrai/update-go-mods
build: update controller runtime to v0.18.4
2024-07-08 10:10:10 -06:00
parth-gr 2ca0d1390b csi: add securityContext to csi containers
With the recent enhancements csi containers for using
logrotate, they need to run with securityContext to privileged,
on platform like openshift.
Used the ROOK_HOSTPATH_REQUIRES_PRIVILEGED flag
wich is set with operator deployment to see
if the securityCOntext is needed or not

Closes: https://github.com/rook/rook/issues/14400

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-07-08 18:47:26 +05:30
subhamkrai d429ed8be4 build: update controller runtime to v0.18.4
this commit update cntrl runtime to v0.18.4 and other related deps/

Signed-off-by: subhamkrai <srai@redhat.com>
2024-07-05 09:05:12 +05:30
Travis Nielsen 8e25300ad5 Merge pull request #14199 from Nordix/update-cephfs-clusterroles
csi: add cephfs encryption support
2024-07-01 15:27:38 -06:00
parth-gr d3742119b9 csi: add log rotation for csi rbd pod containers
1) Make the csi rbd container logs persisted in a file
   (csi plugin, csi provisioner, csi addons sidecar)

2) Use the cephcluster api specs to configure the log rotate

3) Add log rotation to rotate the log file and
   Add a sidecar log collector container

part-of: https://github.com/rook/rook/issues/12809

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-06-27 14:20:18 +05:30
NymanRobin 05315ae64f csi: add cephfs encryption support
Ceph-CSI support for fscrypt encryption of cephfs.
To achieve this commit add capability of mounting the
required `rook-ceph-csi-kms-config` configmap into
csi-cephfsplugin-provisioner and nodeplugin pods.

Further it modifies the ClusterRoles `cephfs-csi-nodeplugin` and
`cephfs-external-provisioner-runner` to grant privileges
required for reading encryption configuration and fetching
encryption secrets from either kubernetes secrets or
from a Key Management System (KMS).

These privileges are essential for the proper functioning of
ceph-csi-cephfs with fscrypt encryption.

The following privileges have been added:
- `secrets/get`: Allows reading of secrets for encryption.
- `configmaps/get`: Grants access to configuration maps,
    this is used to read encryption configuration.
- `serviceaccounts/get`: Enables retrieval of service accounts for
    authentication to KMS and for retrieving encryption secrets
    stored there.
- `serviceaccounts/token/create`: Allows creation of service account tokens,
    which are required for authenticating requests to KMS
    when retrieving encryption secrets.

The commit also updated the csi documentation to include cephfs
in the encryption section, with examples updated accordingly.

Signed-off-by: NymanRobin <robin.nyman@est.tech>
2024-05-20 14:03:02 +03:00
Blaine Gardner 4ff881240f csi: fix missing namespace bug in csi cluster config map
Someone testing the Multus holder pod removal feature encountered an
issue where the migration process failed to lead to a system state where
PVCs could be created successfully.

The root cause was found to be a ceph csi config map wherein the primary
CephCluster entry was lacking a value for the "namespace" field.

I observed this once in my development on the holder pod removal
feature, but I was unable to reproduce and assumed it was my own error.
Since this has been seen in a user environment, it must be that the
error is a race condition, and I am unable to determine the exact source
of the bug.

I do not believe this bug would be present if the code that updates the
CSI configmap were properly idempotent, but it has many conditions based
on prior states, and I was unable to determine how to resolve this
underlying impelementation pattern issue.

Instead, I opted to separate the `clusterKey` parameter into two clear
parts:
1. `clusterID` for when `clusterKey` is used as an analogue for
   `clusterID`
2. `clusterNamespace` for when `clusterKey` is used as an analogue for
   `clusterNamespace`

I added unit tests to ensure that SaveClusterConfig() will be able to
detect when the namespace is currently missing, and using the new
`clusterNamespace` field, it should always know what value to use as
input when correcting the bug in already-installed systems.

I also verified that this update works when the function simultaneously
removes netNamespaceFilePath entries, and that those entries are removed
properly.

Finally, manual testing also verifies the change.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-05-02 13:58:00 -06:00
Praveen M faf7837621 csi: update csi sidecars' image version
Below sidecars are updated with latest available versions

csi-node-driver-registrar: v2.10.1
csi-resizer: v1.10.1
csi-provisioner: v4.0.1
csi-attacher: v4.5.1
csi-snapshotter: v7.0.2

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-04-25 18:58:00 +05:30
parth-gr 47ed6a8632 csi: create csi configmap if csi controller is disabled
Creating a cluster never succeeds if CSI driver is disabled
So to fix that we need to always create the csi configmap

closes: https://github.com/rook/rook/issues/14123

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-04-24 18:06:09 +05:30
Blaine Gardner 605b9633ea csi: ensure correct csi config map owner during creation
In the primary CSI reconcile, ensure the CSI config map
(`rook-ceph-csi-config`) has the correct owner info.

This corrects any pre-existing config maps that might have incorrect
owner info, which has observed to include references to CephClusters.
The config map should only have a single reference, and it should refer
to the operator deployment.

If any existing Rook clusters have a CSI config map which has a
CephCluster as an owner, this change will ensure that the config map is
not deleted when the CephCluster is deleted. This is especially
important for any environments with multiple CephClusters installed.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-04-18 12:53:48 -06:00
Blaine Gardner eb3278d575 csi: only create CSI config configmap in CSI reconciler
There have been some issues with non-CSI Rook controllers that are
creating the CSI config configmap (`rook-ceph-csi-config`). This causes
problems with the K8s OwnerReference. The primary CSI reconciler
(controller) creates the configmap with the correct owner reference,
which is supposed to be the operator deployment.

Other instances were creating the configmap with owner references set to
the CephCluster. This is a minor bug, but it can result in this
configmap being deleted along with the first CephCluster that initially
created it.

To fix this issue, remove all instances of `CreateCsiConfigMap()` except
the single usage which the CSI reconcile uses to initially create the
configmap. Other controllers that might have attempted to create this
configmap previously will return an error indicating that it is waiting
for the configmap to be created.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-04-18 12:22:00 -06:00
Praveen M f985018f57 csi: update cephcsi to v3.11.0 release
This commit updates default cephcsi driver version
to v3.11.0

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-04-02 20:13:56 +05:30
parth-gr a72e029459 csi: add a new flag to disable csi driver
added a new flag ROOK_CSI_DISABLE_DRIVER
to disable csi controller.

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-03-22 18:22:51 +05:30
Blaine Gardner 4f555dbbcb csi: allow force disabling holder pods
Add new CSI_DISABLE_HOLDER_PODS option for rook-ceph-operator.
This option will disable holder pods when set to "true".

In the long term, Rook plans to deprecate the holder pods entirely.
This new option will allow users to choose to migrate their clusters to
non-holder clusters when they are ready and able, giving them time to
gracefully migrate before the holders are permanently removed.

This option is set to "false" by default so that upgrading users don't
have their CSI pods modified unexpectedly.
Example manifests are modified to set this value to true so that new
clusters will not deploy holder pods.

Migrating users are provided with documentation to instruct them about
the new requirements they need to satisfy to successfully remove holder
pods, a procedure for migrating pods from holder to non-holder mounts,
and a way to delete holder pods once they are no longer in use.

When users set CSI_DISABLE_HOLDER_PODS="true", the CSI controller will
no longer deploy or update the holder pod Daemonsets, but it does not
delete any existing Daemonsets. This allows already-attached PVCs to
continue operating normally with their network connection continuing to
exist in the current holder pod. This is critical to avoid causing
ia cluster-wide storage outage.

More info: https://github.com/rook/rook/issues/13055

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-03-14 09:53:08 -06:00
Rakshith R 330f604cca csi: update CSIDriverOption params during saving cluster config
During cluster creation, csi config map was first filled with
mon ips and without CSIDriverOptions.
This commit makes sure CSIDriverOptions are added at the begining
when the entry is first created.

Signed-off-by: Rakshith R <rar@redhat.com>
2024-03-04 16:17:25 +05:30
Travis Nielsen 7ca738e7b2 Merge pull request #13832 from Madhu-1/template-change-vgsc-rook
csi: support volumegroup snapshot
2024-03-01 11:21:42 -07:00
Madhu Rajanna 43fa57fa57 csi: update sidecars to latest release
updating all the csi sidecars to the
latest release.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-03-01 18:13:38 +01:00
Madhu Rajanna b47bd35ddc csi: use different variable name for replicas
r is the variable name for the CSI reconciler
and same is used for a local variable as well
chaning it to avoid confusion and variable
shadowing.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-03-01 18:12:57 +01:00
Madhu Rajanna 2611e924a2 csi: provide option to configure VGS
volumegroupsnapshot feature will be enabled
by default if the required CRD's are present
if not its disabled and user will have an option
to disable it if they dont require this feature.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-03-01 18:12:37 +01:00
Travis Nielsen 29b7bd9715 Merge pull request #13718 from subhamkrai/remove-namespace-from-networkFence
core: Delete networkFence CRs during cluster removal
2024-02-13 14:54:36 -07:00
subhamkrai 5bff860380 core: remove namespace/ownerRef from networkFence
since networkFence is a cluster-based resource so that we don't need
the namespace and ownerReferences as it cause garbage-collector errors.
Also, now we create the networkFence with clusteUID label so when doing
cleanup we match the cephCluster uid and networkFence label clusterUID.

Signed-off-by: subhamkrai <srai@redhat.com>
2024-02-13 21:47:04 +05:30
subham rai e7969ff9ab Merge pull request #13613 from iPraveenParihar/fix/issue-13580
csi: update netNamespaceFilePath for all clusterIDs
2024-02-13 18:48:10 +05:30
Travis Nielsen 5ce7fd97bd Merge pull request #13736 from Madhu-1/csi-3.10.2
csi: update cephcsi image to 3.10.2
2024-02-09 11:20:10 -07:00
Madhu Rajanna c22597a32c csi: update cephcsi image to 3.10.2
Updating the cephcsi image to 3.10.2
which is the latest released one.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-02-09 08:21:05 +01:00
Praveen M d28febaa61 csi: remove CSI_ENABLE_READ_AFFINITY
This commit removes the `CSI_ENABLE_READ_AFFINITY` since
it is no longer utilized after addition of the read affinity
option per cluster via CSIDriverSpec.

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-02-06 20:21:57 +05:30
Praveen M f67bbc834b csi: fix netNamespaceFilePath addition and removal for all clusterIDs
This commit resolves the issue where the netNamespaceFilePath
was not being updated for all clusterIDs present in the csi configMap.

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-02-01 12:46:55 +05:30
Madhu Rajanna c35a8532aa csi: option to customize csi driver name prefix
For now we are using the operator namespace name
as the prefix for the csi driver, This PR provides
an option for the users if someone wants to have
their own prefix for the csi driver, if someone tries
to change the prefix for existing csi driver rook
operator will fail to reconcile the csi driver.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-01-29 10:54:25 +01:00
Praveen M 7b78cc7ba6 csi: add default crushLocationLabels to csiConfigMap
This commit adds the default crush location labels to csi configMap.

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-01-24 00:03:15 +05:30
Praveen M 117961ec34 csi: fix cephFS struct overwrite
The updateCSIDriverOptions() func was overwriting the ClusterInfo.CephFS
struct. Due to which multus and csi hostnetwork canary tests were hanging.

Signed-off-by: Praveen M <m.praveen@ibm.com>
2024-01-19 22:55:52 +05:30
Travis Nielsen f46c0845ee Merge pull request #13573 from Madhu-1/fix-13475
csi: make leader election flags configurable
2024-01-18 11:55:38 -07:00
Madhu Rajanna 85b86efee1 csi: update csi provisioner to 3.6.3
updating csi provisioner to 3.6.3 to
as we have a bug in 3.6.2

resolves: #13475

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-01-17 11:02:08 +01:00
Madhu Rajanna 9b418d24a1 csi: make leader election flags configurable
This commit adds the flexibility to configure
leader election flags as per the user
requirement and also keeps the existing values
as the default one.

resolve: #13475

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2024-01-17 10:02:49 +01:00
Travis Nielsen 591ddf2c3d Merge pull request #13420 from iPraveenParihar/api/csi-config-map
csi: use ceph-csi exposed csi config map API
2024-01-16 12:34:11 -07:00