OpenShift EX280 Practice Tasks: 25 Original Labs With Solutions

EX280 is Red Hat's hands-on OpenShift administration exam, which earns the Red Hat Certified System Administrator in OpenShift credential. It is graded on the final state of a live cluster, so the best practice is to perform real tasks: projects and RBAC, deployments, routes, storage, secrets, quotas, network policies and troubleshooting. The labs below are original tasks mapped to the public objective areas.

Sep 01, 2025 - 13:58
Updated: 
107.5k

OpenShift in IT Infrastructure · Certification preparation

OpenShift Administrator, lesson 8 of 13

OpenShift EX280 Practice Tasks: 25 Original Labs With Solutions

Quick answer: EX280 is Red Hat's hands-on OpenShift administration exam, which earns the Red Hat Certified System Administrator in OpenShift credential. It is graded on the final state of a live cluster, so the best practice is to perform real tasks: projects and RBAC, deployments, routes, storage, secrets, quotas, network policies and troubleshooting. The labs below are original tasks mapped to the public objective areas. Red Hat notes that more than one exam version can be in use, so confirm yours in its Learning Management System.

Key takeaways

  • EX280 is performance-based; marks come from the end state of the cluster.
  • Practise each task until it works without notes and survives a pod restart.
  • Avoid exam dumps; sharing real items breaks Red Hat's exam agreement.
  • Check your exam version and objectives in Red Hat's learning portal.
  • Learn oc explain and --dry-run=client -o yaml to work fast.

Table of Contents

How Do You Set Up a Practice Cluster?

Use OpenShift Local (formerly CodeReady Containers) on a workstation with enough memory, or the Red Hat Developer Sandbox for short sessions. Cluster-admin tasks such as identity providers need OpenShift Local or a lab cluster.

crc setup
crc start
eval $(crc oc-env)
oc login -u kubeadmin https://api.crc.testing:6443
oc whoami; oc get nodes

Projects, Users and RBAC

#TaskCheck
1Create project finance with display name Finance Appsoc get project finance
2Add users with an HTPasswd identity provideroc login -u alice
3Give alice the edit role in financeoc auth can-i create deploy -n finance --as alice
4Create group auditors with view accessoc get rolebinding -n finance
5Stop regular users from creating projectsLogin as alice and try oc new-project x
htpasswd -c -B -b users.htpasswd alice Redhat123
htpasswd -B -b users.htpasswd bob Redhat123
oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd -n openshift-config
oc edit oauth cluster          # add an HTPasswd identityProvider referencing htpass-secret
oc new-project finance --display-name="Finance Apps"
oc policy add-role-to-user edit alice -n finance
oc adm groups new auditors bob
oc policy add-role-to-group view auditors -n finance
oc adm policy remove-cluster-role-from-group self-provisioner system:authenticated:oauth

Deploying and Exposing Applications

#TaskCheck
6Deploy an httpd image as weboc get pods -l app=web
7Expose it with a route on a given hostnamecurl the route
8Create an edge TLS routecurl -k https://...
9Roll out a new image and roll backoc rollout history deploy/web
10Add readiness and liveness probesoc describe pod
oc create deployment web --image=registry.access.redhat.com/ubi9/httpd-24 -n finance
oc expose deployment web --port=8080
oc expose service web --hostname=web.apps-crc.testing
oc create route edge web-tls --service=web --hostname=secure.apps-crc.testing
oc set probe deploy/web --readiness --get-url=http://:8080/ --initial-delay-seconds=5
oc rollout undo deploy/web

Configuration, Secrets and Storage

#TaskCheck
11Create a ConfigMap and inject it as environment variablesoc rsh then env
12Store a database password in a Secretoc get secret -o yaml
13Request a 1 GiB PVC and mount it at /dataPVC shows Bound
14Prove data survives a pod deletionWrite a file, delete pod, read again
oc create configmap web-cfg --from-literal=MODE=prod
oc set env deploy/web --from=configmap/web-cfg
oc create secret generic db-cred --from-literal=password=S3cret
oc set env deploy/web --from=secret/db-cred
oc set volume deploy/web --add --name=data --type=pvc --claim-name=web-data \
  --claim-size=1Gi --mount-path=/data

Quotas, Limits and Scaling

#TaskCheck
15Limit the project to 4 pods and 2 CPUoc describe quota
16Set default container limits with a LimitRangeNew pod shows limits
17Scale to 3 replicasoc get deploy web
18Autoscale between 2 and 5 at 70% CPUoc get hpa
19Create a project template that adds a quota to every new projectNew project has quota
oc create quota finance-q --hard=pods=4,requests.cpu=2 -n finance
oc set resources deploy/web --requests=cpu=100m,memory=128Mi --limits=cpu=500m,memory=256Mi
oc scale deploy/web --replicas=3
oc autoscale deploy/web --min=2 --max=5 --cpu-percent=70
oc adm create-bootstrap-project-template -o yaml > template.yaml

Security Contexts and Network Policies

#TaskCheck
20Run an image that needs a specific UID using a service account and SCCPod Running
21Allow traffic to web only from the router and the same projectTest from another project fails
22Deny all ingress in project db except from financecurl from both projects
oc create sa legacy-sa
oc adm policy add-scc-to-user anyuid -z legacy-sa
oc set serviceaccount deploy/legacy legacy-sa
cat <<'EOF' | oc apply -n db -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-finance
spec:
  podSelector: {}
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: finance
EOF

Troubleshooting Tasks

#Broken state to create and fixWhere to look
23Image name typo: ImagePullBackOffoc describe pod, events
24Wrong service selector: route returns 503oc get endpoints
25Pod pending on a quotaoc get events --sort-by=.lastTimestamp
oc get events -n finance --sort-by=.lastTimestamp | tail
oc logs deploy/web --previous
oc debug deploy/web
oc adm must-gather    # cluster-wide diagnostics

A Four-Week Practice Plan

  1. Week 1: tasks 1 to 10 daily until each takes under five minutes.
  2. Week 2: tasks 11 to 19, rebuilding from an empty project each time.
  3. Week 3: tasks 20 to 25 and mixed sets of ten under a timer.
  4. Week 4: full mock runs, then re-check every result from a fresh login.

Our DO280 and EX280 practice guide and OpenShift architect path continue from here, or talk to a WebAsha training advisor about DO280 batches.

References

Frequently Asked Questions

No. It is performance-based on a live OpenShift cluster.

Red Hat Certified System Administrator in OpenShift, after Red Hat’s May 2026 reorganisation.

Red Hat states several versions can be in use; check yours in its Learning Management System.

No. They are original tasks mapped to public objective areas.

No. Sharing real items breaches Red Hat’s exam agreement and does not build skill.

Yes, with OpenShift Local on a capable workstation or the Developer Sandbox for project-level tasks.

Generate YAML with --dry-run=client -o yaml and use oc explain instead of searching docs.

RBAC, network policies and storage, because a small error leaves the end state wrong.

EX380 leads to Red Hat Certified Engineer in OpenShift.

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Wow Wow 0
Sad Sad 0
Angry Angry 0
Aayushi Sinha

With a passion for staying on the cutting edge of technology trends, I am dedicated to delivering content that not only informs but also inspires. Whether you need in-depth analysis pieces, informative guides, or thought-provoking opinion pieces, I craft content that resonates with tech enthusiasts and professionals alike.