Allow setting sizeLimit when persistence disabled #2020
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This closes #2017
Note to reviewers: remember to look at the commits in this PR and consider if they can be squashed
Summary Of Changes
This PR introduces a new optional field,
spec.persistence.emptyDir, allowing users to configureemptyDirvolume properties when persistence is disabled (i.e., whenspec.persistence.storageis set to "0").This change addressed the need discussed in #2018. The primary goal is to protect host node's disk storage from being exhausted by a RabbitMQ instance, ensuring other workloads on the node are not negatively impacted.
Specifically, this PR adds:
RabbitmqClusterEmptyDirSpecstruct nested underspec.persistence.medium(defaulting to the node's default) andsizeLimit.storageis "0" andemptyDiris defined.Additional Context
It is important to note the behavioral difference regarding
sizeLimitdepending on the chosen medium:sizeLimitdoes not strictly limit the filesystem size visible to the application (e.g., viadf -hor the RabbitMQ UI). Instead, the Kubelet monitors disk usage. If the Pod exceeds thesizeLimit, the Kubelet evicts the Pod, effectively clearing the data.mediumis set toMemory, Kubernetes mounts atmpfsvolume. In this case, the filesystem size is strictly limited tosizeLimit. The Pod cannot write beyond this limit, preventing eviction caused by usage spikes, though the application will receive "No space left on device" errors if it hits the limit.Local Testing
Please ensure you run the unit, integration and system tests before approving the PR.
To run the unit and integration tests:
You will need to target a k8s cluster and have the operator deployed for running the system tests.
For example, for a Kubernetes context named
dev-bunny: