-
Bug
-
Resolution: Not a Bug
-
Blocker
-
Logging 5.8.0
Description of problem:
There is label pod-security.kubernetes.io/enforce: restricted in hypershift hosted project. collection DaemonSet violates PodSecurity when deployed in Hypershift Hosted Project
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal CreateObject 20m clusterlogforwarder CreateObject DaemonSet clusters-hypershift-ci-24808/http-to-cloudwatch Warning FailedCreate 20m daemonset-controller Error creating: pods "http-to-cloudwatch-d6wsk" is forbidden: violates PodSecurity "restricted:latest": seLinuxOptions (container "collector" set forbidden securityContext.seLinuxOptions: type "spc_t"), unrestricted capabilities (container "collector" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volumes "varlogcontainers", "varlogpods", "varlogjournal", "varlogaudit", "varlogovn", "varlogoauthapiserver", "varlogoauthserver", "varlogopenshiftapiserver", "varlogkubeapiserver", "datadir" use restricted volume type "hostPath"), runAsNonRoot != true (pod or container "collector" must set securityContext.runAsNonRoot=true) Warning FailedCreate 20m daemonset-controller Error creating: pods "http-to-cloudwatch-fd9dd" is forbidden: violates PodSecurity "restricted:latest": seLinuxOptions (container "collector" set forbidden securityContext.seLinuxOptions: type "spc_t"), unrestricted capabilities (container "collector" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volumes "varlogcontainers", "varlogpods", "varlogjournal", "varlogaudit", "varlogovn", "varlogoauthapiserver", "varlogoauthserver", "varlogopenshiftapiserver", "varlogkubeapiserver", "datadir" use restricted volume type "hostPath"), runAsNonRoot != true (pod or container "collector" must set securityContext.runAsNonRoot=true)
How reproducible:
Always
Steps to Reproduce:
#On Management Cluster, Create CLF under hosted cluster project.
1) oc project ${hosted_cluster_project}
2) give cluster-logging-operator edit roles to ${hosted_cluster_project}
oc policy add-role-to-user edit system:serviceaccount:openshift-logging:cluster-logging-operator
3) Create secret to cloudwatch output
oc create secret generic cloudwatch-credentials \ --from-literal=aws_access_key_id="${AWS_ACCESS_KEY_ID}" \ --from-literal=aws_secret_access_key="${AWS_SECRET_ACCESS_KEY}"
4) oc create serviceaccount clf-collector
oc adm policy add-cluster-role-to-user collect-audit-logs -z clf-collector
5)
cat <<EOF | oc apply -f - apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: to-cloudwatch spec: outputs: - name: cloudwatch type: cloudwatch cloudwatch: groupBy: logType region: us-east-2 secret: name: cloudwatch-credentials pipelines: - name: to-cloudwatch inputRefs: - audit outputRefs: - cloudwatch serviceAccountName: clf-collector EOF
6. check ds status
$oc get ds NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE to-cloudwatch 6 0 0 0 0 kubernetes.io/os=linux 7s $oc describe ds/to-cloudwatch
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal CreateObject 2m clusterlogforwarder CreateObject DaemonSet clusters-hypershift-ci-24808/to-cloudwatch Warning FailedCreate 2m daemonset-controller Error creating: pods "to-cloudwatch-4qwpc" is forbidden: violates PodSecurity "restricted:latest": seLinuxOptions (container "collector" set forbidden securityContext.seLinuxOptions: type "spc_t"), unrestricted capabilities (container "collector" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volumes "varlogcontainers", "varlogpods", "varlogjournal", "varlogaudit", "varlogovn", "varlogoauthapiserver", "varlogoauthserver", "varlogopenshiftapiserver", "varlogkubeapiserver", "datadir" use restricted volume type "hostPath"), runAsNonRoot != true (pod or container "collector" must set securityContext.runAsNonRoot=true) Warning FailedCreate 2m daemonset-controller Error creating: pods "to-cloudwatch-w6662" is forbidden: violates PodSecurity "restricted:latest": seLinuxOptions (container "collector" set forbidden securityContext.seLinuxOptions: type "spc_t"), unrestricted capabilities (container "collector" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volumes "varlogcontainers", "varlogpods", "varlogjournal", "varlogaudit", "varlogovn", "varlogoauthapiserver", "varlogoauthserver", "varlogopenshiftapiserver", "varlogkubeapiserver", "datadir" use restricted volume type "hostPath"), runAsNonRoot != true (pod or container "collector" must set securityContext.runAsNonRoot=true)
Additional Info:
We can create an pod-security.kubernetes.io/enforce: restricted as below
apiVersion: project.openshift.io/v1 kind: Project metadata: labels: kubernetes.io/metadata.name: test2 pod-security.kubernetes.io/audit: restricted pod-security.kubernetes.io/audit-version: v1.24 pod-security.kubernetes.io/warn: restricted pod-security.kubernetes.io/warn-version: v1.24 pod-security.kubernetes.io/enforce: restricted name: test3
- relates to
-
OCPBUGS-20347 package-server-manager forbidden securityContext.seLinuxOptions: type "spc_t"
- Closed