Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding SELinux Documentation #900

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

cniackz
Copy link
Contributor

@cniackz cniackz commented Apr 13, 2024

Objective:

When resuming or suspending a drive in an OpenShift cluster, we may encounter a relabel issue. Various solutions exist for this problem, but here I am documenting the one we believe to be the best approach.

@cniackz cniackz self-assigned this Apr 13, 2024
@cniackz cniackz added the documentation Improvements or additions to documentation label Apr 13, 2024
@cniackz cniackz requested a review from ravindk89 April 13, 2024 18:58
@cniackz
Copy link
Contributor Author

cniackz commented Apr 13, 2024

NET:[VulnCheck / Analysis (pull_request) ] fix is on #901

docs/volume-management.md Outdated Show resolved Hide resolved
docs/volume-management.md Outdated Show resolved Hide resolved
@Praveenrajmani
Copy link
Collaborator

PTAL @cniackz

@cniackz cniackz force-pushed the selinux-documentation-apr13 branch 2 times, most recently from 62e070b to c48433d Compare July 26, 2024 14:13
ravindk89
ravindk89 previously approved these changes Jul 26, 2024
Copy link
Contributor

@ravindk89 ravindk89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open Question - should we make this a pre-requisite for OpenShift clusters running SELinux?

docs/openshift.md Outdated Show resolved Hide resolved
Comment on lines +10 to +13

## SELinux in OpenShift:

If you encounter the `relabel failed` error after executing the `suspend` or `resume` commands, you should set `spc_t` at Pod's level or Container's level, for example:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have modified the text more appropriately as OpenShift < 4.12 are deprecated and added a complete example.

Suggested change
## SELinux in OpenShift:
If you encounter the `relabel failed` error after executing the `suspend` or `resume` commands, you should set `spc_t` at Pod's level or Container's level, for example:
## SELinux in OpenShift
In a SELinux enabled system, pod may fail to start due to `relabel failed` error on suspended volume. As the suspended volumes are read-only, Kublet tries to do SELinux relabeling by `lsetxattr` system call to write extended attributes. This issue is fixable by adding `spec.securityContext.seLinuxOptions.type: spc_t` at pod level or container level along with appropriate Security Context Constraints (SCCs) in place. A complete detail is available at https://access.redhat.com/solutions/7025337. The following example shows how to set `spc_t` SELinux settings at pod level:

Comment on lines +16 to +20
kind: Pod
spec:
securityContext:
seLinuxOptions:
type: "spc_t" # This applies to all containers unless overridden
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
kind: Pod
spec:
securityContext:
seLinuxOptions:
type: "spc_t" # This applies to all containers unless overridden
apiVersion: v1
kind: Pod
metadata:
name: sleep-pod
spec:
securityContext:
seLinuxOptions:
type: "spc_t" # Setting to fix the issue
volumes:
- name: sleep-volume
persistentVolumeClaim:
claimName: sleep-pvc
containers:
- name: sleep-container
image: example.org/test/sleep:v0.0.1
volumeMounts:
- mountPath: "/mnt"
name: sleep-volume

Comment on lines +22 to +25

Ensure that the appropriate Security Context Constraints (SCCs) are in place, as illustrated in the following link: https://access.redhat.com/solutions/7025337.

Additionally, this issue has been observed in OpenShift version 4.12 and later. Pods that use suspended drives or volumes may fail due to the kubelet attempting to perform SELinux relabeling. This happens because the `lsetxattr` system call fails on a read-only filesystem. The problem can affect any pod that consumes a suspended volume, not just MinIO Tenant pods.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Ensure that the appropriate Security Context Constraints (SCCs) are in place, as illustrated in the following link: https://access.redhat.com/solutions/7025337.
Additionally, this issue has been observed in OpenShift version 4.12 and later. Pods that use suspended drives or volumes may fail due to the kubelet attempting to perform SELinux relabeling. This happens because the `lsetxattr` system call fails on a read-only filesystem. The problem can affect any pod that consumes a suspended volume, not just MinIO Tenant pods.

@Praveenrajmani
Copy link
Collaborator

PTAL @cniackz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants