{"id":50038,"date":"2026-06-23T06:07:33","date_gmt":"2026-06-23T06:07:33","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=50038"},"modified":"2026-06-23T06:08:21","modified_gmt":"2026-06-23T06:08:21","slug":"openshift-top-oc-commands","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/openshift-top-oc-commands\/","title":{"rendered":"Openshift: Top OC Commands with Examples"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">0. First: audit your local <code>oc<\/code><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Run this first on your machine:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">oc version\noc help\noc adm -h\noc api-resources\noc api-versions\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">For any command:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">oc <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">command<\/span>&gt;<\/span> --help\noc adm <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">command<\/span>&gt;<\/span> --help\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Use this style for labs:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">oc <span class=\"hljs-keyword\">get<\/span> pods -n myproject\noc <span class=\"hljs-keyword\">get<\/span> pods -o wide\noc <span class=\"hljs-keyword\">get<\/span> pods -o yaml\noc <span class=\"hljs-keyword\">get<\/span> pods -o json\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Most useful global patterns:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pattern<\/th><th>Why use it<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td><code>-n &lt;namespace&gt;<\/code><\/td><td>Run command in a specific namespace\/project<\/td><td><code>oc get pods -n myproject<\/code><\/td><\/tr><tr><td><code>-A<\/code> \/ <code>--all-namespaces<\/code><\/td><td>Query across namespaces<\/td><td><code>oc get pods -A<\/code><\/td><\/tr><tr><td><code>-o wide<\/code><\/td><td>Show extra columns<\/td><td><code>oc get pods -o wide<\/code><\/td><\/tr><tr><td><code>-o yaml<\/code><\/td><td>Export full YAML<\/td><td><code>oc get deployment web -o yaml<\/code><\/td><\/tr><tr><td><code>-o json<\/code><\/td><td>Export full JSON<\/td><td><code>oc get pod web -o json<\/code><\/td><\/tr><tr><td><code>--dry-run=client -o yaml<\/code><\/td><td>Generate YAML without creating<\/td><td><code>oc create deployment web --image=nginx --dry-run=client -o yaml<\/code><\/td><\/tr><tr><td><code>-l key=value<\/code><\/td><td>Select by label<\/td><td><code>oc get pods -l app=web<\/code><\/td><\/tr><tr><td><code>--watch<\/code><\/td><td>Watch changes live<\/td><td><code>oc get pods --watch<\/code><\/td><\/tr><tr><td><code>--as &lt;user&gt;<\/code><\/td><td>Test as another user, if permitted<\/td><td><code>oc auth can-i get pods --as alice<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. Core OpenShift workflow<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This is the daily flow for almost every lab:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">oc login https:<span class=\"hljs-comment\">\/\/api.crc.testing:6443 -u developer -p developer<\/span>\noc whoami\noc <span class=\"hljs-keyword\">new<\/span>-project demo\noc <span class=\"hljs-keyword\">new<\/span>-app python:<span class=\"hljs-number\">3.9<\/span>~https:<span class=\"hljs-comment\">\/\/github.com\/openshift-instruqt\/blog-django-py --name=blog<\/span>\noc status\noc <span class=\"hljs-keyword\">get<\/span> all\noc logs -f deployment\/blog\noc expose service\/blog\noc <span class=\"hljs-keyword\">get<\/span> route\noc delete all -l app=blog\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Expected output shape:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Login successful.\n\nNow using project <span class=\"hljs-string\">\"demo\"<\/span> on server <span class=\"hljs-string\">\"https:\/\/api.crc.testing:6443\"<\/span>.\n\ndeployment.apps\/blog created\nservice\/blog created\nroute.route.openshift.io\/blog exposed\n\nNAME       HOST\/PORT                              PATH   SERVICES   PORT\nblog       blog-demo.apps-crc.testing                    blog       <span class=\"hljs-number\">8080<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Red Hat\u2019s official common-task examples include project creation, app creation, pod listing, log viewing, project switching, and status checking. (<a href=\"https:\/\/docs.redhat.com\/en\/documentation\/openshift_container_platform\/4.22\/html\/cli_tools\/openshift-cli-oc\">Red Hat Documentation<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">OC Commands workflow &#8211; a complete one.<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># ============================================================<\/span>\n<span class=\"hljs-comment\"># OpenShift oc Top 50 Commands - One Complete Hands-on Flow<\/span>\n<span class=\"hljs-comment\"># Sample app: Python\/Django app from GitHub using OpenShift S2I<\/span>\n<span class=\"hljs-comment\"># Tested style: OpenShift 4.x \/ CRC \/ OpenShift Local friendly<\/span>\n<span class=\"hljs-comment\"># ============================================================<\/span>\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 1: Verify oc client and cluster access<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 1. Show oc client and OpenShift server version<\/span>\noc version\n\n<span class=\"hljs-comment\"># 2. Show all available oc commands<\/span>\noc help\n\n<span class=\"hljs-comment\"># 3. Show help for a specific command<\/span>\noc <span class=\"hljs-keyword\">new<\/span>-app --help\n\n<span class=\"hljs-comment\"># 4. List API resources available in the cluster<\/span>\noc api-resources\n\n<span class=\"hljs-comment\"># 5. List API versions available in the cluster<\/span>\noc api-versions\n\n<span class=\"hljs-comment\"># 6. Explain a Kubernetes\/OpenShift resource field<\/span>\noc explain deployment.spec.replicas\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 2: Login and identity<\/span>\n<span class=\"hljs-comment\"># For CRC\/OpenShift Local, get credentials using:<\/span>\n<span class=\"hljs-comment\"># crc console --credentials<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 7. Log in to OpenShift cluster<\/span>\noc login https:<span class=\"hljs-comment\">\/\/api.crc.testing:6443 -u developer -p developer<\/span>\n\n<span class=\"hljs-comment\"># 8. Show the currently logged-in user<\/span>\noc whoami\n\n<span class=\"hljs-comment\"># 9. Show current authentication\/session information<\/span>\noc auth whoami\n\n<span class=\"hljs-comment\"># 10. Check whether current user can create projects<\/span>\noc auth can-i create project\n\n<span class=\"hljs-comment\"># 11. Show current kubeconfig context<\/span>\noc config current-context\n\n<span class=\"hljs-comment\"># 12. Show kubeconfig details<\/span>\noc config view\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 3: Create and enter a project<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 13. Create a new project and switch into it<\/span>\noc <span class=\"hljs-keyword\">new<\/span>-project oc-top50-demo\n\n<span class=\"hljs-comment\"># 14. Show current project<\/span>\noc project\n\n<span class=\"hljs-comment\"># 15. List all projects you can access<\/span>\noc projects\n\n<span class=\"hljs-comment\"># 16. Check whether current user can create pods in this project<\/span>\noc auth can-i create pods\n\n<span class=\"hljs-comment\"># 17. Show all resources in the empty project<\/span>\noc get all\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 4: Deploy one sample application from GitHub source code<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 18. Create application from GitHub source using Python 3.9 S2I builder<\/span>\noc <span class=\"hljs-keyword\">new<\/span>-app python:<span class=\"hljs-number\">3.9<\/span>~https:<span class=\"hljs-comment\">\/\/github.com\/openshift-instruqt\/blog-django-py --name=blog<\/span>\n\n<span class=\"hljs-comment\"># 19. Show high-level application status<\/span>\noc status\n\n<span class=\"hljs-comment\"># 20. List all main resources created by new-app<\/span>\noc get all\n\n<span class=\"hljs-comment\"># 21. Watch pods while build and deployment happen<\/span>\noc get pods --watch\n\n<span class=\"hljs-comment\"># Press Ctrl+C after the pod becomes Running<\/span>\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 5: Inspect build, deployment, pods, service<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 22. List builds<\/span>\noc get builds\n\n<span class=\"hljs-comment\"># 23. List build configs<\/span>\noc get buildconfig\n\n<span class=\"hljs-comment\"># 24. Follow logs from the latest build<\/span>\noc logs -f bc\/blog\n\n<span class=\"hljs-comment\"># 25. List deployments<\/span>\noc get deployment\n\n<span class=\"hljs-comment\"># 26. List replica sets<\/span>\noc get replicaset\n\n<span class=\"hljs-comment\"># 27. List pods with node and IP details<\/span>\noc get pods -o wide\n\n<span class=\"hljs-comment\"># 28. Save the first blog pod name into a shell variable<\/span>\nPOD=$(oc get pods -l app=blog -o jsonpath=<span class=\"hljs-string\">'{.items&#91;0].metadata.name}'<\/span>)\n\n<span class=\"hljs-comment\"># 29. Print selected pod name<\/span>\n<span class=\"hljs-keyword\">echo<\/span> $POD\n\n<span class=\"hljs-comment\"># 30. Describe the selected pod for troubleshooting details<\/span>\noc describe pod\/$POD\n\n<span class=\"hljs-comment\"># 31. Show logs from the selected pod<\/span>\noc logs pod\/$POD\n\n<span class=\"hljs-comment\"># 32. Follow live logs from the deployment<\/span>\noc logs -f deployment\/blog\n\n<span class=\"hljs-comment\"># 33. List services<\/span>\noc get service\n\n<span class=\"hljs-comment\"># 34. Describe the blog service<\/span>\noc describe service\/blog\n\n<span class=\"hljs-comment\"># 35. List endpoints behind the service<\/span>\noc get endpoints blog\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 6: Expose the application with an OpenShift Route<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 36. Expose the service as an OpenShift route<\/span>\noc expose service\/blog\n\n<span class=\"hljs-comment\"># 37. List routes<\/span>\noc get route\n\n<span class=\"hljs-comment\"># 38. Show only the route hostname<\/span>\noc get route blog -o jsonpath=<span class=\"hljs-string\">'{.spec.host}{\"\\n\"}'<\/span>\n\n<span class=\"hljs-comment\"># 39. Test the route from your local terminal<\/span>\ncurl -I http:<span class=\"hljs-comment\">\/\/$(oc get route blog -o jsonpath='{.spec.host}')<\/span>\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 7: Debug and interact with the running app<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 40. Execute a simple command inside the pod<\/span>\noc exec pod\/$POD -- pwd\n\n<span class=\"hljs-comment\"># 41. List files inside the pod<\/span>\noc exec pod\/$POD -- ls -la\n\n<span class=\"hljs-comment\"># 42. Show environment variables inside the pod<\/span>\noc exec pod\/$POD -- env\n\n<span class=\"hljs-comment\"># 43. Open an interactive remote shell inside the pod<\/span>\noc rsh pod\/$POD\n\n<span class=\"hljs-comment\"># Type exit to leave the remote shell:<\/span>\n<span class=\"hljs-comment\"># exit<\/span>\n\n<span class=\"hljs-comment\"># 44. Port-forward local port 8080 to the pod port 8080<\/span>\noc port-forward pod\/$POD <span class=\"hljs-number\">8080<\/span>:<span class=\"hljs-number\">8080<\/span>\n\n<span class=\"hljs-comment\"># Open another terminal and test:<\/span>\n<span class=\"hljs-comment\"># curl -I http:\/\/localhost:8080<\/span>\n<span class=\"hljs-comment\"># Press Ctrl+C to stop port-forward<\/span>\n\n\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n<span class=\"hljs-comment\"># Phase 8: Modify application configuration<\/span>\n<span class=\"hljs-comment\"># ------------------------------------------------------------<\/span>\n\n<span class=\"hljs-comment\"># 45. Add an environment variable to the deployment<\/span>\noc set env deployment\/blog APP_MODE=demo\n\n<span class=\"hljs-comment\"># 46. Verify the environment variable was added<\/span>\noc set env deployment\/blog --<span class=\"hljs-keyword\">list<\/span>\n\n<span class=\"hljs-comment\"># 47. Restart the deployment so changes are applied cleanly<\/span>\noc rollout restart deployment\/blog\n\n<span class=\"hljs-comment\"># 48. Watch rollout status<\/span>\noc rollout status deployment\/blog\n\n<span class=\"hljs-comment\"># 49. Scale the application to 2 replicas<\/span>\noc scale deployment\/blog --replicas=<span class=\"hljs-number\">2<\/span>\n\n<span class=\"hljs-comment\"># 50. Verify pods after scaling<\/span>\noc get pods -o wide\n\n\n<span class=\"hljs-comment\"># ============================================================<\/span>\n<span class=\"hljs-comment\"># Optional cleanup after finishing the lab<\/span>\n<span class=\"hljs-comment\"># ============================================================<\/span>\n\n<span class=\"hljs-comment\"># Delete all app resources with label app=blog<\/span>\noc delete all -l app=blog\n\n<span class=\"hljs-comment\"># Delete the route if it still exists<\/span>\noc delete route blog\n\n<span class=\"hljs-comment\"># Delete the project<\/span>\noc delete project oc-top50-demo<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h1 class=\"wp-block-heading\">2. Developer command master table<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This table covers the official OpenShift CLI developer command set from the Red Hat 4.22 reference. Red Hat describes this section as commands developers use to create, deploy, and manage applications. (<a href=\"https:\/\/docs.redhat.com\/en\/documentation\/openshift_container_platform\/4.22\/html\/cli_tools\/openshift-cli-oc\">Red Hat Documentation<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Command<\/th><th>Why \/ When to Use<\/th><th>Example<\/th><th>Expected Output Shape<\/th><\/tr><\/thead><tbody><tr><td><code>oc annotate<\/code><\/td><td>Add\/update\/remove annotations on resources<\/td><td><code>oc annotate pod\/foo description='my frontend'<\/code><\/td><td><code>pod\/foo annotated<\/code><\/td><\/tr><tr><td><code>oc api-resources<\/code><\/td><td>List supported API resources<\/td><td><code>oc api-resources -o wide<\/code><\/td><td>Table: <code>NAME SHORTNAMES APIVERSION NAMESPACED KIND<\/code><\/td><\/tr><tr><td><code>oc api-versions<\/code><\/td><td>List supported API groups\/versions<\/td><td><code>oc api-versions<\/code><\/td><td>Lines like <code>apps\/v1<\/code>, <code>route.openshift.io\/v1<\/code><\/td><\/tr><tr><td><code>oc apply<\/code><\/td><td>Apply declarative YAML\/JSON<\/td><td><code>oc apply -f app.yaml<\/code><\/td><td><code>deployment.apps\/web configured<\/code><\/td><\/tr><tr><td><code>oc apply edit-last-applied<\/code><\/td><td>Edit last-applied config annotation<\/td><td><code>oc apply edit-last-applied deployment\/web<\/code><\/td><td>Opens editor<\/td><\/tr><tr><td><code>oc apply set-last-applied<\/code><\/td><td>Set last-applied config from file<\/td><td><code>oc apply set-last-applied -f app.yaml<\/code><\/td><td><code>deployment.apps\/web configured<\/code><\/td><\/tr><tr><td><code>oc apply view-last-applied<\/code><\/td><td>View last-applied config<\/td><td><code>oc apply view-last-applied deployment\/web<\/code><\/td><td>YAML\/JSON manifest<\/td><\/tr><tr><td><code>oc attach<\/code><\/td><td>Attach to running container process<\/td><td><code>oc attach pod\/web -c app<\/code><\/td><td>Streams process output<\/td><\/tr><tr><td><code>oc auth can-i<\/code><\/td><td>Check RBAC permissions<\/td><td><code>oc auth can-i create pods<\/code><\/td><td><code>yes<\/code> \/ <code>no<\/code><\/td><\/tr><tr><td><code>oc auth reconcile<\/code><\/td><td>Reconcile RBAC objects from file<\/td><td><code>oc auth reconcile -f rbac.yaml<\/code><\/td><td>RBAC objects reconciled<\/td><\/tr><tr><td><code>oc auth whoami<\/code><\/td><td>Show current auth\/session info<\/td><td><code>oc auth whoami<\/code><\/td><td>Current user\/session details<\/td><\/tr><tr><td><code>oc autoscale<\/code><\/td><td>Create\/update HPA<\/td><td><code>oc autoscale deployment\/web --min=1 --max=5 --cpu-percent=80<\/code><\/td><td><code>horizontalpodautoscaler.autoscaling\/web autoscaled<\/code><\/td><\/tr><tr><td><code>oc cancel-build<\/code><\/td><td>Cancel running\/pending build<\/td><td><code>oc cancel-build bc\/web<\/code><\/td><td><code>build.build.openshift.io\/web-1 cancelled<\/code><\/td><\/tr><tr><td><code>oc cluster-info<\/code><\/td><td>Show cluster endpoints<\/td><td><code>oc cluster-info<\/code><\/td><td>API\/control plane endpoint summary<\/td><\/tr><tr><td><code>oc cluster-info dump<\/code><\/td><td>Dump cluster info for troubleshooting<\/td><td><code>oc cluster-info dump<\/code><\/td><td>Large diagnostic output\/files<\/td><\/tr><tr><td><code>oc completion<\/code><\/td><td>Generate shell completion<\/td><td><code>oc completion zsh<\/code><\/td><td>Shell completion script<\/td><\/tr><tr><td><code>oc config current-context<\/code><\/td><td>Show active kubeconfig context<\/td><td><code>oc config current-context<\/code><\/td><td>Context name<\/td><\/tr><tr><td><code>oc config delete-cluster<\/code><\/td><td>Remove cluster from kubeconfig<\/td><td><code>oc config delete-cluster mycluster<\/code><\/td><td><code>deleted cluster mycluster<\/code><\/td><\/tr><tr><td><code>oc config delete-context<\/code><\/td><td>Remove context from kubeconfig<\/td><td><code>oc config delete-context mycontext<\/code><\/td><td><code>deleted context mycontext<\/code><\/td><\/tr><tr><td><code>oc config delete-user<\/code><\/td><td>Remove user from kubeconfig<\/td><td><code>oc config delete-user developer<\/code><\/td><td><code>deleted user developer<\/code><\/td><\/tr><tr><td><code>oc config get-clusters<\/code><\/td><td>List kubeconfig clusters<\/td><td><code>oc config get-clusters<\/code><\/td><td>Cluster names<\/td><\/tr><tr><td><code>oc config get-contexts<\/code><\/td><td>List kubeconfig contexts<\/td><td><code>oc config get-contexts<\/code><\/td><td>Context table<\/td><\/tr><tr><td><code>oc config get-users<\/code><\/td><td>List kubeconfig users<\/td><td><code>oc config get-users<\/code><\/td><td>User names<\/td><\/tr><tr><td><code>oc config new-admin-kubeconfig<\/code><\/td><td>Create admin kubeconfig from certs<\/td><td><code>oc config new-admin-kubeconfig<\/code><\/td><td>Kubeconfig YAML<\/td><\/tr><tr><td><code>oc config new-kubelet-bootstrap-kubeconfig<\/code><\/td><td>Create kubelet bootstrap kubeconfig<\/td><td><code>oc config new-kubelet-bootstrap-kubeconfig<\/code><\/td><td>Kubeconfig YAML<\/td><\/tr><tr><td><code>oc config refresh-ca-bundle<\/code><\/td><td>Refresh CA bundle in kubeconfig<\/td><td><code>oc config refresh-ca-bundle<\/code><\/td><td>Updated kubeconfig<\/td><\/tr><tr><td><code>oc config rename-context<\/code><\/td><td>Rename context<\/td><td><code>oc config rename-context old new<\/code><\/td><td>Context renamed<\/td><\/tr><tr><td><code>oc config set<\/code><\/td><td>Set raw kubeconfig property<\/td><td><code>oc config set current-context mycontext<\/code><\/td><td>Property updated<\/td><\/tr><tr><td><code>oc config set-cluster<\/code><\/td><td>Set cluster entry<\/td><td><code>oc config set-cluster crc --server=https:\/\/api.crc.testing:6443<\/code><\/td><td>Cluster configured<\/td><\/tr><tr><td><code>oc config set-context<\/code><\/td><td>Set context entry<\/td><td><code>oc config set-context demo --namespace=demo<\/code><\/td><td>Context configured<\/td><\/tr><tr><td><code>oc config set-credentials<\/code><\/td><td>Set user credentials<\/td><td><code>oc config set-credentials dev --token=&lt;token&gt;<\/code><\/td><td>User configured<\/td><\/tr><tr><td><code>oc config unset<\/code><\/td><td>Remove kubeconfig property<\/td><td><code>oc config unset users.dev.token<\/code><\/td><td>Property unset<\/td><\/tr><tr><td><code>oc config use-context<\/code><\/td><td>Switch context<\/td><td><code>oc config use-context crc<\/code><\/td><td><code>Switched to context \"crc\"<\/code><\/td><\/tr><tr><td><code>oc config view<\/code><\/td><td>View kubeconfig<\/td><td><code>oc config view<\/code><\/td><td>Kubeconfig YAML<\/td><\/tr><tr><td><code>oc cp<\/code><\/td><td>Copy files to\/from pod<\/td><td><code>oc cp pod\/web:\/tmp\/log.txt .\/log.txt<\/code><\/td><td>File copied<\/td><\/tr><tr><td><code>oc create<\/code><\/td><td>Create resource from file\/stdin<\/td><td><code>oc create -f app.yaml<\/code><\/td><td><code>resource\/name created<\/code><\/td><\/tr><tr><td><code>oc create build<\/code><\/td><td>Create build config<\/td><td><code>oc create build docker --name=web --binary<\/code><\/td><td><code>buildconfig.build.openshift.io\/web created<\/code><\/td><\/tr><tr><td><code>oc create clusterresourcequota<\/code><\/td><td>Create cluster-wide quota<\/td><td><code>oc create clusterresourcequota team-quota --project-label-selector=team=a<\/code><\/td><td>Quota created<\/td><\/tr><tr><td><code>oc create clusterrole<\/code><\/td><td>Create ClusterRole<\/td><td><code>oc create clusterrole pod-reader --verb=get,list --resource=pods<\/code><\/td><td>ClusterRole created<\/td><\/tr><tr><td><code>oc create clusterrolebinding<\/code><\/td><td>Bind ClusterRole cluster-wide<\/td><td><code>oc create clusterrolebinding read-pods --clusterrole=pod-reader --user=alice<\/code><\/td><td>Binding created<\/td><\/tr><tr><td><code>oc create configmap<\/code><\/td><td>Create ConfigMap<\/td><td><code>oc create configmap app-config --from-literal=ENV=dev<\/code><\/td><td>ConfigMap created<\/td><\/tr><tr><td><code>oc create cronjob<\/code><\/td><td>Create CronJob<\/td><td><code>oc create cronjob hello --image=busybox --schedule='*\/5 * * * *' -- echo hi<\/code><\/td><td>CronJob created<\/td><\/tr><tr><td><code>oc create deployment<\/code><\/td><td>Create Deployment<\/td><td><code>oc create deployment web --image=nginx<\/code><\/td><td>Deployment created<\/td><\/tr><tr><td><code>oc create deploymentconfig<\/code><\/td><td>Create OpenShift DeploymentConfig<\/td><td><code>oc create deploymentconfig web --image=nginx<\/code><\/td><td>DeploymentConfig created<\/td><\/tr><tr><td><code>oc create identity<\/code><\/td><td>Create identity object<\/td><td><code>oc create identity htpasswd:alice<\/code><\/td><td>Identity created<\/td><\/tr><tr><td><code>oc create imagestream<\/code><\/td><td>Create ImageStream<\/td><td><code>oc create imagestream nginx<\/code><\/td><td>ImageStream created<\/td><\/tr><tr><td><code>oc create imagestreamtag<\/code><\/td><td>Create ImageStreamTag<\/td><td><code>oc create imagestreamtag nginx:latest --from-image=nginx:latest<\/code><\/td><td>ImageStreamTag created<\/td><\/tr><tr><td><code>oc create ingress<\/code><\/td><td>Create Ingress<\/td><td><code>oc create ingress web --rule='web.example.com\/*=web:80'<\/code><\/td><td>Ingress created<\/td><\/tr><tr><td><code>oc create job<\/code><\/td><td>Create Job<\/td><td><code>oc create job pi --image=perl -- perl -Mbignum=bpi -wle 'print bpi(20)'<\/code><\/td><td>Job created<\/td><\/tr><tr><td><code>oc create namespace<\/code><\/td><td>Create namespace<\/td><td><code>oc create namespace demo<\/code><\/td><td>Namespace created<\/td><\/tr><tr><td><code>oc create poddisruptionbudget<\/code><\/td><td>Create PDB<\/td><td><code>oc create poddisruptionbudget web-pdb --selector=app=web --min-available=1<\/code><\/td><td>PDB created<\/td><\/tr><tr><td><code>oc create priorityclass<\/code><\/td><td>Create PriorityClass<\/td><td><code>oc create priorityclass high --value=1000<\/code><\/td><td>PriorityClass created<\/td><\/tr><tr><td><code>oc create quota<\/code><\/td><td>Create ResourceQuota<\/td><td><code>oc create quota compute --hard=pods=10,cpu=4,memory=8Gi<\/code><\/td><td>Quota created<\/td><\/tr><tr><td><code>oc create role<\/code><\/td><td>Create Role<\/td><td><code>oc create role pod-reader --verb=get,list --resource=pods<\/code><\/td><td>Role created<\/td><\/tr><tr><td><code>oc create rolebinding<\/code><\/td><td>Bind Role<\/td><td><code>oc create rolebinding read-pods --role=pod-reader --user=alice<\/code><\/td><td>RoleBinding created<\/td><\/tr><tr><td><code>oc create route edge<\/code><\/td><td>Create edge TLS route<\/td><td><code>oc create route edge web --service=web<\/code><\/td><td>Route created<\/td><\/tr><tr><td><code>oc create route passthrough<\/code><\/td><td>Create passthrough TLS route<\/td><td><code>oc create route passthrough web --service=web<\/code><\/td><td>Route created<\/td><\/tr><tr><td><code>oc create route reencrypt<\/code><\/td><td>Create re-encrypt TLS route<\/td><td><code>oc create route reencrypt web --service=web<\/code><\/td><td>Route created<\/td><\/tr><tr><td><code>oc create secret docker-registry<\/code><\/td><td>Create registry pull secret<\/td><td><code>oc create secret docker-registry regcred --docker-server=quay.io --docker-username=u --docker-password=p<\/code><\/td><td>Secret created<\/td><\/tr><tr><td><code>oc create secret generic<\/code><\/td><td>Create generic secret<\/td><td><code>oc create secret generic db --from-literal=password=secret<\/code><\/td><td>Secret created<\/td><\/tr><tr><td><code>oc create secret tls<\/code><\/td><td>Create TLS secret<\/td><td><code>oc create secret tls web-tls --cert=tls.crt --key=tls.key<\/code><\/td><td>Secret created<\/td><\/tr><tr><td><code>oc create service clusterip<\/code><\/td><td>Create ClusterIP Service<\/td><td><code>oc create service clusterip web --tcp=8080:8080<\/code><\/td><td>Service created<\/td><\/tr><tr><td><code>oc create service externalname<\/code><\/td><td>Create ExternalName Service<\/td><td><code>oc create service externalname ext --external-name=example.com<\/code><\/td><td>Service created<\/td><\/tr><tr><td><code>oc create service loadbalancer<\/code><\/td><td>Create LoadBalancer Service<\/td><td><code>oc create service loadbalancer web --tcp=80:8080<\/code><\/td><td>Service created<\/td><\/tr><tr><td><code>oc create service nodeport<\/code><\/td><td>Create NodePort Service<\/td><td><code>oc create service nodeport web --tcp=80:8080<\/code><\/td><td>Service created<\/td><\/tr><tr><td><code>oc create serviceaccount<\/code><\/td><td>Create ServiceAccount<\/td><td><code>oc create serviceaccount builder-sa<\/code><\/td><td>ServiceAccount created<\/td><\/tr><tr><td><code>oc create token<\/code><\/td><td>Request ServiceAccount token<\/td><td><code>oc create token builder-sa<\/code><\/td><td>Token string<\/td><\/tr><tr><td><code>oc create user<\/code><\/td><td>Create User object<\/td><td><code>oc create user alice<\/code><\/td><td>User created<\/td><\/tr><tr><td><code>oc create useridentitymapping<\/code><\/td><td>Map user to identity<\/td><td><code>oc create useridentitymapping htpasswd:alice alice<\/code><\/td><td>Mapping created<\/td><\/tr><tr><td><code>oc debug<\/code><\/td><td>Debug pod\/node\/resource<\/td><td><code>oc debug deployment\/web<\/code><\/td><td>Debug pod\/session created<\/td><\/tr><tr><td><code>oc delete<\/code><\/td><td>Delete resources<\/td><td><code>oc delete pod web-abc123<\/code><\/td><td><code>pod \"web-abc123\" deleted<\/code><\/td><\/tr><tr><td><code>oc describe<\/code><\/td><td>Detailed human-readable resource info<\/td><td><code>oc describe pod web-abc123<\/code><\/td><td>Events, labels, containers, conditions<\/td><\/tr><tr><td><code>oc diff<\/code><\/td><td>Preview server-side changes<\/td><td><code>oc diff -f app.yaml<\/code><\/td><td>Unix diff output<\/td><\/tr><tr><td><code>oc edit<\/code><\/td><td>Edit live resource in editor<\/td><td><code>oc edit deployment\/web<\/code><\/td><td>Resource updated or unchanged<\/td><\/tr><tr><td><code>oc events<\/code><\/td><td>Show events<\/td><td><code>oc events<\/code><\/td><td>Event table<\/td><\/tr><tr><td><code>oc exec<\/code><\/td><td>Run command in container<\/td><td><code>oc exec deploy\/web -- ls \/tmp<\/code><\/td><td>Command output<\/td><\/tr><tr><td><code>oc explain<\/code><\/td><td>Explain API fields<\/td><td><code>oc explain deployment.spec.replicas<\/code><\/td><td>Field docs<\/td><\/tr><tr><td><code>oc expose<\/code><\/td><td>Create Service or Route from existing object<\/td><td><code>oc expose deployment\/web --port=8080<\/code><\/td><td>Service created<\/td><\/tr><tr><td><code>oc extract<\/code><\/td><td>Extract ConfigMap\/Secret contents<\/td><td><code>oc extract secret\/db --to=.\/secrets<\/code><\/td><td>Files written<\/td><\/tr><tr><td><code>oc get<\/code><\/td><td>List\/read resources<\/td><td><code>oc get pods -o wide<\/code><\/td><td>Resource table<\/td><\/tr><tr><td><code>oc get-token<\/code><\/td><td>Start OIDC\/auth-code token flow<\/td><td><code>oc get-token --client-id=client-id --issuer-url=test.issuer.url<\/code><\/td><td>Token\/auth output<\/td><\/tr><tr><td><code>oc idle<\/code><\/td><td>Scale idlable resources to zero<\/td><td><code>oc idle service\/web<\/code><\/td><td>Resources idled<\/td><\/tr><tr><td><code>oc image append<\/code><\/td><td>Add layers to images<\/td><td><code>oc image append --from mysql:latest --to registry\/image:latest layer.tar.gz<\/code><\/td><td>Image pushed\/written<\/td><\/tr><tr><td><code>oc image extract<\/code><\/td><td>Copy files from image to filesystem<\/td><td><code>oc image extract docker.io\/library\/busybox:latest --path \/:\/tmp\/busybox<\/code><\/td><td>Files extracted<\/td><\/tr><tr><td><code>oc image info<\/code><\/td><td>Inspect image metadata<\/td><td><code>oc image info quay.io\/openshift\/cli:latest<\/code><\/td><td>Image metadata<\/td><\/tr><tr><td><code>oc image mirror<\/code><\/td><td>Mirror images between registries<\/td><td><code>oc image mirror src\/image:tag=dest\/image:tag<\/code><\/td><td>Image copied<\/td><\/tr><tr><td><code>oc import-image<\/code><\/td><td>Import image into ImageStream<\/td><td><code>oc import-image mystream --from=registry.io\/repo\/image:latest --confirm<\/code><\/td><td>ImageStreamTag imported<\/td><\/tr><tr><td><code>oc kustomize<\/code><\/td><td>Build Kustomize output<\/td><td><code>oc kustomize .\/overlays\/dev<\/code><\/td><td>YAML output<\/td><\/tr><tr><td><code>oc label<\/code><\/td><td>Add\/update\/remove labels<\/td><td><code>oc label pod\/foo app=web<\/code><\/td><td><code>pod\/foo labeled<\/code><\/td><\/tr><tr><td><code>oc login<\/code><\/td><td>Authenticate to cluster<\/td><td><code>oc login https:\/\/api.crc.testing:6443 -u developer -p developer<\/code><\/td><td><code>Login successful<\/code><\/td><\/tr><tr><td><code>oc logout<\/code><\/td><td>End current session<\/td><td><code>oc logout<\/code><\/td><td><code>Logged out<\/code><\/td><\/tr><tr><td><code>oc logs<\/code><\/td><td>View container logs<\/td><td><code>oc logs -f deployment\/web<\/code><\/td><td>Log stream<\/td><\/tr><tr><td><code>oc new-app<\/code><\/td><td>Create app from source\/image\/template<\/td><td><code>oc new-app python:3.9~https:\/\/github.com\/openshift-instruqt\/blog-django-py --name=blog<\/code><\/td><td>BuildConfig\/Deployment\/Service created<\/td><\/tr><tr><td><code>oc new-build<\/code><\/td><td>Create build config<\/td><td><code>oc new-build python:3.9~https:\/\/github.com\/user\/repo --name=app<\/code><\/td><td>BuildConfig created<\/td><\/tr><tr><td><code>oc new-project<\/code><\/td><td>Create and switch project<\/td><td><code>oc new-project demo<\/code><\/td><td><code>Now using project \"demo\"<\/code><\/td><\/tr><tr><td><code>oc observe<\/code><\/td><td>Watch resources and react with command<\/td><td><code>oc observe pods -- echo '{name}'<\/code><\/td><td>Repeated observed output<\/td><\/tr><tr><td><code>oc patch<\/code><\/td><td>Patch resource fields<\/td><td><code>oc patch deployment web -p '{\"spec\":{\"replicas\":3}}'<\/code><\/td><td>Resource patched<\/td><\/tr><tr><td><code>oc plugin<\/code><\/td><td>Manage\/view plugins<\/td><td><code>oc plugin list<\/code><\/td><td>Compatible plugin list<\/td><\/tr><tr><td><code>oc plugin list<\/code><\/td><td>List installed plugins<\/td><td><code>oc plugin list<\/code><\/td><td>Plugin paths<\/td><\/tr><tr><td><code>oc policy add-role-to-user<\/code><\/td><td>Add role to user in project<\/td><td><code>oc policy add-role-to-user view alice<\/code><\/td><td>Role added<\/td><\/tr><tr><td><code>oc policy scc-review<\/code><\/td><td>Review SCC admission for service accounts<\/td><td><code>oc policy scc-review -f pod.yaml<\/code><\/td><td>SCC review result<\/td><\/tr><tr><td><code>oc policy scc-subject-review<\/code><\/td><td>Review SCC for user\/SA<\/td><td><code>oc policy scc-subject-review -f pod.yaml<\/code><\/td><td>SCC subject review<\/td><\/tr><tr><td><code>oc port-forward<\/code><\/td><td>Forward local port to pod\/service<\/td><td><code>oc port-forward pod\/web 8080:8080<\/code><\/td><td><code>Forwarding from 127.0.0.1:8080<\/code><\/td><\/tr><tr><td><code>oc process<\/code><\/td><td>Process template<\/td><td><code>oc process -f template.yaml -p NAME=demo<\/code><\/td><td>YAML objects<\/td><\/tr><tr><td><code>oc project<\/code><\/td><td>Switch\/show current project<\/td><td><code>oc project demo<\/code><\/td><td><code>Now using project \"demo\"<\/code><\/td><\/tr><tr><td><code>oc projects<\/code><\/td><td>List accessible projects<\/td><td><code>oc projects<\/code><\/td><td>Project list<\/td><\/tr><tr><td><code>oc proxy<\/code><\/td><td>Run local API proxy<\/td><td><code>oc proxy --port=8001<\/code><\/td><td><code>Starting to serve on 127.0.0.1:8001<\/code><\/td><\/tr><tr><td><code>oc registry login<\/code><\/td><td>Log local image tools into OpenShift registry<\/td><td><code>oc registry login<\/code><\/td><td>Registry auth configured<\/td><\/tr><tr><td><code>oc replace<\/code><\/td><td>Replace resource from file<\/td><td><code>oc replace -f app.yaml<\/code><\/td><td>Resource replaced<\/td><\/tr><tr><td><code>oc rollback<\/code><\/td><td>Roll back DeploymentConfig<\/td><td><code>oc rollback dc\/web<\/code><\/td><td>Rollback created<\/td><\/tr><tr><td><code>oc rollout<\/code><\/td><td>Manage rollout operations<\/td><td><code>oc rollout status deployment\/web<\/code><\/td><td>Rollout status<\/td><\/tr><tr><td><code>oc rollout cancel<\/code><\/td><td>Cancel rollout<\/td><td><code>oc rollout cancel dc\/web<\/code><\/td><td>Rollout cancelled<\/td><\/tr><tr><td><code>oc rollout history<\/code><\/td><td>View rollout history<\/td><td><code>oc rollout history deployment\/web<\/code><\/td><td>Revision table<\/td><\/tr><tr><td><code>oc rollout latest<\/code><\/td><td>Trigger latest DeploymentConfig rollout<\/td><td><code>oc rollout latest dc\/web<\/code><\/td><td>Rollout started<\/td><\/tr><tr><td><code>oc rollout pause<\/code><\/td><td>Pause rollout<\/td><td><code>oc rollout pause deployment\/web<\/code><\/td><td>Deployment paused<\/td><\/tr><tr><td><code>oc rollout restart<\/code><\/td><td>Restart rollout<\/td><td><code>oc rollout restart deployment\/web<\/code><\/td><td>Deployment restarted<\/td><\/tr><tr><td><code>oc rollout resume<\/code><\/td><td>Resume paused rollout<\/td><td><code>oc rollout resume deployment\/web<\/code><\/td><td>Deployment resumed<\/td><\/tr><tr><td><code>oc rollout retry<\/code><\/td><td>Retry failed DeploymentConfig rollout<\/td><td><code>oc rollout retry dc\/web<\/code><\/td><td>Retry started<\/td><\/tr><tr><td><code>oc rollout status<\/code><\/td><td>Watch rollout<\/td><td><code>oc rollout status deployment\/web<\/code><\/td><td><code>successfully rolled out<\/code><\/td><\/tr><tr><td><code>oc rollout undo<\/code><\/td><td>Roll back deployment revision<\/td><td><code>oc rollout undo deployment\/web<\/code><\/td><td>Rolled back<\/td><\/tr><tr><td><code>oc rsh<\/code><\/td><td>Remote shell into pod<\/td><td><code>oc rsh pod\/web-abc123<\/code><\/td><td>Interactive shell<\/td><\/tr><tr><td><code>oc rsync<\/code><\/td><td>Sync files with pod<\/td><td><code>oc rsync .\/static pod\/web:\/opt\/app\/static<\/code><\/td><td>Files synced<\/td><\/tr><tr><td><code>oc run<\/code><\/td><td>Run pod\/workload quickly<\/td><td><code>oc run test --image=busybox -- sleep 3600<\/code><\/td><td>Pod created<\/td><\/tr><tr><td><code>oc scale<\/code><\/td><td>Scale replicas<\/td><td><code>oc scale deployment\/web --replicas=3<\/code><\/td><td>Deployment scaled<\/td><\/tr><tr><td><code>oc secrets link<\/code><\/td><td>Link secret to service account<\/td><td><code>oc secrets link default regcred --for=pull<\/code><\/td><td>Secret linked<\/td><\/tr><tr><td><code>oc secrets unlink<\/code><\/td><td>Unlink secret from service account<\/td><td><code>oc secrets unlink default regcred<\/code><\/td><td>Secret unlinked<\/td><\/tr><tr><td><code>oc set build-hook<\/code><\/td><td>Set build hooks<\/td><td><code>oc set build-hook bc\/web --post-commit --command -- echo ok<\/code><\/td><td>BuildConfig updated<\/td><\/tr><tr><td><code>oc set build-secret<\/code><\/td><td>Set build secrets<\/td><td><code>oc set build-secret --source bc\/web mysecret<\/code><\/td><td>BuildConfig updated<\/td><\/tr><tr><td><code>oc set data<\/code><\/td><td>Set data in ConfigMap\/Secret<\/td><td><code>oc set data configmap\/app KEY=value<\/code><\/td><td>ConfigMap updated<\/td><\/tr><tr><td><code>oc set deployment-hook<\/code><\/td><td>Set DeploymentConfig hooks<\/td><td><code>oc set deployment-hook dc\/web --pre -- echo pre<\/code><\/td><td>DeploymentConfig updated<\/td><\/tr><tr><td><code>oc set env<\/code><\/td><td>Set env vars<\/td><td><code>oc set env deployment\/web ENV=dev<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc set image<\/code><\/td><td>Update container image<\/td><td><code>oc set image deployment\/web web=nginx:1.25<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc set image-lookup<\/code><\/td><td>Configure ImageStream local lookup<\/td><td><code>oc set image-lookup nginx<\/code><\/td><td>Image lookup updated<\/td><\/tr><tr><td><code>oc set probe<\/code><\/td><td>Set liveness\/readiness\/startup probes<\/td><td><code>oc set probe deployment\/web --readiness --get-url=http:\/\/:8080\/healthz<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc set resources<\/code><\/td><td>Set CPU\/memory requests\/limits<\/td><td><code>oc set resources deployment\/web --limits=cpu=500m,memory=512Mi<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc set route-backends<\/code><\/td><td>Split route traffic<\/td><td><code>oc set route-backends web a=2 b=1<\/code><\/td><td>Route updated<\/td><\/tr><tr><td><code>oc set selector<\/code><\/td><td>Set selector on resource<\/td><td><code>oc set selector service\/web app=web<\/code><\/td><td>Service updated<\/td><\/tr><tr><td><code>oc set serviceaccount<\/code><\/td><td>Set workload service account<\/td><td><code>oc set serviceaccount deployment web builder-sa<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc set subject<\/code><\/td><td>Update RoleBinding\/ClusterRoleBinding subjects<\/td><td><code>oc set subject rolebinding admin --user=alice<\/code><\/td><td>Binding updated<\/td><\/tr><tr><td><code>oc set triggers<\/code><\/td><td>Configure build\/deployment triggers<\/td><td><code>oc set triggers dc\/web --manual<\/code><\/td><td>Triggers updated<\/td><\/tr><tr><td><code>oc set volumes<\/code><\/td><td>Add\/remove\/list volumes<\/td><td><code>oc set volume deployment\/web --add --name=data --emptydir<\/code><\/td><td>Deployment updated<\/td><\/tr><tr><td><code>oc start-build<\/code><\/td><td>Start OpenShift build<\/td><td><code>oc start-build bc\/web --follow<\/code><\/td><td>Build started + logs<\/td><\/tr><tr><td><code>oc status<\/code><\/td><td>Summarize project status<\/td><td><code>oc status<\/code><\/td><td>App\/service\/route\/build summary<\/td><\/tr><tr><td><code>oc tag<\/code><\/td><td>Tag images\/ImageStreams<\/td><td><code>oc tag nginx:latest myproject\/nginx:prod<\/code><\/td><td>Tag updated<\/td><\/tr><tr><td><code>oc version<\/code><\/td><td>Show client\/server versions<\/td><td><code>oc version<\/code><\/td><td>Client + server version info<\/td><\/tr><tr><td><code>oc wait<\/code><\/td><td>Wait for condition\/create\/delete<\/td><td><code>oc wait --for=condition=Ready pod\/busybox1 --timeout=60s<\/code><\/td><td><code>condition met<\/code><\/td><\/tr><tr><td><code>oc whoami<\/code><\/td><td>Show current user\/session<\/td><td><code>oc whoami<\/code><\/td><td>Username<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The official reference confirms the image commands <code>oc image append<\/code>, <code>extract<\/code>, <code>info<\/code>, and <code>mirror<\/code>, and also shows the <code>set serviceaccount<\/code>, <code>set subject<\/code>, and <code>set triggers<\/code> commands that are easy to miss. (<a href=\"https:\/\/docs.redhat.com\/en\/documentation\/openshift_container_platform\/4.22\/html\/cli_tools\/openshift-cli-oc\">Red Hat Documentation<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Administrator command master table<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use these with care. Red Hat explicitly states the admin command reference requires <code>cluster-admin<\/code> or equivalent permissions. (<a href=\"https:\/\/docs.redhat.com\/en\/documentation\/openshift_container_platform\/4.22\/html\/cli_tools\/openshift-cli-oc\">Red Hat Documentation<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Command<\/th><th>Why \/ When to Use<\/th><th>Example<\/th><th>Expected Output Shape<\/th><\/tr><\/thead><tbody><tr><td><code>oc adm build-chain<\/code><\/td><td>Show build image dependencies<\/td><td><code>oc adm build-chain &lt;image-stream&gt;<\/code><\/td><td>Dependency tree<\/td><\/tr><tr><td><code>oc adm catalog mirror<\/code><\/td><td>Mirror Operator catalog<\/td><td><code>oc adm catalog mirror quay.io\/my\/image:latest myregistry.com<\/code><\/td><td>Mirror mapping\/output<\/td><\/tr><tr><td><code>oc adm certificate approve<\/code><\/td><td>Approve CSR<\/td><td><code>oc adm certificate approve csr-abc<\/code><\/td><td>CSR approved<\/td><\/tr><tr><td><code>oc adm certificate deny<\/code><\/td><td>Deny CSR<\/td><td><code>oc adm certificate deny csr-abc<\/code><\/td><td>CSR denied<\/td><\/tr><tr><td><code>oc adm copy-to-node<\/code><\/td><td>Copy files to node<\/td><td><code>oc adm copy-to-node node\/worker-1 .\/file \/tmp\/file<\/code><\/td><td>File copied<\/td><\/tr><tr><td><code>oc adm cordon<\/code><\/td><td>Mark node unschedulable<\/td><td><code>oc adm cordon worker-1<\/code><\/td><td><code>node\/worker-1 cordoned<\/code><\/td><\/tr><tr><td><code>oc adm create-bootstrap-project-template<\/code><\/td><td>Generate bootstrap project template<\/td><td><code>oc adm create-bootstrap-project-template -o yaml<\/code><\/td><td>Template YAML<\/td><\/tr><tr><td><code>oc adm create-error-template<\/code><\/td><td>Generate error page template<\/td><td><code>oc adm create-error-template -o yaml<\/code><\/td><td>Template YAML<\/td><\/tr><tr><td><code>oc adm create-login-template<\/code><\/td><td>Generate login page template<\/td><td><code>oc adm create-login-template -o yaml<\/code><\/td><td>Template YAML<\/td><\/tr><tr><td><code>oc adm create-provider-selection-template<\/code><\/td><td>Generate provider selection template<\/td><td><code>oc adm create-provider-selection-template -o yaml<\/code><\/td><td>Template YAML<\/td><\/tr><tr><td><code>oc adm drain<\/code><\/td><td>Evict pods before maintenance<\/td><td><code>oc adm drain worker-1 --ignore-daemonsets --delete-emptydir-data<\/code><\/td><td>Node drained<\/td><\/tr><tr><td><code>oc adm groups add-users<\/code><\/td><td>Add users to group<\/td><td><code>oc adm groups add-users devs alice bob<\/code><\/td><td>Users added<\/td><\/tr><tr><td><code>oc adm groups new<\/code><\/td><td>Create group<\/td><td><code>oc adm groups new devs alice bob<\/code><\/td><td>Group created<\/td><\/tr><tr><td><code>oc adm groups prune<\/code><\/td><td>Remove old external groups<\/td><td><code>oc adm groups prune --sync-config=config.yaml --confirm<\/code><\/td><td>Groups pruned<\/td><\/tr><tr><td><code>oc adm groups remove-users<\/code><\/td><td>Remove users from group<\/td><td><code>oc adm groups remove-users devs alice<\/code><\/td><td>User removed<\/td><\/tr><tr><td><code>oc adm groups sync<\/code><\/td><td>Sync groups from external provider<\/td><td><code>oc adm groups sync --sync-config=config.yaml --confirm<\/code><\/td><td>Groups synced<\/td><\/tr><tr><td><code>oc adm inspect<\/code><\/td><td>Collect resource debug data<\/td><td><code>oc adm inspect ns\/demo<\/code><\/td><td>Local inspect directory<\/td><\/tr><tr><td><code>oc adm migrate icsp<\/code><\/td><td>Migrate ImageContentSourcePolicy<\/td><td><code>oc adm migrate icsp<\/code><\/td><td>Migration output<\/td><\/tr><tr><td><code>oc adm migrate template-instances<\/code><\/td><td>Migrate template instances<\/td><td><code>oc adm migrate template-instances<\/code><\/td><td>Migration output<\/td><\/tr><tr><td><code>oc adm must-gather<\/code><\/td><td>Collect cluster diagnostics<\/td><td><code>oc adm must-gather<\/code><\/td><td><code>must-gather.local.&lt;rand&gt;<\/code> directory<\/td><\/tr><tr><td><code>oc adm new-project<\/code><\/td><td>Admin-created project with options<\/td><td><code>oc adm new-project myproject --node-selector='type=user-node'<\/code><\/td><td>Project created<\/td><\/tr><tr><td><code>oc adm node-image create<\/code><\/td><td>Create ISO\/PXE files for adding nodes<\/td><td><code>oc adm node-image create<\/code><\/td><td>ISO\/PXE assets created<\/td><\/tr><tr><td><code>oc adm node-image monitor<\/code><\/td><td>Monitor new nodes being added<\/td><td><code>oc adm node-image monitor --ip-addresses 192.168.111.83<\/code><\/td><td>Node add progress<\/td><\/tr><tr><td><code>oc adm node-logs<\/code><\/td><td>View node logs<\/td><td><code>oc adm node-logs worker-1<\/code><\/td><td>Node log output<\/td><\/tr><tr><td><code>oc adm ocp-certificates monitor-certificates<\/code><\/td><td>Monitor OCP certificates<\/td><td><code>oc adm ocp-certificates monitor-certificates<\/code><\/td><td>Certificate status<\/td><\/tr><tr><td><code>oc adm ocp-certificates regenerate-leaf<\/code><\/td><td>Regenerate leaf certificates<\/td><td><code>oc adm ocp-certificates regenerate-leaf<\/code><\/td><td>Cert regeneration output<\/td><\/tr><tr><td><code>oc adm ocp-certificates regenerate-machine-config-server-serving-cert<\/code><\/td><td>Regenerate MCS serving cert<\/td><td><code>oc adm ocp-certificates regenerate-machine-config-server-serving-cert<\/code><\/td><td>Cert regenerated<\/td><\/tr><tr><td><code>oc adm ocp-certificates regenerate-top-level<\/code><\/td><td>Regenerate top-level certs<\/td><td><code>oc adm ocp-certificates regenerate-top-level<\/code><\/td><td>Cert regeneration output<\/td><\/tr><tr><td><code>oc adm ocp-certificates remove-old-trust<\/code><\/td><td>Remove old trust bundles<\/td><td><code>oc adm ocp-certificates remove-old-trust<\/code><\/td><td>Old trust removed<\/td><\/tr><tr><td><code>oc adm ocp-certificates update-ignition-ca-bundle-for-machine-config-server<\/code><\/td><td>Update ignition CA bundle<\/td><td><code>oc adm ocp-certificates update-ignition-ca-bundle-for-machine-config-server<\/code><\/td><td>Secrets updated<\/td><\/tr><tr><td><code>oc adm policy add-cluster-role-to-group<\/code><\/td><td>Grant cluster role to group<\/td><td><code>oc adm policy add-cluster-role-to-group cluster-admin cluster-admins<\/code><\/td><td>Role added<\/td><\/tr><tr><td><code>oc adm policy add-cluster-role-to-user<\/code><\/td><td>Grant cluster role to user<\/td><td><code>oc adm policy add-cluster-role-to-user system:build-strategy-docker devuser<\/code><\/td><td>Role added<\/td><\/tr><tr><td><code>oc adm policy add-role-to-user<\/code><\/td><td>Grant project role<\/td><td><code>oc adm policy add-role-to-user view user1<\/code><\/td><td>Role added<\/td><\/tr><tr><td><code>oc adm policy add-scc-to-group<\/code><\/td><td>Grant SCC to group<\/td><td><code>oc adm policy add-scc-to-group restricted group1<\/code><\/td><td>SCC added<\/td><\/tr><tr><td><code>oc adm policy add-scc-to-user<\/code><\/td><td>Grant SCC to user\/SA<\/td><td><code>oc adm policy add-scc-to-user privileged -z serviceaccount1<\/code><\/td><td>SCC added<\/td><\/tr><tr><td><code>oc adm policy remove-cluster-role-from-group<\/code><\/td><td>Remove cluster role from group<\/td><td><code>oc adm policy remove-cluster-role-from-group cluster-admin cluster-admins<\/code><\/td><td>Role removed<\/td><\/tr><tr><td><code>oc adm policy remove-cluster-role-from-user<\/code><\/td><td>Remove cluster role from user<\/td><td><code>oc adm policy remove-cluster-role-from-user system:build-strategy-docker devuser<\/code><\/td><td>Role removed<\/td><\/tr><tr><td><code>oc adm policy scc-review<\/code><\/td><td>Check which SA can create pod<\/td><td><code>oc adm policy scc-review -z sa1,sa2 -f pod.yaml<\/code><\/td><td>SCC review<\/td><\/tr><tr><td><code>oc adm policy scc-subject-review<\/code><\/td><td>Check whether user\/SA can create pod<\/td><td><code>oc adm policy scc-subject-review -f pod.yaml<\/code><\/td><td>SCC subject review<\/td><\/tr><tr><td><code>oc adm prune builds<\/code><\/td><td>Remove old builds<\/td><td><code>oc adm prune builds --confirm<\/code><\/td><td>Builds pruned<\/td><\/tr><tr><td><code>oc adm prune deployments<\/code><\/td><td>Remove old deployments<\/td><td><code>oc adm prune deployments --confirm<\/code><\/td><td>Deployments pruned<\/td><\/tr><tr><td><code>oc adm prune groups<\/code><\/td><td>Remove old groups<\/td><td><code>oc adm prune groups --confirm<\/code><\/td><td>Groups pruned<\/td><\/tr><tr><td><code>oc adm prune images<\/code><\/td><td>Remove unreferenced images<\/td><td><code>oc adm prune images --keep-tag-revisions=3 --keep-younger-than=60m --confirm<\/code><\/td><td>Images pruned<\/td><\/tr><tr><td><code>oc adm prune renderedmachineconfigs<\/code><\/td><td>Prune rendered MachineConfigs<\/td><td><code>oc adm prune renderedmachineconfigs --confirm<\/code><\/td><td>MachineConfigs pruned<\/td><\/tr><tr><td><code>oc adm prune renderedmachineconfigs list<\/code><\/td><td>List rendered MachineConfigs<\/td><td><code>oc adm prune renderedmachineconfigs list --pool-name=worker<\/code><\/td><td>MachineConfig list<\/td><\/tr><tr><td><code>oc adm reboot-machine-config-pool<\/code><\/td><td>Reboot MachineConfigPools<\/td><td><code>oc adm reboot-machine-config-pool mcp\/worker<\/code><\/td><td>Reboot initiated<\/td><\/tr><tr><td><code>oc adm release extract<\/code><\/td><td>Extract release payload contents<\/td><td><code>oc adm release extract --git=DIR<\/code><\/td><td>Files extracted<\/td><\/tr><tr><td><code>oc adm release info<\/code><\/td><td>Show release info<\/td><td><code>oc adm release info<\/code><\/td><td>Release metadata<\/td><\/tr><tr><td><code>oc adm release mirror<\/code><\/td><td>Mirror release payload<\/td><td><code>oc adm release mirror --from=&lt;release&gt; --to=&lt;registry&gt;<\/code><\/td><td>Mirror output<\/td><\/tr><tr><td><code>oc adm restart-kubelet<\/code><\/td><td>Restart kubelet on nodes<\/td><td><code>oc adm restart-kubelet nodes\/worker-1<\/code><\/td><td>Kubelet restart requested<\/td><\/tr><tr><td><code>oc adm taint<\/code><\/td><td>Add\/remove node taints<\/td><td><code>oc adm taint nodes foo dedicated=special-user:NoSchedule<\/code><\/td><td>Node tainted<\/td><\/tr><tr><td><code>oc adm top images<\/code><\/td><td>Show image usage stats<\/td><td><code>oc adm top images<\/code><\/td><td>Usage table<\/td><\/tr><tr><td><code>oc adm top imagestreams<\/code><\/td><td>Show ImageStream usage stats<\/td><td><code>oc adm top imagestreams<\/code><\/td><td>Usage table<\/td><\/tr><tr><td><code>oc adm top node<\/code><\/td><td>Show node CPU\/memory usage<\/td><td><code>oc adm top node<\/code><\/td><td>Node metrics table<\/td><\/tr><tr><td><code>oc adm top persistentvolumeclaims<\/code><\/td><td>Show PVC usage stats<\/td><td><code>oc adm top persistentvolumeclaims -A<\/code><\/td><td>PVC usage table<\/td><\/tr><tr><td><code>oc adm top pod<\/code><\/td><td>Show pod CPU\/memory usage<\/td><td><code>oc adm top pod --containers<\/code><\/td><td>Pod metrics table<\/td><\/tr><tr><td><code>oc adm uncordon<\/code><\/td><td>Mark node schedulable again<\/td><td><code>oc adm uncordon worker-1<\/code><\/td><td><code>node\/worker-1 uncordoned<\/code><\/td><\/tr><tr><td><code>oc adm upgrade<\/code><\/td><td>View\/change cluster update<\/td><td><code>oc adm upgrade<\/code><\/td><td>Upgrade status\/available updates<\/td><\/tr><tr><td><code>oc adm verify-image-signature<\/code><\/td><td>Verify image signature<\/td><td><code>oc adm verify-image-signature sha256:&lt;digest&gt; --expected-identity=registry\/image:v1<\/code><\/td><td>Verification result<\/td><\/tr><tr><td><code>oc adm wait-for-node-reboot<\/code><\/td><td>Wait for node reboot completion<\/td><td><code>oc adm wait-for-node-reboot nodes --all<\/code><\/td><td>Wait progress\/completion<\/td><\/tr><tr><td><code>oc adm wait-for-stable-cluster<\/code><\/td><td>Wait for cluster operators to stabilize<\/td><td><code>oc adm wait-for-stable-cluster<\/code><\/td><td>Stable\/timeout result<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The admin table includes the newer\/easy-to-miss entries such as <code>node-image create<\/code>, <code>node-image monitor<\/code>, <code>prune renderedmachineconfigs<\/code>, <code>wait-for-node-reboot<\/code>, and <code>wait-for-stable-cluster<\/code>, all visible in the current 4.22 admin reference. (<a href=\"https:\/\/docs.redhat.com\/en\/documentation\/openshift_container_platform\/4.22\/html\/cli_tools\/openshift-cli-oc\">Red Hat Documentation<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Command families by real-world use case<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Login and identity<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Log in<\/td><td><code>oc login &lt;api-server&gt; -u &lt;user&gt; -p &lt;password&gt;<\/code><\/td><\/tr><tr><td>Show user<\/td><td><code>oc whoami<\/code><\/td><\/tr><tr><td>Show auth details<\/td><td><code>oc auth whoami<\/code><\/td><\/tr><tr><td>Check permission<\/td><td><code>oc auth can-i create pods<\/code><\/td><\/tr><tr><td>Log out<\/td><td><code>oc logout<\/code><\/td><\/tr><tr><td>View config<\/td><td><code>oc config view<\/code><\/td><\/tr><tr><td>Switch context<\/td><td><code>oc config use-context &lt;context&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Projects and namespaces<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Create project<\/td><td><code>oc new-project demo<\/code><\/td><\/tr><tr><td>Switch project<\/td><td><code>oc project demo<\/code><\/td><\/tr><tr><td>List projects<\/td><td><code>oc projects<\/code><\/td><\/tr><tr><td>Create namespace<\/td><td><code>oc create namespace demo<\/code><\/td><\/tr><tr><td>Admin create project<\/td><td><code>oc adm new-project demo<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Application deployment<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Deploy from image\/source<\/td><td><code>oc new-app<\/code><\/td><\/tr><tr><td>Create deployment<\/td><td><code>oc create deployment<\/code><\/td><\/tr><tr><td>Create service<\/td><td><code>oc expose deployment\/web --port=8080<\/code><\/td><\/tr><tr><td>Create route<\/td><td><code>oc expose service\/web<\/code><\/td><\/tr><tr><td>Show app summary<\/td><td><code>oc status<\/code><\/td><\/tr><tr><td>Watch pods<\/td><td><code>oc get pods --watch<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Build and image workflow<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Create build<\/td><td><code>oc new-build<\/code><\/td><\/tr><tr><td>Start build<\/td><td><code>oc start-build bc\/web --follow<\/code><\/td><\/tr><tr><td>Cancel build<\/td><td><code>oc cancel-build bc\/web<\/code><\/td><\/tr><tr><td>Import image<\/td><td><code>oc import-image<\/code><\/td><\/tr><tr><td>Tag image<\/td><td><code>oc tag<\/code><\/td><\/tr><tr><td>Inspect image<\/td><td><code>oc image info<\/code><\/td><\/tr><tr><td>Mirror image<\/td><td><code>oc image mirror<\/code><\/td><\/tr><tr><td>Extract image files<\/td><td><code>oc image extract<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Describe resource<\/td><td><code>oc describe pod\/&lt;pod&gt;<\/code><\/td><\/tr><tr><td>Logs<\/td><td><code>oc logs -f deployment\/web<\/code><\/td><\/tr><tr><td>Exec command<\/td><td><code>oc exec deploy\/web -- env<\/code><\/td><\/tr><tr><td>Remote shell<\/td><td><code>oc rsh pod\/&lt;pod&gt;<\/code><\/td><\/tr><tr><td>Debug pod\/deployment\/node<\/td><td><code>oc debug<\/code><\/td><\/tr><tr><td>Events<\/td><td><code>oc events<\/code><\/td><\/tr><tr><td>Cluster info dump<\/td><td><code>oc cluster-info dump<\/code><\/td><\/tr><tr><td>Must-gather<\/td><td><code>oc adm must-gather<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Scaling and rollout<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Scale manually<\/td><td><code>oc scale deployment\/web --replicas=3<\/code><\/td><\/tr><tr><td>Autoscale<\/td><td><code>oc autoscale deployment\/web --min=1 --max=5 --cpu-percent=80<\/code><\/td><\/tr><tr><td>Restart deployment<\/td><td><code>oc rollout restart deployment\/web<\/code><\/td><\/tr><tr><td>Watch rollout<\/td><td><code>oc rollout status deployment\/web<\/code><\/td><\/tr><tr><td>Undo rollout<\/td><td><code>oc rollout undo deployment\/web<\/code><\/td><\/tr><tr><td>Pause\/resume rollout<\/td><td><code>oc rollout pause deployment\/web<\/code> \/ <code>oc rollout resume deployment\/web<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Config, secrets, and environment<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Create ConfigMap<\/td><td><code>oc create configmap<\/code><\/td><\/tr><tr><td>Create Secret<\/td><td><code>oc create secret generic<\/code><\/td><\/tr><tr><td>Create TLS Secret<\/td><td><code>oc create secret tls<\/code><\/td><\/tr><tr><td>Set environment vars<\/td><td><code>oc set env<\/code><\/td><\/tr><tr><td>Link pull secret<\/td><td><code>oc secrets link<\/code><\/td><\/tr><tr><td>Extract secret\/configmap<\/td><td><code>oc extract<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">RBAC and security<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Create Role<\/td><td><code>oc create role<\/code><\/td><\/tr><tr><td>Create RoleBinding<\/td><td><code>oc create rolebinding<\/code><\/td><\/tr><tr><td>Check permission<\/td><td><code>oc auth can-i<\/code><\/td><\/tr><tr><td>Add role to user<\/td><td><code>oc policy add-role-to-user<\/code><\/td><\/tr><tr><td>Admin add cluster role<\/td><td><code>oc adm policy add-cluster-role-to-user<\/code><\/td><\/tr><tr><td>SCC review<\/td><td><code>oc adm policy scc-review<\/code><\/td><\/tr><tr><td>Add SCC<\/td><td><code>oc adm policy add-scc-to-user<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Node and cluster administration<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Cordon node<\/td><td><code>oc adm cordon<\/code><\/td><\/tr><tr><td>Drain node<\/td><td><code>oc adm drain<\/code><\/td><\/tr><tr><td>Uncordon node<\/td><td><code>oc adm uncordon<\/code><\/td><\/tr><tr><td>Taint node<\/td><td><code>oc adm taint<\/code><\/td><\/tr><tr><td>Node metrics<\/td><td><code>oc adm top node<\/code><\/td><\/tr><tr><td>Pod metrics<\/td><td><code>oc adm top pod<\/code><\/td><\/tr><tr><td>Cluster upgrade status<\/td><td><code>oc adm upgrade<\/code><\/td><\/tr><tr><td>Wait for stable cluster<\/td><td><code>oc adm wait-for-stable-cluster<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Expected output patterns<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use these as mental models.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Command Type<\/th><th>Example<\/th><th>Typical Output<\/th><\/tr><\/thead><tbody><tr><td>Create<\/td><td><code>oc create configmap app<\/code><\/td><td><code>configmap\/app created<\/code><\/td><\/tr><tr><td>Apply<\/td><td><code>oc apply -f app.yaml<\/code><\/td><td><code>created<\/code>, <code>configured<\/code>, or <code>unchanged<\/code><\/td><\/tr><tr><td>Delete<\/td><td><code>oc delete pod web<\/code><\/td><td><code>pod \"web\" deleted<\/code><\/td><\/tr><tr><td>Get<\/td><td><code>oc get pods<\/code><\/td><td>Table with <code>NAME READY STATUS RESTARTS AGE<\/code><\/td><\/tr><tr><td>Describe<\/td><td><code>oc describe pod web<\/code><\/td><td>Long human-readable detail<\/td><\/tr><tr><td>Logs<\/td><td><code>oc logs -f deployment\/web<\/code><\/td><td>Application log stream<\/td><\/tr><tr><td>Patch<\/td><td><code>oc patch deployment web -p ...<\/code><\/td><td><code>deployment.apps\/web patched<\/code><\/td><\/tr><tr><td>Set<\/td><td><code>oc set env deployment\/web A=B<\/code><\/td><td><code>deployment.apps\/web updated<\/code><\/td><\/tr><tr><td>Rollout status<\/td><td><code>oc rollout status deployment\/web<\/code><\/td><td><code>deployment \"web\" successfully rolled out<\/code><\/td><\/tr><tr><td>Wait<\/td><td><code>oc wait --for=condition=Ready pod\/web<\/code><\/td><td><code>pod\/web condition met<\/code><\/td><\/tr><tr><td>Auth check<\/td><td><code>oc auth can-i get pods<\/code><\/td><td><code>yes<\/code> or <code>no<\/code><\/td><\/tr><tr><td>Admin metrics<\/td><td><code>oc adm top pod<\/code><\/td><td>CPU\/memory usage table<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Recommended learning order for labs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use this sequence for students:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Lab Stage<\/th><th>Commands<\/th><\/tr><\/thead><tbody><tr><td>Access cluster<\/td><td><code>oc login<\/code>, <code>oc whoami<\/code>, <code>oc version<\/code><\/td><\/tr><tr><td>Explore APIs<\/td><td><code>oc api-resources<\/code>, <code>oc api-versions<\/code>, <code>oc explain<\/code><\/td><\/tr><tr><td>Work with projects<\/td><td><code>oc new-project<\/code>, <code>oc project<\/code>, <code>oc projects<\/code><\/td><\/tr><tr><td>Deploy app<\/td><td><code>oc new-app<\/code>, <code>oc status<\/code>, <code>oc get all<\/code><\/td><\/tr><tr><td>Expose app<\/td><td><code>oc expose<\/code>, <code>oc get route<\/code><\/td><\/tr><tr><td>Debug app<\/td><td><code>oc logs<\/code>, <code>oc describe<\/code>, <code>oc events<\/code>, <code>oc exec<\/code>, <code>oc rsh<\/code><\/td><\/tr><tr><td>Modify app<\/td><td><code>oc set env<\/code>, <code>oc set image<\/code>, <code>oc scale<\/code>, <code>oc rollout status<\/code><\/td><\/tr><tr><td>Config\/secrets<\/td><td><code>oc create configmap<\/code>, <code>oc create secret<\/code>, <code>oc set env<\/code><\/td><\/tr><tr><td>Builds\/images<\/td><td><code>oc new-build<\/code>, <code>oc start-build<\/code>, <code>oc import-image<\/code>, <code>oc tag<\/code><\/td><\/tr><tr><td>RBAC<\/td><td><code>oc auth can-i<\/code>, <code>oc create role<\/code>, <code>oc create rolebinding<\/code><\/td><\/tr><tr><td>Cleanup<\/td><td><code>oc delete<\/code>, <code>oc delete all -l app=&lt;app&gt;<\/code><\/td><\/tr><tr><td>Admin<\/td><td><code>oc adm top<\/code>, <code>oc adm must-gather<\/code>, <code>oc adm cordon\/drain\/uncordon<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. My safest \u201cdo not hallucinate\u201d rule for your course material<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For every lab page, include this box:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Verify exact syntax on your installed client<\/span>\noc &lt;command&gt; --help\n\n<span class=\"hljs-comment\"># Verify available resources on your cluster<\/span>\noc api-resources\n\n<span class=\"hljs-comment\"># Verify your permissions<\/span>\noc auth can-i &lt;verb&gt; &lt;resource&gt;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">This protects the tutorial from version drift, Operator-installed APIs, and permission differences between CRC\/OpenShift Local, Developer Sandbox, and full production OpenShift.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>0. First: audit your local oc Run this first on your machine: For any command: Use this style for labs: Most useful global patterns: Pattern Why use&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5153],"tags":[],"class_list":["post-50038","post","type-post","status-publish","format-standard","hentry","category-openshift"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=50038"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50038\/revisions"}],"predecessor-version":[{"id":77145,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50038\/revisions\/77145"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=50038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=50038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=50038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}