OKD adalah distribusi komunitas dari Kubernetes yang menjadi upstream untuk Red Hat OpenShift. OKD menggunakan Fedora CoreOS (atau Super CoreOS/SCOS pada versi terbaru) sebagai sistem operasinya, dengan manajemen cluster berbasis Kubernetes, CRI-O, dan Operator Framework.
Spesifikasi
Untuk menjalankan single node OKD, VM minimal menggunakan spesifikasi berikut:
CPU: 4 core
RAM: 16 GB
Disk: 300 GB
Prasyarat
Sebelum mulai instalasi, pastikan sudah memenuhi:
Administration host: disini saya pakai Ubuntu 24.04 dengan Libvirt + KVM terpasang.
Preserved IP dari DHCP server untuk VM OKD (IP harus statis).
DNS record untuk komunikasi dengan API OKD (
api,api-int,*.apps).Akun RedHat untuk mengambil pull secret dari console.redhat.com.
Setup DNS & DHCP Server
Pada tahapan ini kita akan membuat network pada dengan libvirt untuk mapping IP DHCP Static* dan DNS Record OKD, untuk dnsmasq kita menggunakan default dnsmasq yang ada pada libvirt.
*IP Dynamic yang sudah dimapping segment-nya.
Buat Network OKD
# Paste pada terminal
cat <<EOF>net-okd.xml
<network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
<name>net-okd</name>
<forward mode='route'/>
<bridge name='virnet1' stp='on' delay='0'/>
<mtu size='9000'/>
<domain name='lab.local' localOnly='yes'/>
<dns enable='yes'/>
<ip family='ipv4' address='192.168.33.1' prefix='24'>
<dhcp>
<range start='192.168.33.2' end='192.168.33.254'/>
<host mac='52:54:00:1a:9b:01' name='sno-okd' ip='192.168.33.10'/>
</dhcp>
</ip>
<dnsmasq:options>
<dnsmasq:option value='host-record=api.sno-okd.lab.local,192.168.33.10'/>
<dnsmasq:option value='host-record=api-int.sno-okd.lab.local,192.168.33.10'/>
<dnsmasq:option value='host-record=bootstrap.sno-okd.lab.local,192.168.33.10'/>
<dnsmasq:option value='address=/.apps.sno-okd.lab.local/192.168.33.10'/>
<dnsmasq:option value='host-record=sno-okd.lab.local,192.168.33.10'/>
<dnsmasq:option value='dhcp-option=6,192.168.33.1,1.1.1.1,8.8.8.8'/>
</dnsmasq:options>
</network>
EOFDefine Network
Setelah membuat file xml yang berisi konfigurasi network untuk libvirt, selanjutnya kita harus define network tersebut agar libvirt dapat mengenal network tersebut lalu start networknya
# Define network kedalam sistem libvirt
virsh net-define net-okd.xml
# Start Network dan set Autostart
virsh net-start net-okd
virsh net-autostart net-okdVerifikasi Network
Selanjutnya verifikasi network yang sebelumnya telah dibuat dan coba untuk test dns yang dipasang
nslookup api.sno-okd.lab.local 192.168.33.1
nslookup 192.168.33.10 192.168.33.1
Unduh Package yang Dibutuhkan
Pada tahap ini kita akan mengunduh package yang dibutuhkan untuk instalasi:
openshift-client (oc, kubectl) → digunakan untuk mengelola cluster OKD.
openshift-install → installer OKD.
coreos-installer → tool untuk membuat ISO FCOS/SCOS dengan ignition data.
# Pilih versi OKD untuk dipasang. Bisa disesuaikan dengan selera dan tingkat kestabilan
export OKD_VERSION=4.20.0-okd-scos.0
curl -L https://github.com/okd-project/okd/releases/download/$OKD_VERSION/openshift-client-linux-$OKD_VERSION.tar.gz -o oc.tar.gz
curl -L https://github.com/okd-project/okd/releases/download/$OKD_VERSION/openshift-install-linux-$OKD_VERSION.tar.gz -o openshift-install-linux.tar.gz
curl -L https://mirror.openshift.com/pub/openshift-v4/clients/coreos-installer/latest/coreos-installer -o coreos-installer
tar zxf oc.tar.gz
tar zxvf openshift-install-linux.tar.gz
chmod +x oc openshift-install coreos-installerDownload Fedora CoreOS/Super CoreOS live ISO:
export ARCH=x86_64
export ISO_URL=$(./openshift-install coreos print-stream-json| jq -r ".architectures[\"$ARCH\"].artifacts.metal.formats.iso.disk.location")
curl -L $ISO_URL -o fcos-live.isoMembuat Live ISO Installer
Untuk membuat OKD Single Node pada libvirt. Kita harus membuat Live ISO Installer, file ISO ini yang akan kita gunakan untuk deploy cluster OKD tersebut. Tapi sebelum kita membuat Live ISO, kita harus menambah konfigurasi Ignition kedalam master ISO tersebut.
Konfigurasi Ignition
Ignition adalah tool yang dibuat oleh Fedora Project untuk memberitahu jika ISO tersebut berisi OKD didalamnya, jadi Fedora CoreOS yang akan dipasang akan dituning untuk kestabilan dan manipulasi host untuk OKD. Baik dari manipulasi disk, konfigurasi, dll. Untuk detailnya bisa dilihat pada website OKD.
cat <<EOF>install-config.yaml
apiVersion: v1
baseDomain: lab.local #domain okd
compute:
- name: worker
replicas: 0
controlPlane:
name: master
replicas: 1
metadata:
name: sno-okd # hostname vm
networking:
clusterNetwork:
- cidr: 10.128.0.0/14 # network default for pod
hostPrefix: 23
machineNetwork:
- cidr: 192.168.33.0/24 # network from ip address vm
networkType: OVNKubernetes
serviceNetwork:
- 172.30.0.0/16 # network service pod
platform:
none: {}
bootstrapInPlace:
installationDisk: /dev/vda
pullSecret: '<pull_secret>'
sshKey: |
<ssh_key> # pubkey host
EOF
mkdir sno-okd
cp install-config.yaml sno-okd/
# Generate Konfigurasi OKD
./openshift-install --dir=sno-okd create single-node-ignition-configBuild Live ISO
Setelah generate konfigurasi OKD, kita akan menggabungkan CoreOS dari Fedora dengan Ignition yang sebelumnya sudah dibuat.
./coreos-installer iso ignition embed -fi sno-okd/bootstrap-in-place-for-live-iso.ign -o fcos-sno-okd-installer.iso fcos-live.iso
mv fcos-sno-okd-installer.iso /var/lib/libvirt/images/Pull secret didapatkan dari link berikut: https://console.redhat.com/openshift/install/pull-secret
Membuat VM OKD
Sebelum buat vmnya, kita harus siapkan disk yang sudah diconvert menjadi QCOW2, tujuannya agar mengalokasikan disk untuk vm OKD dan nama disk tidak random.
Format Disk ke QCOW2
Untuk command atau perintah untuk convert Disk menjadi format QCOW2, bisa ikuti perintah berikut
qemu-img create -f qcow2 -o preallocation=off \
/var/lib/libvirt/images/sno-okd-sda.qcow2 300GBuat VM OKD
Setelah disk kita buat, selanjutnya mari kita buat vm untuk OKD single node dengan ISO yang sebelumnya sudah dibuat. Untuk spesifikasi memory dan cpu bisa disesuaikan dengan spesifikasi yang diinginkan.
virt-install \
--name sno-okd \
--memory 16384 \ # satuan bit 16GB=16384bit
--vcpus 4 \
--disk path=/var/lib/libvirt/images/sno-okd-sda.qcow2,device=disk,bus=virtio \ #lokasi disk
--network network=net-okd,mac=52:54:00:1a:9b:01 \
--boot cdrom,hd,menu=on \
--cdrom /var/lib/libvirt/images/fcos-sno-okd-installer.iso \ #lokasi ISO
--os-variant fedora-coreos-stable \
--graphics vnc \
--noautoconsole \
--boot loader=/usr/share/OVMF/OVMF_CODE_4M.fd,loader.readonly=yes,loader.type=pflash,loader.secure=no \
--import
Proses Instalasi
Setelah VM berjalan, cek apakah VM sudah aktif dan bisa diakses:
ping -c4 192.168.33.10 # IP yang sebelumnya disetting pada konfigurasi OKD
# Memasukkan gateway network OKD kedalam resolv.conf
echo 'nameserver 192.168.33.1' | tee -a /etc/resolv.conf
ping -c4 sno-okd.lab.local
Pantau proses bootstrap dan instalasi:
./openshift-install --dir=sno-okd wait-for bootstrap-complete
./openshift-install --dir=sno-okd wait-for install-completePada terminal lain, pantau log VM:
ssh -l core sno-okd.lab.local
sudo journalctl -f
Pasca Instalasi
1. Akses CLI OKD
Setelah cluster sudah ready, gunakan oc dan kubectl untuk verifikasi.
# check all operators and pod
export KUBECONFIG=$(pwd)/sno-okd/auth/kubeconfig
install oc /usr/local/bin
install kubectl /usr/local/bin
oc get nodes -o wide
oc get clusteroperators
2. Akses Dashboard OKD
Import ingress-ca ke browser agar bisa mengakses web console dengan HTTPS valid.
oc get secret router-ca -n openshift-ingress-operator \
-o jsonpath='{.data.tls\.crt}' | base64 -d > ingress-ca.crtCara import certificate di Firefox:
Buka
about:preferences#privacyScroll ke bawah → Certificates → klik
View CertificatesTab Authorities → klik
ImportTambahkan file
ingress-ca.crtCentang:
- Trust this CA to identify websites
- Trust this CA to identify email usersKlik OK
Buka url https://console-openshift-console.apps.sno-okd.lab.local/
Credential:
- user: kubeadmin
- password: (ada di file sno-okd/auth/kubeadmin-password)


catatan: user kubeadmin adalah temporary administrative user, jadi harus segera buat baru.
3. Buat User Administrative Baru
Buat user baru dengan HTPasswd untuk akses administratif.
apt install apache2-utils -y
touch user-creds
htpasswd -Bb user-creds devops (password)
oc create secret generic htpasswd-secret \
--from-file=htpasswd=user-creds \
-n openshift-config
oc edit oauth cluster
---
spec:
identityProviders:
- name: htpasswd_provider
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpasswd-secret
oc adm policy add-cluster-role-to-user cluster-admin devops
oc get clusterrolebindings/cluster-admin-0
oc describe clusterrolebindings/cluster-admin-0
export API_CERT=$(oc get secret loadbalancer-serving-signer \
-n openshift-kube-apiserver-operator \
-o jsonpath='{.data.tls\.crt}' | base64 -d)
export INGRESS_CERT=$(oc get secret router-ca \
-n openshift-ingress-operator \
-o jsonpath='{.data.tls\.crt}' | base64 -d)
mkdir ~/.kube
cat <<EOF > $(pwd)/.kube/ca-bundle.crt
$API_CERT
$INGRESS_CERT
EOF
unset KUBECONFIG
oc login --server=api.sno-okd.lab.local:6443 \
--certificate-authority=$(pwd)/.kube/ca-bundle.crt \
-u devops -p (password)
oc whoami
kubectl config get-contextsSetelah itu login kembali dengan user baru di dashboard.
Referensi
https://docs.okd.io/latest/installing/installing_sno/install-sno-installing-sno.html