{"id":50067,"date":"2026-06-23T06:25:42","date_gmt":"2026-06-23T06:25:42","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=50067"},"modified":"2026-06-23T06:25:44","modified_gmt":"2026-06-23T06:25:44","slug":"openshift-lab-7-scale-applications-using-the-oc-cli-tool","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/openshift-lab-7-scale-applications-using-the-oc-cli-tool\/","title":{"rendered":"Openshift: Lab 7 &#8211; Scale applications using the oc CLI tool"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Lab 7 summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This lab teaches how to use the <strong><code>oc<\/code> CLI<\/strong> to scale an OpenShift application <strong>up and down<\/strong> by changing the number of pod replicas in a Kubernetes\/OpenShift Deployment. The sample app used is <strong>Parksmap<\/strong>, deployed from the container image:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">quay.io\/openshiftroadshow\/parksmap\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">The lab first logs into Developer Sandbox using an <code>oc login --token=... --server=...<\/code> command copied from the OpenShift web console, then deploys the app, exposes it, checks the deployment, scales it to 3 replicas, and scales it back to 1 replica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Main commands from the lab<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Login using token copied from OpenShift web console<\/span>\noc login --token=&lt;token&gt; --server=&lt;api-server&gt;\n\n<span class=\"hljs-comment\"># Deploy Parksmap from container image<\/span>\noc <span class=\"hljs-keyword\">new<\/span>-app quay.io\/openshiftroadshow\/parksmap\n\n<span class=\"hljs-comment\"># Expose the service<\/span>\noc expose service\/parksmap\n\n<span class=\"hljs-comment\"># Check deployment<\/span>\noc get deployment\n\n<span class=\"hljs-comment\"># Scale up to 3 pods<\/span>\noc scale deployment parksmap --replicas=<span class=\"hljs-number\">3<\/span>\n\n<span class=\"hljs-comment\"># Verify scale-up<\/span>\noc get deployment -l app=parksmap\n\n<span class=\"hljs-comment\"># Scale down to 1 pod<\/span>\noc scale deployment parksmap --replicas=<span class=\"hljs-number\">1<\/span>\n\n<span class=\"hljs-comment\"># Verify scale-down<\/span>\noc get deployment -l app=parksmap\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><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<h2 class=\"wp-block-heading\">Expected outputs shown in the lab<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After <code>oc new-app quay.io\/openshiftroadshow\/parksmap<\/code>, the lab shows output like:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">imagestream<\/span><span class=\"hljs-selector-class\">.image<\/span><span class=\"hljs-selector-class\">.openshift<\/span><span class=\"hljs-selector-class\">.io<\/span> \"<span class=\"hljs-selector-tag\">parksmap<\/span>\" <span class=\"hljs-selector-tag\">created<\/span>\n<span class=\"hljs-selector-tag\">deployment<\/span><span class=\"hljs-selector-class\">.apps<\/span> \"<span class=\"hljs-selector-tag\">parksmap<\/span>\" <span class=\"hljs-selector-tag\">created<\/span>\n<span class=\"hljs-selector-tag\">service<\/span> \"<span class=\"hljs-selector-tag\">parksmap<\/span>\" <span class=\"hljs-selector-tag\">created<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Then OpenShift suggests exposing the app:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">oc expose service\/parksmap\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">route.route.openshift.io\/parksmap exposed\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">For scale-up:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">oc scale deployment parksmap --replicas=3\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">deployment.apps\/parksmap scaled\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">NAME       READY   UP-TO-DATE   AVAILABLE   AGE\nparksmap   3\/3     3            3           43m\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">For scale-down:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">oc scale deployment parksmap --replicas=1\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">deployment.apps\/parksmap scaled\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Then:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">NAME       READY   UP-TO-DATE   AVAILABLE   AGE\nparksmap   1\/1     1            1           43m\n<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Clean corrected version of Lab 7<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are two copy-paste wording issues in the PDF:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>It says <strong>\u201cInstall an application from source code using <code>oc new-app<\/code>\u201d<\/strong>, but the actual command uses a <strong>container image<\/strong>, not source code.<\/li>\n\n\n\n<li>It says the following sections describe using the <strong>web console<\/strong>, but this lab is actually about using the <strong><code>oc<\/code> CLI<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The corrected lab flow should be:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># 1. Log in with token copied from OpenShift web console<\/span>\noc login --token=&lt;your-token&gt; --server=&lt;your-api-server&gt;\n\n<span class=\"hljs-comment\"># 2. Confirm user<\/span>\noc whoami\n\n<span class=\"hljs-comment\"># 3. Check current project<\/span>\noc project\n\n<span class=\"hljs-comment\"># 4. Deploy Parksmap from container image<\/span>\noc <span class=\"hljs-keyword\">new<\/span>-app quay.io\/openshiftroadshow\/parksmap\n\n<span class=\"hljs-comment\"># 5. Check created resources<\/span>\noc get all\n\n<span class=\"hljs-comment\"># 6. Expose the service as a route<\/span>\noc expose service\/parksmap\n\n<span class=\"hljs-comment\"># 7. Get the route<\/span>\noc get route parksmap\n\n<span class=\"hljs-comment\"># 8. Check current deployment replica count<\/span>\noc get deployment parksmap\n\n<span class=\"hljs-comment\"># 9. Scale up to 3 pods<\/span>\noc scale deployment parksmap --replicas=<span class=\"hljs-number\">3<\/span>\n\n<span class=\"hljs-comment\"># 10. Verify scale-up<\/span>\noc get deployment -l app=parksmap\noc get pods -l app=parksmap\n\n<span class=\"hljs-comment\"># 11. Scale down to 1 pod<\/span>\noc scale deployment parksmap --replicas=<span class=\"hljs-number\">1<\/span>\n\n<span class=\"hljs-comment\"># 12. Verify scale-down<\/span>\noc get deployment -l app=parksmap\noc get pods -l app=parksmap\n\n<span class=\"hljs-comment\"># 13. Optional cleanup<\/span>\noc delete all -l app=parksmap\noc delete route parksmap\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><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<h2 class=\"wp-block-heading\">Difference from Lab 6<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Lab<\/th><th>Tool<\/th><th>Main Skill<\/th><\/tr><\/thead><tbody><tr><td>Lab 6<\/td><td>OpenShift web console<\/td><td>Scale app using Topology UI<\/td><\/tr><tr><td>Lab 7<\/td><td><code>oc<\/code> CLI<\/td><td>Scale app using <code>oc scale deployment<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So yes: <strong>Lab 7 is the CLI version of Lab 6<\/strong>, using the same Parksmap-style scaling concept.<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-7.pdf\" type=\"application\/pdf\" style=\"width:100%;height:2000px\" aria-label=\"Embed of Openshift Lab 7.\"><\/object><a id=\"wp-block-file--media-3e0cf376-9a57-4ff1-be53-b60a079e5f29\" href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-7.pdf\">Openshift Lab 7<\/a><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-7.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-3e0cf376-9a57-4ff1-be53-b60a079e5f29\">Download<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lab 7 summary This lab teaches how to use the oc CLI to scale an OpenShift application up and down by changing the number of pod replicas&#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-50067","post","type-post","status-publish","format-standard","hentry","category-openshift"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50067","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=50067"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50067\/revisions"}],"predecessor-version":[{"id":77150,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50067\/revisions\/77150"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=50067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=50067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=50067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}