{"id":49258,"date":"2025-05-04T15:15:24","date_gmt":"2025-05-04T15:15:24","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49258"},"modified":"2026-06-23T06:59:18","modified_gmt":"2026-06-23T06:59:18","slug":"openshift-install-configurations-using-openshift-local-in-macos-laptops-desktops","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/openshift-install-configurations-using-openshift-local-in-macos-laptops-desktops\/","title":{"rendered":"OpenShift Install &amp; Configurations using OpenShift Local in MacOS laptops\/desktops"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Here is the <strong>step-by-step guide<\/strong> to correctly install and configure <strong>OpenShift Local (CRC)<\/strong> on <strong>macOS laptops or desktops<\/strong> for local OpenShift 4.x development.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf4e OpenShift Local on macOS \u2013 Overview<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Tool Name<\/td><td>OpenShift Local (CLI tool: <code>crc<\/code>)<\/td><\/tr><tr><td>Runs<\/td><td>Single-node OpenShift 4.x cluster<\/td><\/tr><tr><td>Virtualization<\/td><td>Uses Apple\u2019s <strong>Hypervisor.framework<\/strong> (no VirtualBox required)<\/td><\/tr><tr><td>Use Case<\/td><td>Ideal for <strong>local development<\/strong>, testing OpenShift apps, and CLI practice<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 System Requirements<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Minimum (Recommended)<\/th><\/tr><\/thead><tbody><tr><td>OS<\/td><td>macOS Monterey (12.x) or later<\/td><\/tr><tr><td>CPU<\/td><td>4 cores<\/td><\/tr><tr><td>RAM<\/td><td>9 GB (16 GB recommended)<\/td><\/tr><tr><td>Disk Space<\/td><td>35+ GB free<\/td><\/tr><tr><td>Virtualization<\/td><td>Must be enabled (Apple Silicon\/Intel supported)<\/td><\/tr><tr><td>Tools Included<\/td><td><code>crc<\/code>, <code>oc<\/code> (OpenShift CLI), VM image<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddf0 Step 1: Download OpenShift Local &amp; Pull Secret<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Visit: <a href=\"https:\/\/console.redhat.com\/openshift\/create\/local\">https:\/\/console.redhat.com\/openshift\/create\/local<\/a><\/li>\n\n\n\n<li>Sign in with your <strong>Red Hat account<\/strong> (create a free one if needed).<\/li>\n\n\n\n<li>Download:\n<ul class=\"wp-block-list\">\n<li><code>openshift-local.pkg<\/code> (installer for macOS)<\/li>\n\n\n\n<li><strong>Pull Secret<\/strong> file \u2192 Save it as <code>pull-secret.txt<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcbb Step 2: Install OpenShift Local (CRC)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Double-click <code>openshift-local.pkg<\/code> to begin the installation.<\/li>\n\n\n\n<li>Follow the macOS installer prompts.<\/li>\n\n\n\n<li>After installation, open Terminal and verify:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">crc version\n<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">You should see the version (e.g., <code>2.49.0<\/code>) and OpenShift version (e.g., <code>4.18.x<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd27 Step 3: Set Up the Cluster<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Terminal:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">crc setup\n<\/code><\/span><\/pre>\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\"><\/code><\/span><\/pre>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Replace the path if your pull-secret is stored elsewhere.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">This command:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sets up the Hypervisor VM<\/li>\n\n\n\n<li>Prepares OpenShift environment<\/li>\n\n\n\n<li>Installs the CRC bundle<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u25b6\ufe0f Step 4: Start the OpenShift Cluster<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">crc start -p ~<span class=\"hljs-regexp\">\/Downloads\/<\/span>pull-secret.txt\nor\ncrc start --pull-secret-file ~<span class=\"hljs-regexp\">\/Downloads\/<\/span>pull-secret.txt\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><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<ul class=\"wp-block-list\">\n<li>This launches a single-node OpenShift 4 cluster.<\/li>\n\n\n\n<li>The process may take 5\u201315 minutes depending on your hardware.<\/li>\n\n\n\n<li>Once done, you\u2019ll see:<\/li>\n<\/ul>\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\">Started the OpenShift cluster\nConsole URL: https:<span class=\"hljs-comment\">\/\/console-openshift-console.apps-crc.testing<\/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\">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<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\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\">rajesh@DM-GYK3HC26H7 ~ % crc start --pull-secret-file ~\/Downloads\/pull-secret.txt\nINFO Using bundle path \/Users\/rajesh\/.crc\/cache\/crc_vfkit_4<span class=\"hljs-number\">.21<\/span><span class=\"hljs-number\">.14<\/span>_arm64.crcbundle \nINFO Checking <span class=\"hljs-keyword\">if<\/span> running macOS version &gt;= <span class=\"hljs-number\">13.<\/span>x    \nINFO Checking <span class=\"hljs-keyword\">if<\/span> running <span class=\"hljs-keyword\">as<\/span> non-root              \nINFO Checking <span class=\"hljs-keyword\">if<\/span> crc-admin-helper executable is cached \nINFO Checking <span class=\"hljs-keyword\">if<\/span> running on a supported CPU architecture \nINFO Checking <span class=\"hljs-keyword\">if<\/span> crc executable symlink exists    \nINFO Checking minimum RAM requirements            \nINFO Checking <span class=\"hljs-keyword\">if<\/span> running emulated on Apple silicon \nINFO Checking <span class=\"hljs-keyword\">if<\/span> vfkit is installed               \nINFO Checking <span class=\"hljs-keyword\">if<\/span> old launchd config <span class=\"hljs-keyword\">for<\/span> tray <span class=\"hljs-keyword\">and<\/span>\/<span class=\"hljs-keyword\">or<\/span> daemon exists \nINFO Checking <span class=\"hljs-keyword\">if<\/span> crc daemon plist file is present <span class=\"hljs-keyword\">and<\/span> loaded \nINFO Checking SSH port availability               \nINFO Loading bundle: crc_vfkit_4<span class=\"hljs-number\">.21<\/span><span class=\"hljs-number\">.14<\/span>_arm64...   \nINFO Starting CRC VM <span class=\"hljs-keyword\">for<\/span> openshift <span class=\"hljs-number\">4.21<\/span><span class=\"hljs-number\">.14<\/span>...     \nINFO CRC instance is running with IP <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>    \nINFO CRC VM is running                            \nINFO Updating authorized keys...                  \nINFO Configuring shared directories               \nINFO Check internal <span class=\"hljs-keyword\">and<\/span> <span class=\"hljs-keyword\">public<\/span> DNS query...       \nINFO Check DNS query from host...                 \nINFO Verifying validity of the kubelet certificates... \nINFO Starting kubelet service                     \nINFO Waiting <span class=\"hljs-keyword\">for<\/span> kube-apiserver availability... &#91;takes around <span class=\"hljs-number\">2<\/span>min] \nINFO Adding user<span class=\"hljs-string\">'s pull secret to the cluster...  \nINFO Updating SSH key to machine config resource... \nINFO Overriding password for developer user       \nINFO Changing the password for the users          \nINFO Updating cluster ID...                       \nINFO Updating root CA cert to admin-kubeconfig-client-ca configmap... \nINFO Starting openshift instance... &#91;waiting for the cluster to stabilize] \nINFO 6 operators are progressing: console, dns, image-registry, ingress, openshift-controller-manager, ... \nINFO 3 operators are progressing: authentication, network, openshift-controller-manager \nINFO All operators are available. Ensuring stability... \nINFO Operators are stable (2\/3)...                \nINFO Operators are stable (3\/3)...                \nINFO Waiting until the user'<\/span>s pull secret is written to the instance disk... \nINFO Adding crc-admin <span class=\"hljs-keyword\">and<\/span> crc-developer contexts to kubeconfig... \nStarted the OpenShift cluster.\n\nThe server is accessible via web console at:\n  https:<span class=\"hljs-comment\">\/\/console-openshift-console.apps-crc.testing<\/span>\n\nLog in <span class=\"hljs-keyword\">as<\/span> administrator:\n  Username: kubeadmin\n  Password: j33RY-Xxx9Z-bbgUw-FzkaB\n\nLog in <span class=\"hljs-keyword\">as<\/span> user:\n  Username: developer\n  Password: developer\n\n<span class=\"hljs-keyword\">Use<\/span> <span class=\"hljs-title\">the<\/span> '<span class=\"hljs-title\">oc<\/span>' <span class=\"hljs-title\">command<\/span> <span class=\"hljs-title\">line<\/span> <span class=\"hljs-title\">interface<\/span>:\n  $ <span class=\"hljs-title\">eval<\/span> $(<span class=\"hljs-title\">crc<\/span> <span class=\"hljs-title\">oc<\/span>-<span class=\"hljs-title\">env<\/span>)\n  $ <span class=\"hljs-title\">oc<\/span> <span class=\"hljs-title\">login<\/span> -<span class=\"hljs-title\">u<\/span> <span class=\"hljs-title\">developer<\/span> <span class=\"hljs-title\">https<\/span>:\/\/<span class=\"hljs-title\">api<\/span>.<span class=\"hljs-title\">crc<\/span>.<span class=\"hljs-title\">testing<\/span>:6443\n<span class=\"hljs-title\">rajesh<\/span>@<span class=\"hljs-title\">DM<\/span>-<span class=\"hljs-title\">GYK3HC26H7<\/span> ~ % \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\">Step 5: Access OpenShift Web Console<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open the printed URL:<\/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\">https:<span class=\"hljs-comment\">\/\/console-openshift-console.apps-crc.testing<\/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<h3 class=\"wp-block-heading\">Login Credentials:<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Role<\/th><th>Username<\/th><th>Password<\/th><\/tr><\/thead><tbody><tr><td>Admin<\/td><td><code>kubeadmin<\/code><\/td><td>Shown in terminal<\/td><\/tr><tr><td>Developer<\/td><td><code>developer<\/code><\/td><td><code>developer<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddea Step 6: Access via <code>oc<\/code> CLI (Optional)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To set up the OpenShift CLI environment:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">eval<\/span> $(crc oc-env)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><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\">Then login:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">oc login -u developer -p developer https:<span class=\"hljs-comment\">\/\/api.crc.testing:6443<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><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\">Now you can deploy, test, and manage apps from your terminal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd01 Cluster Management Commands<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>Command<\/th><\/tr><\/thead><tbody><tr><td>Stop cluster<\/td><td><code>crc stop<\/code><\/td><\/tr><tr><td>Delete cluster<\/td><td><code>crc delete<\/code><\/td><\/tr><tr><td>Status<\/td><td><code>crc status<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u26a0\ufe0f Troubleshooting Tips<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Issue<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>DNS resolution fails<\/td><td>Disable VPN; retry browser or <code>oc<\/code> with correct URL<\/td><\/tr><tr><td>CRC fails to start<\/td><td>Check RAM\/CPU availability and make sure no conflicting VMs<\/td><\/tr><tr><td><code>crc<\/code> command not found<\/td><td>Reboot or re-add <code>\/usr\/local\/bin<\/code> to your shell <code>$PATH<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here is the step-by-step guide to correctly install and configure OpenShift Local (CRC) on macOS laptops or desktops for local OpenShift 4.x development. \ud83c\udf4e OpenShift Local on&#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-49258","post","type-post","status-publish","format-standard","hentry","category-openshift"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49258","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=49258"}],"version-history":[{"count":5,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49258\/revisions"}],"predecessor-version":[{"id":77160,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49258\/revisions\/77160"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}