{"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\" target=\"_blank\" rel=\"noopener\">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\" target=\"_blank\" rel=\"noopener\">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\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.okd.io\/<\/a><\/li>\n\n\n\n<li>GitHub Releases: <a href=\"https:\/\/github.com\/openshift\/okd\/releases\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/openshift\/okd\/releases<\/a><\/li>\n\n\n\n<li>FCOS: <a href=\"https:\/\/docs.fedoraproject.org\/en-US\/fedora-coreos\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.fedoraproject.org\/en-US\/fedora-coreos\/<\/a><\/li>\n\n\n\n<li>Community Support: <a href=\"https:\/\/discuss.okd.io\/\" target=\"_blank\" rel=\"noopener\">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. \ud83e\udde9 What is OKD? Feature Description Name OKD (Origin Community Distribution of Kubernetes) Relation to OpenShift Upstream open-source version of Red Hat OpenShift Core Components Kubernetes + CRI-O&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_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}]}}