{"id":49111,"date":"2025-04-14T16:27:20","date_gmt":"2025-04-14T16:27:20","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49111"},"modified":"2026-02-21T07:27:58","modified_gmt":"2026-02-21T07:27:58","slug":"openshift-step-by-step-guide-to-install-and-set-up-okd-openshift-kubernetes-distribution","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/openshift-step-by-step-guide-to-install-and-set-up-okd-openshift-kubernetes-distribution\/","title":{"rendered":"OpenShift Install &amp; Configurations using OKD in (Bare Metal \/ UPI \/ AWS)"},"content":{"rendered":"\n<p>Here is the <strong>latest, step-by-step complete guide to install and configure OKD<\/strong> \u2014 the open-source version of OpenShift \u2014 along with an introduction to what OKD is.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde9 What is OKD?<\/h1>\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>Name<\/td><td>OKD (Origin Community Distribution of Kubernetes)<\/td><\/tr><tr><td>Relation to OpenShift<\/td><td><strong>Upstream open-source<\/strong> version of Red Hat OpenShift<\/td><\/tr><tr><td>Core Components<\/td><td>Kubernetes + CRI-O + Podman + Operators + OpenShift Console<\/td><\/tr><tr><td>Latest Version (2026)<\/td><td>OKD 4.14 (matching OpenShift 4.14)<\/td><\/tr><tr><td>Supported OS<\/td><td>Fedora CoreOS (FCOS), RHEL CoreOS<\/td><\/tr><tr><td>Deployment Modes<\/td><td>IPI (Installer-Provisioned Infrastructure), UPI (User-Provisioned Infra)<\/td><\/tr><tr><td>License<\/td><td>Apache 2.0 \/ Open Source (Free to use)<\/td><\/tr><tr><td>Ideal For<\/td><td>Open-source adopters, self-managed clusters, testing advanced OpenShift<\/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\">\u2705 OKD Installation Methods (Summary)<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Platform<\/th><th>Automation<\/th><th>Use Case<\/th><\/tr><\/thead><tbody><tr><td>IPI<\/td><td>AWS, GCP, Azure, vSphere<\/td><td>\u2705 Yes<\/td><td>Quick cloud installation with automation<\/td><\/tr><tr><td>UPI<\/td><td>Bare metal, custom VMs<\/td><td>\u26a0\ufe0f Manual<\/td><td>On-premise or custom infrastructure<\/td><\/tr><tr><td>CRC<\/td><td>Local VM (dev only)<\/td><td>\u2705 Single-node<\/td><td>Developer test environments<\/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\">\ud83d\ude80 Step-by-Step Guide: OKD 4.14 Installation (Bare Metal \/ UPI)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udce6 We&#8217;ll install OKD 4.14 using the <strong>UPI (User-Provisioned Infrastructure)<\/strong> method on <strong>bare metal or custom virtual machines<\/strong>.<\/h3>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udee0\ufe0f 1. System Prerequisites<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Requirement<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>OS<\/td><td>Fedora CoreOS (OKD requires FCOS)<\/td><\/tr><tr><td>Machines<\/td><td>Bootstrap, Master(s), Worker(s)<\/td><\/tr><tr><td>RAM per Master<\/td><td>16 GB+<\/td><\/tr><tr><td>CPU per Master<\/td><td>4+ cores<\/td><\/tr><tr><td>Disk per Node<\/td><td>100 GB+ SSD<\/td><\/tr><tr><td>DNS + DHCP<\/td><td>Required<\/td><\/tr><tr><td>Internet Access<\/td><td>Required (or mirror registry for offline)<\/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\">\ud83d\udce5 2. Download OKD Tools<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd17 Download links:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OKD Installer<\/strong>: <a href=\"https:\/\/github.com\/openshift\/okd\/releases\">https:\/\/github.com\/openshift\/okd\/releases<\/a><\/li>\n\n\n\n<li><strong>Fedora CoreOS (FCOS)<\/strong> images: <a href=\"https:\/\/getfedora.org\/coreos\">https:\/\/getfedora.org\/coreos<\/a><\/li>\n<\/ul>\n\n\n\n<p>Download:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>openshift-install<\/code> binary<\/li>\n\n\n\n<li><code>oc<\/code> CLI binary<\/li>\n\n\n\n<li><code>Fedora CoreOS<\/code> ISO and PXE images<\/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\">\ud83d\udd10 3. Generate Install Config<\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/openshift-install create install-config --dir=okd-cluster\n<\/code><\/span><\/pre>\n\n\n<p>This prompts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Base domain (e.g., <code>example.com<\/code>)<\/li>\n\n\n\n<li>Cluster name (e.g., <code>okd<\/code>)<\/li>\n\n\n\n<li>Pull secret (use OKD-specific or fake secret for community)<\/li>\n\n\n\n<li>Platform (select &#8220;none&#8221; for bare metal\/UPI)<\/li>\n\n\n\n<li>SSH key (for connecting to nodes)<\/li>\n<\/ul>\n\n\n\n<p>This generates: <code>install-config.yaml<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddfe 4. Create Ignition Files<\/h2>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/openshift-install create ignition-configs --dir=okd-cluster\n<\/code><\/span><\/pre>\n\n\n<p>This creates:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>bootstrap.ign<\/code><\/li>\n\n\n\n<li><code>master.ign<\/code><\/li>\n\n\n\n<li><code>worker.ign<\/code><\/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\">\ud83d\udcbd 5. Provision Fedora CoreOS Nodes<\/h2>\n\n\n\n<p>Use ISO or PXE to boot machines and provide the proper ignition file via kernel arguments:<\/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\">coreos.inst.install_dev=\/dev\/sda\ncoreos.inst.image_url=<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">FCOS<\/span> <span class=\"hljs-attr\">Live<\/span> <span class=\"hljs-attr\">ISO<\/span> <span class=\"hljs-attr\">URL<\/span>&gt;<\/span>\ncoreos.inst.ignition_url=http:\/\/<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">http_server<\/span>&gt;<\/span>\/bootstrap.ign\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>Set up:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1x Bootstrap node (use <code>bootstrap.ign<\/code>)<\/li>\n\n\n\n<li>3x Master nodes (use <code>master.ign<\/code>)<\/li>\n\n\n\n<li>N x Worker nodes (use <code>worker.ign<\/code>)<\/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\">\ud83c\udf10 6. Set Up Networking (DNS, DHCP, Load Balancer)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">DNS records (for base domain):<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Record<\/th><th>Type<\/th><th>Target<\/th><\/tr><\/thead><tbody><tr><td><code>api.okd.example.com<\/code><\/td><td>A<\/td><td>LB for port 6443 (API)<\/td><\/tr><tr><td><code>*.apps.okd.example.com<\/code><\/td><td>A<\/td><td>LB for ports 80\/443 (apps)<\/td><\/tr><tr><td><code>api-int.okd.example.com<\/code><\/td><td>A<\/td><td>Internal API<\/td><\/tr><tr><td><code>etcd-0.okd.example.com<\/code><\/td><td>A<\/td><td>etcd master 0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Load Balancer Ports:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API: <code>6443<\/code><\/li>\n\n\n\n<li>Machine Config Server: <code>22623<\/code><\/li>\n\n\n\n<li>Ingress (apps): <code>80<\/code>, <code>443<\/code><\/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\">\ud83d\uded1 7. Wait for Bootstrap Completion<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/openshift-install wait-for bootstrap-complete --dir=okd-cluster --log-level=info\n<\/code><\/span><\/pre>\n\n\n<p>When done:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Shutdown the <strong>bootstrap<\/strong> node<\/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\">\ud83c\udfaf 8. Finish Cluster Installation<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/openshift-install wait-for install-complete --dir=okd-cluster\n<\/code><\/span><\/pre>\n\n\n<p>You\u2019ll get:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Web Console URL: <code>https:\/\/console-openshift-console.apps.okd.example.com<\/code><\/li>\n\n\n\n<li>Admin credentials (stored in <code>auth\/kubeadmin-password<\/code>)<\/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\">\ud83e\uddea 9. Login and Validate<\/h2>\n\n\n\n<p>Login via CLI:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">oc login -u kubeadmin -p <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">password<\/span>&gt;<\/span> https:\/\/api.okd.example.com:6443\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><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>Access Web UI and verify that all nodes are healthy, and cluster is Ready.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\uddf9 Optional: Post-Install Tasks<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Add users<\/td><td>Use HTPasswd or OAuth identity providers<\/td><\/tr><tr><td>Install Operators<\/td><td>From OperatorHub<\/td><\/tr><tr><td>Set up storage<\/td><td>Configure RWX or RWO PVCs<\/td><\/tr><tr><td>Create projects\/namespaces<\/td><td>For apps and workloads<\/td><\/tr><tr><td>Monitor cluster<\/td><td>Use built-in Prometheus + Grafana stack<\/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\">\ud83d\udd04 Alternative: OKD IPI on AWS (Auto Infra)<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">OKD supports IPI (auto-provision) on AWS:<\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/openshift-install create cluster --dir=okd-aws\n<\/code><\/span><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Set platform: <code>aws<\/code><\/li>\n\n\n\n<li>Must configure AWS credentials<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udccc Where to Learn More<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OKD Docs: <a href=\"https:\/\/docs.okd.io\/\">https:\/\/docs.okd.io\/<\/a><\/li>\n\n\n\n<li>GitHub Releases: <a href=\"https:\/\/github.com\/openshift\/okd\/releases\">https:\/\/github.com\/openshift\/okd\/releases<\/a><\/li>\n\n\n\n<li>FCOS: <a href=\"https:\/\/docs.fedoraproject.org\/en-US\/fedora-coreos\/\">https:\/\/docs.fedoraproject.org\/en-US\/fedora-coreos\/<\/a><\/li>\n\n\n\n<li>Community Support: <a href=\"https:\/\/discuss.okd.io\/\">https:\/\/discuss.okd.io\/<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n","protected":false},"excerpt":{"rendered":"<p>Here is the latest, step-by-step complete guide to install and configure OKD \u2014 the open-source version of OpenShift \u2014 along with an introduction to what OKD is&#8230;. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5153],"tags":[],"class_list":["post-49111","post","type-post","status-publish","format-standard","hentry","category-openshift"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49111","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=49111"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49111\/revisions"}],"predecessor-version":[{"id":58954,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49111\/revisions\/58954"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}