Spis treść
- Przygotowanie maszyny wirtualnej Bastion
- Kroki po instalacji
- Instalacja środowiska graficznego Xfce
- Pobranie instalatora i klienta OpenShift
- Przygotowanie klucza SSH
- Pobranie pullsecret.txt z RedHat
- Przygotowanie manifestu Kubernetes dla klastra OKD
- Przygotowanie konfiguracji ignitions
- Udostępnienie konfiguracji do instalacji klastra przez serwer www na maszynie proxy
Przygotowanie maszyny wirtualnej Bastion
Maszyna bastion posłuży nam do następujących celów:
- przygotowania plików instalacyjnych do postawienia klastra i wrzucenia ich na maszynę proxy.okdlab.local
- zarządzania klastrem po jego instalacji
- tworzenia projektów OpenShift i zarządzanie nimi
Obraz systemu Fedora Server 43 jest do pobrania z tego linku https://fedoraproject.org/server/download.
Po przegraniu na isostore Proxmoxa możemy rozpocząć instalację systemu.

Tworzymy nową maszynę wirtualną o id 4030 i nazwie bastion z podanymi parametrami:
- Machine : q35, Qemu Agent (włączone)
- 128 GB HDD, SCSI VirtIO Single, Cache: Write Back
- 4 vCPU – 1 x Sockets , Type: Host
- 4 GB RAM , Balloning Device (włączone)
- Bridge: vmbr4, Model: VirtIO
\

Podajemy nazwę hosta: bastion.okdlab.local
- ip 192.168.40.30 / 24, brama: 192.168.40.1
- dns: 192.168.40.10, 192.168.8.1
- sufix domeny: okdlab.local

Upewniamy się co do:
- ustawień sieci
- ustawień kont root+bastuser
- ustawień lokalizacji i czasu
- wybranego oprogramowania
Kroki po instalacji
logujemy się na maszynie bastion jako bastuser i przeprowadzamy wszelkie administracyjne operacje przez sudo.
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Aktualizacja_systemu_i_instalacja_podstawowych_narzedzi
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Weryfikacja_dzialania_sieci_i_dns
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Ustawienie_swap
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Konfiguracja_fastfetch
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Weryfikacja_bledow_przy_starcie_serwera_dmesg
- https://itadmin.vblog.ovh/klaster-okd-4-19-openshift-proxmox-9-haproxy/#Sprawdzenie_ustawien_strefy_czasowej_i_synchronizacji_czasu
Instalacja środowiska graficznego Xfce
W dalszych etapach konfiguracji klastra konieczne będzie skorzystanie z przeglądarki www uruchomionej na maszynie bastion z bezpośrednim dostępem do klastra. Więcej informacji o samym Xfce https://fedoraproject.org/wiki/Xfce
sudo dnf install @xfce-desktop-environment # automatyczne uruchomienie środowiska graficznego sudo systemctl set-default graphical.target # włączenie dostępu zdalnego przez protokół rdp np. ze stacji Windows sudo dnf install -y xrdp tigervnc-server sudo systemctl enable xrdp --now # zezwolenie na połączenia na porcie 3389 sudo firewall-cmd --permanent --add-port=3389/tcp sudo firewall-cmd --reload # przygotowanie automatycznego uruchamiania sesji Xfce dla aktualnego użytkownika vim ~/startwm.sh #!/bin/sh dbus-launch --exit-with-session /usr/bin/startxfce4 # nadanie uprawnień sudo chmod 755 ~/startwm.sh sudo reboot
W razie problemów z połączeniem zajrzeć do logów
sudo tail -f /var/log/xrdp.log sudo tail -f /var/log/xrdp-sesman.log
Jeśli połączenie przez protokół rdp działa poprawnie to instalujemy przeglądarkę chromium.
Więcej informacji o instalacji chrome w systemie Fedora https://docs.fedoraproject.org/en-US/quick-docs/installing-chromium-or-google-chrome-browsers/
sudo dnf install chromium

Pobranie instalatora i klienta OpenShift
Aktualne wersje instalatora oraz klienta OpenShift znajdują się tutaj https://github.com/okd-project/okd/releases/
cd /home/bastuser/Downloads # pobranie wersji 4.19 wget https://github.com/okd-project/okd/releases/download/4.19.0-okd-scos.9/openshift-install-linux-4.19.0-okd-scos.9.tar.gz wget https://github.com/okd-project/okd/releases/download/4.19.0-okd-scos.9/openshift-client-linux-4.19.0-okd-scos.9.tar.gz # rozpakowanie archiwum tar -zxvf openshift-client-linux-4.19.0-okd-scos.9.tar.gz tar -zxvf openshift-install-linux-4.19.0-okd-scos.9.tar.gz # skopiowanie binarek do właściwego katalogu sudo mv kubectl oc openshift-install /usr/local/bin/ # sprawdzenie wersji bastuser@bastion:~/Downloads$ oc version Client Version: 4.19.0-okd-scos.9 Kustomize Version: v5.5.0 bastuser@bastion:~/Downloads$ openshift-install version openshift-install 4.19.0-okd-scos.9 built from commit 249d7428c51fe85cabdab6394c4aed86fc24d398 release image quay.io/okd/scos-release@sha256:20214869bfa5d34e673939c1a3c2a061e8d4040b75e6a75110a07e21eb3f9cc6 release architecture multi default architecture amd64
Przygotowanie klucza SSH
ssh-keygen

W definicji manifestu Klastra install-config.yaml będziemy używali klucza publicznego z pliku .ssh/id_ed25519.pub
Pobranie pullsecret.txt z RedHat
Logujemy się na portalu https://console.redhat.com/openshift/create/local i pobieramy pull secret.

Przygotowanie manifestu Kubernetes dla klastra OKD
# tworzymy katalog dla plików roboczych mkdir -p /home/bastuser/install_dir/ # tworzymy konfigurację dla manifestu Kubernetes nano /home/bastuser/install_dir/install-config.yaml
W pole sshKey należy wkleić zawartość /home/bastuser/.ssh/id_ed25519.pub
W pole pullSecret należy wkleić dokładnie całą zawartość pullsecret
apiVersion: v1
baseDomain: okdlab.local
metadata:
name: testcluster
platform:
none: {}
pullSecret: '{"auths":{"cloud.openshift.com":{"auth":"b3BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdVTlVEOQ==","email":"[email protected]"},"quay.io":{"auth":"b3BxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdVTlVEOQ==","email":"[email protected]"},"registry.connect.redhat.com":{"auth":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx==","email":"[email protected]"},"registry.redhat.io":{"auth":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==","email":"[email protected]"}}}'
sshKey: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDGy5Fc6Dl8m3cezP5nNOq2jHPTyNJFJdeY+AQ7awOqP [email protected]'
compute:
- hyperthreading: Enabled
name: worker
replicas: 0
controlPlane:
hyperthreading: Enabled
name: master
replicas: 3
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
networkType: OVNKubernetes
serviceNetwork:
- 172.30.0.0/16
fips: falseWykonujemy kopię powyższego pliku, gdyby była potrzeba powtórzenia tworzenia manifestu.
cp /home/bastuser/install_dir/install-config.yaml /home/bastuser/install_dir/install-config.yaml.bak
Tworzymy manifest Kubernetes
cd /home/bastuser openshift-install create manifests --dir=install_dir/

Przygotowanie konfiguracji ignitions
Należy wyłączyć scheduling dla podów na workerach czyli maszynach wirtualnych control-plane-x
cd /home/bastuser sed -i 's/mastersSchedulable: true/mastersSchedulable: False/' install_dir/manifests/cluster-scheduler-02-config.yml
Teraz można przygotować konfigurację ignitions
cd /home/bastuser openshift-install create ignition-configs --dir=install_dir/

Katalog install_dir powinien wyglądać mniejwięcej tak.

OpenShift, ignition-configs odnoszą się do plików konfiguracyjnych Ignition używanych podczas wdrażania i inicjalizacji klastrów OpenShift, szczególnie w OpenShift Container Platform 4.x. Ignition to narzędzie provisioningowe używane przez CoreOS (obecnie Fedora CoreOS i RHEL CoreOS), które są systemami operacyjnymi zaprojektowanymi specjalnie dla środowisk kontenerowych.
Te pliki konfiguracyjne Ignition odgrywają kluczową rolę w automatyzacji konfiguracji i konfiguracji węzłów klastra podczas procesu instalacji.
Kluczowe punkty dotyczące Ignition-Configs
Cel:
Ignition-configs definiują sposób konfiguracji węzłów w klastrze OpenShift (np. bootstrap, płaszczyzna sterowania i węzły obliczeniowe) podczas uruchamiania.
Określają działania, takie jak konfiguracja pamięci masowej, konfiguracja sieci, zapisywanie plików i stosowanie konfiguracji systemd.
Generowane przez instalator:
Podczas procesu instalacji OpenShift narzędzie openshift-install generuje pliki konfiguracyjne Ignition na podstawie określonych ustawień klastra.
Trzy kluczowe pliki Ignition:
bootstrap.ign:
Służy do konfigurowania węzła bootstrap, który odgrywa kluczową rolę podczas początkowej konfiguracji klastra (np. bootstrapping płaszczyzny sterowania).
master.ign:
Służy do konfigurowania węzłów płaszczyzny sterowania (masterów), które zarządzają podstawowymi komponentami klastra i API.
worker.ign:
Służy do konfigurowania węzłów roboczych, które uruchamiają obciążenia aplikacji (pody).
Udostępnienie konfiguracji do instalacji klastra przez serwer www na maszynie proxy
Logujemy się z maszyny bastion na maszynę proxy i zakładamy katalog okd4 oraz kopiujemy pliki z katalogu install_dir
bastuser@bastion: ssh [email protected] "mkdir -p /var/www/html/okd4" scp -r /home/bastuser/install_dir/* [email protected]:/var/www/html/okd4/ ssh [email protected] "chown -R apache: /var/www/html/ && chmod -R 755 /var/www/html/" # test dostepnosci plikow przez serwer www bastuser@bastion:~/install_dir$ curl -s http://192.168.40.15:8080/okd4/metadata.json | jq '.' { "clusterName": "testcluster", "clusterID": "d9799c84-bf73-4277-a359-0e72971ada93", "infraID": "testcluster-h8zp5", "featureSet": "", "customFeatureSet": null }
Pobranie obrazu systemu CentosOS Stream 9 właściwego dla OKD 4.19 z https://cloud.centos.org/centos/scos/9/prod/streams/9.0.20250510-0/x86_64/ na maszynę proxy potrzebnego podczas instalacji maszyn klastra OKD.
ssh [email protected] "mkdir -p /var/www/html/okd4 && cd /var/www/html/okd4 && wget -O scos.raw.gz 'https://cloud.centos.org/centos/scos/9/prod/streams/9.0.20250510-0/x86_64/scos-9.0.20250510-0-metal.x86_64.raw.gz' && chown -R apache: /var/www/html/ && find /var/www/html -type d -exec chmod 755 {} \; && find /var/www/html -type f -exec chmod 644 {} \;"
Maszyna proxy jest teraz gotowa do serwowania plików instalacyjnych przez http potrzebnych do zbudowania klastra.
| LP | Nazwa DNS | Adres ip | vCPU | vRAM | vHDD | System Operacyjny | Funkcja |
|---|---|---|---|---|---|---|---|
| 1 | dns1.okdlab.local | 192.168.40.10 | 2 | 2 GB | 16 GB | Fedora Server 43 | DNS dla klastra |
| 2 | proxy.okdlab.local | 192.168.40.15 | 2 | 2 GB | 16 GB | Fedora Server 43 | HAProxy / Load balancer / instalacja |
| 3 | storage.okdlab.local | 192.168.40.20 | 2 | 2 GB | 16/64/128 GB | Fedora Server 43 | Storage NFS dla klastra, registry OpenShift |
| 4 | database-1.okdlab.local | 192.168.40.25 | 2 | 4 GB | 32 GB | Fedora Server 43 | Serwer baz danych PostgreSQL |
| 5 | database-2.okdlab.local | 192.168.40.26 | 2 | 4 GB | 32 GB | Fedora Server 43 | Serwer baz danych MariaDB |
| 6 | bastion.okdlab.local | 192.168.40.30 | 4 | 4 GB | 128 GB | Fedora Server 43 | Instalacja i zarządzanie klastrem OKD |
| 7 | gitea.okdlab.local | 192.168.40.35 | 4 | 8 GB | 256 GB | Fedora Server 43 | Gitea |
| 8 | jenkins.okdlab.local | 192.168.40.37 | 8 | 16 GB | 256 GB | Fedora Server 43 | Jenkins |
| 9 | bootstrap.testcluster.okdlab.local | 192.168.40.50 | 4 | 16 GB | 128 GB | CentosOS Stream 9 | Bootstrap node |
| 10 | control-plane-1.testcluster.okdlab.local | 192.168.40.51 | 4 | 16 GB | 128 GB | CentosOS Stream 9 | Master node |
| 11 | control-plane-2.testcluster.okdlab.local | 192.168.40.52 | 4 | 16 GB | 128 GB | CentosOS Stream 9 | Master node |
| 12 | control-plane-3.testcluster.okdlab.local | 192.168.40.53 | 4 | 16 GB | 128 GB | CentosOS Stream 9 | Master node |
| 13 | compute-1.testcluster.okdlab.local | 192.168.40.61 | 4 | 16 GB | 256 GB | CentosOS Stream 9 | Worker node |
| 14 | compute-2.testcluster.okdlab.local | 192.168.40.62 | 4 | 16 GB | 256 GB | CentosOS Stream 9 | Worker node |
| 15 | compute-3.testcluster.okdlab.local | 192.168.40.63 | 4 | 16 GB | 256 GB | CentosOS Stream 9 | Worker node |



