Wait for the mon-canary pods to be terminated before starting the actual
mons. When topology spread constraints are added to evenly spread the
mons, then pod-anti affinity does not allow mons to be created on the
same node where other mons are running, this also includes the
mon-canary pods. We delete the mon-canary pods and then start the actual
mon pods. Sometimes the termination of the canary pods might take more
time, so schedular won't schedular mon pods on that node.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 3137a857df)
The OSDs may require different resources based on their device
class. The overall osd resources were only being used, rather
than properly looking up the specific device class resources.
Now the expected resources will take affect per device class.
Co-authored-by: Matthias Osthues <osthues.matthias@gmail.com>
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit d3c0bacd88)
The mon canary should quickly shut down after the pod is
deleted, since it has no purpose to continue running.
Since the sleep does not catch the SIGTERM as pid 1,
use a bash trap to exit quickly.
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 48b70500fa)
k8s requires the endpointSlice must have label
`kubernetes.io/service-name` to be associated with
service. Without this label, the k8s service controller
can't link the EndpointSlice to the service.
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 7004213f92)
The target size ratio is currently always being set to 0, when
neither the legacy targetSizeRatio nor the parameter for
target_size_ratio are set. In this case, we should not set it to 0,
but rather should skip the command to set the target size ratio.
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 938380734d)
if there a bit long to update osds in parallel,
we need to timeout and abort the synchronous loop
and start the cluster reconcile again from the beginning
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 4377823675)
When OSDs start, init containers attempt to get the latest CephX key for
the OSD to allow OSDs to potentially continue working after key rotation.
However, in Ceph corner cases, mons could be unavailable while OSDs
could still be viable with existing on-disk keys. Since key rotation is
a rare event, it's likely that the on-disk keys are still good.
The worst case scenario is that key updates were needed but didn't
succeed in init containers. In this case, instead of the init container
failing, the OSD startup will fail instead. Thus, this should introduce
no extra risk but merely shift the failure to a different container.
Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit d9d31fe527)
external mode was dependednt on the ceph status to
update the cluster connected condition,
BUt as now the status check will only update the ceph status,
so we will explicitly update the ceph status condition in the
end of the reconcile
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 3f5ebe2f4f)
currently the health checkup was reporting the
condition and reason to be always connected,
But which might not be the case,
So instead of that dont report the condition and
its phase during the health checkups
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 454c221c53)
currently we are updating the mon endpoints
and using it with rook-ceph-csi cm,
But we need latest ports in the cluster info,
during the creation of the ceph connection cr
when csi operator is enabled,
so ceph connection cr can use the latest mons ports
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 76a7132c56)
This change introduces support for setting the ceph cache memory limit
ratios that were previously hardcoded.
Codegen was drivey-by updated as the current version errored.
Resolves#16551
Signed-off-by: Tim Buchwaldt <tim.buchwaldt@deepl.com>
(cherry picked from commit 8db5274703)
The csi volumes and volume mount settings are now
converted to the csi operator driver CR, for example
to allow nix os mounts to be applied to the csi
node plugins.
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 7a515eb24a)
currently if we disable the monitoring for rn,
it doesnt reset the status
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 49c26dbfb0)
The current behavior does not print the PHASE column, as most other
CRDs do. E.g.:
```
~ $ k get cephor lfa
NAME AGE
lfa 45d
```
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 6d9c884259)
The current behavior does not print the PHASE column, as most other
CRDs do. E.g.:
```
~ $ k get cephnfs nfs1
NAME AGE
nfs1 45d
```
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 5ee982f1e1)
The current behavior does not print the PHASE column, as most other
CRDs do. E.g.:
```
~ $ k get cephbn chorus
NAME AGE
chorus 10d
```
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8866d47d92)
blocklisting IP can cause problems when the cleanup
job pod runs on the same host or gets the same ip
as that of the rbd client ip that is present in
the rbd status/watchers. instead of blocklisting
the whole ip of the node or the client blocklist
only the unique ip:nonce to allow the node to not
have any effect because of the cleanup job.
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 5ae49cf7a0)
Clean encrypted disks from other clusters by checking the cephFSID in
the luks header.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit ec271bdde3)
This is a fix/workaround to set the Recreate
deployment strategy as default in Rook as
its long proven working without any problem.
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 333082c397)
CephCSI will remove the livess sidecar
container functionality as it was created
very long back and it should be replaced with
kubernetes GRPC livessness problem.
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 46c7d2cc26)
currently, labels are not passed to csi-operator but
for csi-driver lables works as expected. This commit
add changes to add labels on csi-operator driver pod as well.
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 0c296545a5)
If the drained node is added back and one or more others nodes are down
update the blocking pdbs, that is, add blocking pdb to node that was
just added back.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit f2bf0eb200)
Resolves this incorrect field description:
~ $ k explain cephobjectzone.spec.zoneGroup
GROUP: ceph.rook.io
KIND: CephObjectZone
VERSION: v1
FIELD: zoneGroup <string>
DESCRIPTION:
The display name for the ceph users
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8b58d68592)
Resolves this incorrect field description:
~ $ k explain cephobjectzonegroup.spec.realm
GROUP: ceph.rook.io
KIND: CephObjectZoneGroup
VERSION: v1
FIELD: realm <string>
DESCRIPTION:
The display name for the ceph users
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 1a1478a342)
If the CephCluster spec is updated before the prevalidation check, then
Cluster.context still refers to the cancelled context of the operator.
This PR just updates the cluster context to use the latest operator
context.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 1ff7604f82)
Enabling crush updates is false by default, and can be enabled
if set to true. The setting needs to be nullable in case
we need to differentiate between the value being set
to false or just not set, to know if the default should be
different. This is necessary for rook consumers who are
refererencing the pool struct and want to change the default,
rather than using rook's default value of false.
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit df49ca1247)
currently the extraction ipv6 was not correct
used the net package to extract the host ip from
the ipadress
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit e1873cb2e7)
shouldFailoverMonImmediately has a nil pointer exception with mons on
PVC. Rook-ceph-mon-endpoint does not store node information of the mons
on PVC. So `mapping.Hostname` throws nill pointer
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit d399615bdc)
Currently, when there are down OSDs but all PGs are clean we add the
number of downed OSDs ot the main PDB maxUnavailable. For example if
OSDs 1,3,5 are down and all PGs are clean we create the following PDB:
```yaml
maxUnavailable: 4
selector:
matchLabels:
app: rook-ceph-osd
```
This is potentially dangerous as there can be race conditions which can
break the cluster, for example:
1. A new node is added to the cluster with 4 OSDs
2. Those OSDs are down as they have not started up and joined the cluster yet
3. All PGs are healthy as the new OSDs haven't started yet and they are new
4. The rook operator sets maxUnavailable to 5 on the OSD PDB
5. The new OSDs move from down to up as they start
6. Something in the cluster starts a disruption (eviction request)
7. Any 5 OSDs can be disrupted as maxUnavilable is still 5 and the downed OSDs are now up
8. If the 5 disrupted OSDs contain all the replicas of a PG it will cause the PG to go down
To better protect from this scenario, we can instead exclude the downed
OSDs from the main PDB instead of adding to maxUnavailable.
```yaml
maxUnavailable: 1
selector:
matchExpressions:
- key: app
operator: In
values: ["rook-ceph-osd"]
- key: osd
operator: NotIn
values: ["1", "3", "5"]
```
This allows drains to still process when there are downed OSDs and PGs
are clean without allowing the non-downed OSDs to be disrupted.
Signed-off-by: Elias Carter <elias@dropbox.com>
(cherry picked from commit 60a15306e9)
The ceph csi controller plugin did not have the capability to
set host networking, in case the host networking is being enforced
with ROOK_ENFORCE_HOST_NETWORK: true.
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit e294c280ed)
Fix an issue where keepPriorKeyCountMax would be counted differently
when rotation was currently in progress, versus when rotation was not in
progress.
Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 7911469016)
this commit adds multus network annotation to the
csi-operator node plugin and controller plugin pods
when multus is enabled in the ceph cluster.
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit d2a1286606)
when the osd is created there is no need for
osd bootstrap keyring, so remove the keyring
and keyring file,
New keyring will be created if
new osd need to be provisoned
Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 794a232835)
Delete the client.boostrap.* keys. These keys are not created by rook so
it can't rotate them. This PR just delete these keys in the
postMonStartUpAction.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 4cdba0df54)
ceph-volume creates osd-lockbox keys for the encryted osds. This PR
rotates those keys along with the OSD keys.
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit b4e1c1720d)