A fully updated 2026 EX380 Exam Dumps exam guide from training expert Prep4sures [Q23-Q46]

Share

A fully updated 2026 EX380 Exam Dumps exam guide from training expert Prep4sures

Provides complete coverage of every objective on exam and exam preparation EX380

NEW QUESTION # 23
Node Management - Remove Taint on Worker Node

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Log in to the OpenShift web console with an account that has sufficient cluster administrative privileges.
This Task is performed from the GUI, not the CLI. The lab hint explicitly places this under the worker node details page in the console.
Step 2: Navigate to Compute .
This area contains node-level resources, including control plane and worker nodes.
Step 3: Open Nodes .
Here you can view all nodes currently registered in the cluster.
Step 4: Select the required worker node .
Choose the exact worker node referenced by the lab Task SIMULATION .
Step 5: Open the Details tab.
The taint configuration is managed from the selected node's details view.
Step 6: Locate the Taints section and click Edit .
A taint is used to control pod scheduling. If a worker has a taint, pods without matching tolerations may not schedule there.
Step 7: Remove the unwanted taint entry.
Removing the taint makes the worker eligible again for normal scheduling behavior, depending on the rest of the cluster policy.
Step 8: Click Save .
This commits the change so the node is updated and the scheduler can evaluate it without that taint.


NEW QUESTION # 24
Schedule a recurring backup
Task Information : Create a daily backup schedule for namespace orders at 01:00.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Create the schedule
* velero schedule create orders-daily \
* --schedule "0 1 * * *" \
* --include-namespaces orders \
* --snapshot-volumes
* Cron format: minute hour day month weekday.
* Verify schedule exists
* velero schedule get
* Confirm backups are created by the schedule
* velero backup get | grep orders-daily
* Scheduled backups usually have names derived from the schedule.


NEW QUESTION # 25
Configure resiliency using a PodDisruptionBudget
Task Information : Ensure at least 2 replicas of payments/api remain available during voluntary disruptions.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Create PDB
* cat < < EOF | oc -n payments apply -f -
* apiVersion: policy/v1
* kind: PodDisruptionBudget
* metadata:
* name: api-pdb
* spec:
* minAvailable: 2
* selector:
* matchLabels:
* app: api
* EOF
* minAvailable: 2 blocks evictions that would reduce availability below 2.
* Verify PDB
* oc -n payments get pdb
* oc -n payments describe pdb api-pdb


NEW QUESTION # 26
Deploy Event Router and capture Kubernetes events in logging
Task Information : Deploy an event router so Kubernetes events are recorded as logs, then trigger events and confirm they appear in logging queries.

Answer:

Explanation:
See the solution below in Explanation:
* Deploy event router resources
* Apply a deployment/serviceaccount/rolebinding manifest for eventrouter:
* oc apply -f eventrouter.yaml -n openshift-logging
* Eventrouter watches event API and writes them to stdout (collected by logging).
* Verify eventrouter pod is running
* oc -n openshift-logging get pods | grep -i event
* Trigger some events
* oc -n default run evtest --image=busybox --restart=Never -- sleep 1
* oc -n default delete pod evtest
* Creation/deletion generates events.
* Query logs for events
* In the logging UI/backend, search for the namespace/pod name evtest or eventrouter messages.
* Explanation: Validates that events are being converted to searchable logs.


NEW QUESTION # 27
Create an Argo CD Application (OpenShift GitOps)
Task Information : Create an Argo CD Application that syncs from Git into namespace gitops-demo with automated sync enabled.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Create target namespace
* oc new-project gitops-demo
* Destination must exist (unless Argo is configured to auto-create).
* Create Application manifest
* apiVersion: argoproj.io/v1alpha1
* kind: Application
* metadata:
* name: demo-app
* namespace: openshift-gitops
* spec:
* project: default
* source:
* repoURL: https://git.example.com/org/repo.git
* targetRevision: main
* path: manifests/demo
* destination:
* server: https://kubernetes.default.svc
* namespace: gitops-demo
* syncPolicy:
* automated:
* prune: true
* selfHeal: true
* automated: enables auto sync.
* prune: removes deleted objects from Git.
* selfHeal: corrects drift.
* Apply Application
* oc apply -f demo-app.yaml
* Verify sync health
* oc -n openshift-gitops get application demo-app -o yaml | grep -i -E "sync|health" -n
* oc -n gitops-demo get all


NEW QUESTION # 28
Spread replicas using podAntiAffinity
Task Information : Configure payments/api to prefer scheduling pods on different nodes.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Patch deployment with preferred podAntiAffinity
* oc -n payments patch deploy api --type=merge -p '{
* "spec":{"template":{"spec":{"affinity":{
* "podAntiAffinity":{
* "preferredDuringSchedulingIgnoredDuringExecution":[{
* "weight":100,
* "podAffinityTerm":{
* "labelSelector":{"matchLabels":{"app":"api"}},
* "topologyKey":"kubernetes.io/hostname"
* }
* }]
* }
* }}}}
* }'
* Encourages spread across nodes to reduce single-node impact.
* Verify spread
* oc -n payments get pods -o wide


NEW QUESTION # 29
Add a second Identity Provider (HTPasswd) alongside LDAP
Task Information : Configure multiple identity providers by adding an HTPasswd IDP without removing the existing LDAP IDP.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Create a local htpasswd file with a test user
* htpasswd -c -B -b /tmp/htpass.txt testuser RedHat123!
* -c creates a new file (use only once).
* -B uses bcrypt hashing (recommended).
* -b supplies password non-interactively (good for labs).
* Create the HTPasswd secret in openshift-config
* oc -n openshift-config create secret generic htpass-secret --from-file=htpasswd=/tmp/htpass.txt
* OAuth reads the htpasswd key from this secret.
* Edit OAuth and add the HTPasswd provider (keep LDAP intact)
* oc edit oauth cluster
Add another entry under spec.identityProviders:
- name: local-htpasswd
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret
* This adds a second login option while preserving LDAP.
* Restart OAuth pods
* oc -n openshift-authentication delete pod -l app=oauth-openshift
* Ensures the updated list of identity providers is loaded.
* Verify login works for htpasswd user
* Log in via console using testuser.
* Confirm the user is created:
* oc get user testuser


NEW QUESTION # 30
Identity Management - Create CA ConfigMap

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Ensure the certificate file rhds_ca.crt is available in your current working directory or use the correct path.
The Task requires creating a configmap from this CA certificate file.
Step 2: Run the command:
oc create configmap rhds-ca-config-map --from-file ca.crt=rhds_ca.crt -n openshift-config Step 3: Confirm the configmap is created.
The lab output shows:
configmap/rhds-ca-config-map created
Detailed explanation:
This creates a configmap named rhds-ca-config-map in the openshift-config namespace and maps the local file rhds_ca.crt to the key name ca.crt inside the configmap. This is important in external identity integration because OpenShift may need to trust a custom certificate authority when communicating with LDAP or another secured external service. By placing the certificate in a configmap, the authentication operator or related cluster configuration can reference it cleanly. The key name matters because many OpenShift resources expect a CA bundle key with a specific filename-like convention. If the file path is wrong, the command fails immediately. If the configmap name or key mapping is wrong, the authentication provider referencing it may not trust the external endpoint.


NEW QUESTION # 31
Integrate OpenShift with LDAP (create LDAP identity provider)
Task Information : Configure cluster OAuth to add an LDAP identity provider using an existing bind secret and CA ConfigMap , then verify login works.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Verify prerequisites exist (Secret + ConfigMap)
* oc -n openshift-config get secret rhds-ldap-secret
* oc -n openshift-config get configmap rhds-ca-config-map
* OAuth LDAP configuration references these objects. If they don't exist, OAuth won't be able to bind to LDAP securely.
* Edit the cluster OAuth resource
* oc edit oauth cluster
* The oauth/cluster resource is where identity providers are defined.
* Add an LDAP identity provider entry (example structure) Add under spec.identityProviders:
* - name: corp-ldap
* mappingMethod: claim
* type: LDAP
* ldap:
* url: "ldaps://ldap.example.com:636/ou=People,dc=example,dc=com?uid"
* bindDN: "uid=openshift,ou=svc,dc=example,dc=com"
* bindPassword:
* name: rhds-ldap-secret
* ca:
* name: rhds-ca-config-map
* insecure: false
* attributes:
* id: ["dn"]
* name: ["cn"]
* preferredUsername: ["uid"]
* email: ["mail"]
* url: where to search for users and which attribute is used for login (here uid).
* bindDN + bindPassword: service account used for LDAP queries.
* ca: trusts the LDAP server CA for TLS.
* attributes: maps LDAP data into OpenShift user identity fields.
* Restart OAuth pods to load changes quickly
* oc -n openshift-authentication delete pod -l app=oauth-openshift
* This forces pods to restart and re-read the updated configuration.
* Verify the identity provider appears and users can log in
* In the web console login page, you should see the new provider (name may show as corp-ldap).
* After a successful login, confirm user objects appear:
* oc get users
* oc get identities
* OpenShift creates User and Identity objects upon first successful authentication.


NEW QUESTION # 32
Identity Management - Create HTPasswd Secret

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Open a terminal with oc access to the cluster.
This Task is CLI-driven and targets the openshift-config namespace.
Step 2: Run the command:
oc create secret generic rhds-ldap-secret --from-literal bindPassword=redhatocp -n openshift-config Step 3: Verify that the secret is created successfully.
The lab output shows:
secret/rhds-ldap-secret created
Detailed explanation:
This step creates a generic secret named rhds-ldap-secret in the openshift-config namespace. The secret stores a key called bindPassword with the value redhatocp. In an identity-provider or LDAP integration workflow, the bind password is used by OpenShift when connecting to the external directory service. Storing this value in a secret is the correct operational pattern because authentication material should not be embedded directly into configuration objects. The openshift-config namespace is specifically important because cluster authentication configuration commonly references secrets and configmaps from that namespace. If the secret name or key is wrong, the authentication configuration that depends on it may fail to validate or connect properly.


NEW QUESTION # 33
GitOps and MachineConfig - Trigger Argo CD Synchronization by Repository Update

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Confirm that the repository being pushed to is the same repository watched by the GitOps/Argo CD application.
This linkage is essential because GitOps acts only on configured source repositories and paths.
Step 2: Commit the MachineConfig changes.
The lab uses:
git commit -am "Add MachineConfig for motd"
Step 3: Push the changes to the tracked branch.
The lab uses:
git push origin main
Step 4: Allow Argo CD to detect the repository change and begin synchronization.
In a standard GitOps model, the controller compares the Git repository to the cluster state and applies drift correction or new desired resources.
Detailed explanation:
This sub Task SIMULATION is the operational purpose behind the previous Git command Task SIMULATION . The point is not merely to store a file in Git; it is to update the declarative source that Argo CD uses to reconcile the cluster. Once the repository is updated, Argo CD detects the new commit and syncs the MachineConfig into the cluster according to its application definition. This demonstrates a core automation principle in OpenShift GitOps: administrators do not treat the cluster as the primary editable surface. Instead, they modify Git and let the automation layer enforce state. That provides traceability, peer review potential, rollback capability, and consistency across environments.


NEW QUESTION # 34
Kubeconfig Management - Use Context

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Make sure the context already exists in the kubeconfig file.
This follows the context creation Task SIMULATION .
Step 2: Run the command:
oc config use-context audit --kubeconfig audit.config
Step 3: Confirm the active context switches successfully.
The lab output shows:
Switched to context "audit".
Detailed explanation:
This command activates the audit context inside the specified kubeconfig file. Once selected, subsequent oc commands using that kubeconfig will default to the cluster, user, and namespace associated with that context.
This is operationally important because many administration mistakes come from running commands against the wrong cluster or project. Using explicit context switching reduces that risk and makes the kubeconfig usable for the intended audit workflow. In exams and real environments alike, the context is what turns separate kubeconfig elements into a working session configuration. Without switching to the correct context, even a well-formed kubeconfig may not be used as expected.


NEW QUESTION # 35
Integrate OpenShift with Keycloak (OIDC)
Task Information : Add a Keycloak (RH SSO) OpenID Connect identity provider to OpenShift OAuth and verify redirect/login works.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Collect Keycloak details
* Issuer URL (realm), client ID, and client secret.
* Confirm Keycloak client has correct redirect URI for OpenShift OAuth callback.
* Create a secret with the OIDC client secret
* oc -n openshift-config create secret generic keycloak-oidc-secret \
* --from-literal=clientSecret=' < SECRET > '
* OAuth reads the OIDC client secret from this secret.
* Edit OAuth and add OpenID provider
* oc edit oauth cluster
Add under spec.identityProviders:
- name: keycloak
mappingMethod: claim
type: OpenID
openID:
issuer: "https://keycloak.example.com/realms/ocp"
clientID: "openshift"
clientSecret:
name: keycloak-oidc-secret
claims:
preferredUsername: ["preferred_username"]
name: ["name"]
email: ["email"]
* issuer must match Keycloak realm issuer URL.
* claims determines which token claims map to OpenShift username/name/email.
* Restart OAuth pods
* oc -n openshift-authentication delete pod -l app=oauth-openshift
* Verify by logging in through the web console
* You should be redirected to Keycloak, authenticate, then return to OpenShift.
* Confirm users/identities:
* oc get users
* oc get identities


NEW QUESTION # 36
Restore application into same namespace
Task Information : Restore from backup orders-full and validate the app resources return.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Start the restore
* velero restore create orders-restore --from-backup orders-full
* Monitor restore status
* velero restore get
* velero restore describe orders-restore --details
* Validate restored resources
* oc -n orders get all
* oc -n orders get pvc
* Ensure deployments/pods/services and PVCs exist and pods become Running.


NEW QUESTION # 37
Configure project-wide default tolerations
Task Information : Configure the payments namespace so new pods automatically include a default toleration.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Annotate the namespace with default tolerations
* oc annotate ns payments \
* scheduler.alpha.kubernetes.io/defaultTolerations='[{"key":"dedicated","operator":"Equal","value":" payments","effect":"NoSchedule"}]' \
* --overwrite
* Some clusters honor this pattern; if not, the fallback is mutating admission or editing workloads.
* Create a new pod/deployment in the namespace
* Then verify its spec includes tolerations:
* oc -n payments get pod < pod > -o yaml | grep -n tolerations -A5


NEW QUESTION # 38
Kubeconfig Management - Set Credentials in Kubeconfig

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
Step 1: Ensure the client certificate and private key files are available.
The lab uses audit.crt and tls.key.
Step 2: Run the command:
oc config set-credentials audit --client-certificate audit.crt --client-key tls.key --embed-certs --kubeconfig audit.config Step 3: Confirm the user entry is written.
The lab output shows:
User "audit" set.
Detailed explanation:
This command creates or updates the audit user entry inside the kubeconfig file audit.config. It points the user to a client certificate and private key, and the --embed-certs option stores certificate material directly inside the kubeconfig rather than only referencing external files. That makes the kubeconfig more portable because it can be moved and used without separately copying the certificate files, provided the embedded content is valid. In certificate-based authentication, the private key proves client possession while the certificate presents the approved identity. If the certificate and key do not match, authentication will fail. This step does not yet define what cluster or namespace the user works against; it only defines the credential identity.


NEW QUESTION # 39
Resolve group synchronization conflicts (prune stale data)
Task Information : Run group sync with pruning to remove stale OpenShift group memberships that no longer exist in LDAP.

Answer:

Explanation:
See the solution below in Explanation:
Explanation:
* Run group sync with prune controls
* oc adm groups sync --sync-config=groupsync.yaml --confirm --prune-whitelist=/tmp/whitelist.txt
* Prune removes stale memberships/groups, but whitelist protects selected groups from pruning.
* Verify group membership reflects LDAP
* oc describe group < groupname >
* Confirms removed users are no longer listed.


NEW QUESTION # 40
......

Tested Material Used To EX380: https://freedownload.prep4sures.top/EX380-real-sheets.html