Halo Techies, seperti yang Anda ketahui Openshift menyediakan platform container dan dapat diinstal baik di onprem atau di cloud publik menggunakan metode yang berbeda seperti IPI (Installer Provisioned Installer), UPI (User Provisioned Infrastructure), dan Assisted Bare Metal installer.
Dalam postingan ini, kami akan mendemonstrasikan cara menginstal Openshift 4.9 pada node bare metal dengan pendekatan UPI.
Untuk tujuan demonstrasi, saya menggunakan mesin virtual KVM. Berikut adalah detail penyiapan lab saya,
Total Mesin Virtual:7
Node Bastion:
- OS – Rocky Linux 8 / CentOS 8,
- RAM- 4GB, vPCU-4,
- Disk- 120 GB
- Jaringan:Manajemen N/w – (169.144.104.228), ocp internal n/w – (192.168.110.115)
Node Bootstrap:
- OS :OS Inti
- RAM :8GB
- vCPU:4
- Disk:40 GB
- Jaringan:Jaringan Internal OCP (192.168.110.116)
Kontrol Pesawat 1 Node:
- OS :OS Inti
- RAM :10GB
- vCPU:6
- Disk:60 GB
- Jaringan:Jaringan Internal OCP (192.168.110.117)
Kontrol Pesawat 2 Node:
- OS :OS Inti
- RAM :10GB
- vCPU:6
- Disk:60 GB
- Jaringan:Jaringan Internal OCP (192.168.110.118)
Kontrol Pesawat 3 Node:
- OS :OS Inti
- RAM :10GB
- vCPU:6
- Disk:60 GB
- Jaringan:Jaringan Internal OCP (192.168.110.119)
Simpul Pekerja 1:
- OS :OS Inti
- RAM :12GB
- vCPU:8
- Disk:60 GB
- Jaringan:Jaringan Internal OCP (192.168.110.120)
Simpul Pekerja 2:
- OS :OS Inti
- RAM :12GB
- vCPU:8
- Disk:60 GB
- Jaringan:Jaringan Internal OCP (192.168.110.121)
Catatan: Di KVM hypervisor, kami telah membuat jaringan khusus host untuk ocp-internal.
Gunakan file dan perintah berikut untuk membuat jaringan khusus host di KVM,
$ cat hostonly.xml <network> <name>hostnet</name> <bridge name='virbr2' stp='on' delay='0'/> <ip address='192.168.110.1' netmask='255.255.255.0'> <range start='192.168.110.10' end='192.168.110.254'/> </ip> </network> $ sudo virsh net-define hostonly.xml $ virsh net-start hostnet $ virsh net-autostart hostnet $ sudo systemctl restart libvirtd
Unduh Perangkat Lunak Openshift dari portal Red Hat
a) Masuk ke Portal Red Hat menggunakan URL berikut:
https://cloud.redhat.com/openshift
b) Klik Buat Cluster
c) Pilih Tab Datacenter –> Klik BareMetal
d) Pilih Jenis Instalasi sebagai ‘UPI’ (Infrastruktur yang disediakan pengguna)
e) Unduh yang berikut
- Pemasang OpenShift
- Tarik Rahasia
- Antarmuka Baris Perintah
- ISO RHCOS
- RHCOS RAW
Sekarang mari kita masuk ke langkah-langkah instalasi OpenShift
Langkah 1) Siapkan Bastion Node
Buat mesin virtual dengan sumber daya yang disebutkan di atas untuk bastion, Anda dapat menginstal OS Rocky Linux 8 atau CentOS 8. Tetapkan alamat ip dari manajemen dan jaringan internal ocp.
Demikian pula buat bootstrap, VM bidang kontrol dan VM Pekerja dan lampirkan jaringan OCP (hostnet) ke antarmuka dan catat alamat mac mereka. Jadi, dalam kasus saya berikut adalah alamat MAC,
- Bootstrap: 52:54:00:bf:60:a3
- ocp-cp1:52:54:00:98:49:40
- ocp-cp2:52:54:00:fe:8a:7c
- ocp-cp3:52:54:00:58:d3:31
- ocp-w1:52:54:00:38:8c:dd
- ocp-w2:52:54:00:b8:84:40
Langkah 2) Konfigurasikan Layanan di bastion node
Transfer software Openshift yang diunduh termasuk node secret to bastion di bawah folder root.
Ekstrak file tar klien openshift menggunakan perintah tar berikut,
# tar xvf openshift-client-linux.tar.gz # mv oc kubectl /usr/local/bin
Konfirmasi pemasangan alat klien openshift dan versinya dengan menjalankan,
# oc version # kubectl version
Output dari perintah di atas akan terlihat seperti di bawah ini:
Ekstrak file tar Pemasang Openshift,
# tar xpvf openshift-install-linux.tar.gz README.md openshift-install #
Konfigurasi Zona dan penyamaran (SNAT)
Di bastion node saya, saya memiliki dua kartu lan, ens3 dan ens8. Pada ens3 , jaringan eksternal atau manajemen dikonfigurasi dan pada ens8, jaringan internal ocp dikonfigurasi. Jadi, tentukan zona berikut dan aktifkan penyamaran di kedua zona.
# nmcli connection modify ens8 connection.zone internal # nmcli connection modify ens3 connection.zone external # firewall-cmd --get-active-zones # firewall-cmd --zone=external --add-masquerade --permanent # firewall-cmd --zone=internal --add-masquerade --permanent # firewall-cmd --reload
Verifikasi pengaturan zona dengan menjalankan perintah firewall-cmd berikut,
# firewall-cmd --list-all --zone=internal # firewall-cmd --list-all --zone=external
Sekarang mari kita konfigurasi DNS, DHCP, Apache, HAProxy, dan Layanan NFS.
Catatan:Untuk tujuan demonstrasi, saya menggunakan 'linuxtechi.lan' sebagai domain dasar.
Konfigurasi Server DNS
Untuk menginstal server DNS dan dependensinya, jalankan perintah dnf berikut
# dnf install bind bind-utils -y
Edit /etc/named.conf dan pastikan file memiliki konten berikut,
# vi /etc/named.conf
Sekarang buat file zona maju dan mundur,
# mkdir /etc/named/zones # vi /etc/named/zones/db.linuxtechi.lan
Simpan dan keluar dari file.
Buat file zona terbalik dengan entri berikut,
# vi /etc/named/zones/db.reverse
Simpan dan tutup file lalu mulai &aktifkan layanan dns
# systemctl start named # systemctl enable named
Izinkan port DNS di firewall, jalankan
# firewall-cmd --add-port=53/udp --zone=internal --permanent # firewall-cmd --reload
Konfigurasi Server DHCP
Instal dan konfigurasikan server dhcp, ikat alamat mac bootstrap, bidang kontrol, dan node pekerja ke IP masing-masing. Jalankan perintah di bawah ini untuk menginstal paket dhcp,
# dnf install -y dhcp-server
Edit file /etc/dhcp/dhcpd.conf dan tambahkan konten berikut, gunakan alamat mac yang telah kami kumpulkan di langkah 1 dan tentukan alamat IP node sesuai dengan entri DNS. Jadi dalam kasus saya, isi file akan terlihat seperti di bawah ini,
[[email protected] ~]# vi /etc/dhcp/dhcpd.conf authoritative; ddns-update-style interim; allow booting; allow bootp; allow unknown-clients; ignore client-updates; default-lease-time 14400; max-lease-time 14400; subnet 192.168.110.0 netmask 255.255.255.0 { option routers 192.168.110.215; # lan option subnet-mask 255.255.255.0; option domain-name "linuxtechi.lan"; option domain-name-servers 192.168.110.215; range 192.168.110.216 192.168.110.245; } host ocp-bootstrap { hardware ethernet 52:54:00:bf:60:a3; fixed-address 192.168.110.216; } host cp1 { hardware ethernet 52:54:00:98:49:40; fixed-address 192.168.110.217; } host cp2 { hardware ethernet 52:54:00:fe:8a:7c; fixed-address 192.168.110.218; } host cp3 { hardware ethernet 52:54:00:58:d3:31; fixed-address 192.168.110.219; } host w1 { hardware ethernet 52:54:00:38:8c:dd; fixed-address 192.168.110.220; } host w2 { hardware ethernet 52:54:00:b8:84:40; fixed-address 192.168.110.221; }
Simpan dan tutup file.
Mulai layanan DHCP dan izinkan layanan dhcp untuk zona internal di firewall, jalankan
[[email protected] ~]# systemctl start dhcpd [[email protected] ~]# systemctl enable dhcpd [[email protected] ~]# firewall-cmd --add-service=dhcp --zone=internal --permanent success [[email protected] ~]# firewall-cmd --reload success [[email protected] ~]#
Konfigurasi Server Web Apache
Kita membutuhkan apache untuk melayani file pengapian dan rhcos, jadi mari kita instal terlebih dahulu menggunakan perintah di bawah ini,
[[email protected] ~]# dnf install -y httpd
Ubah port mendengarkan apache default dari 80 menjadi 8080 dengan menjalankan di bawah perintah sed
[[email protected] ~]# sed -i 's/Listen 80/Listen 0.0.0.0:8080/' /etc/httpd/conf/httpd.conf
Mulai dan aktifkan layanan Apache melalui perintah di bawah ini,
[[email protected] ~]# systemctl start httpd [[email protected] ~]# systemctl enable httpd
Izinkan port layanan Apache (8080) untuk zona internal,
[[email protected] ~]# firewall-cmd --add-port=8080/tcp --zone=internal --permanent [[email protected] ~]# firewall-cmd --reload
Konfigurasi HAProxy
Kami akan menggunakan haproxy untuk memuat keseimbangan layanan Openshift seperti ectd, ingress http &ingress https dan aplikasi seperti konsol openshift.
Jadi, mari kita instal haproxy terlebih dahulu dengan menjalankan perintah dnf berikut,
[[email protected] ~]# dnf install -y haproxy
Edit haproxy confile dan tambahkan konten berikut ke dalamnya
[[email protected] ~]# vi /etc/haproxy/haproxy.cfg # Global settings #--------------------------------------------------------------------- global maxconn 20000 log /dev/log local0 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults log global mode http option httplog option dontlognull option http-server-close option redispatch option forwardfor except 127.0.0.0/8 retries 3 maxconn 20000 timeout http-request 10000ms timeout http-keep-alive 10000ms timeout check 10000ms timeout connect 40000ms timeout client 300000ms timeout server 300000ms timeout queue 50000ms # Enable HAProxy stats listen stats bind :9000 stats uri /stats stats refresh 10000ms # Kube API Server frontend k8s_api_frontend bind :6443 default_backend k8s_api_backend mode tcp backend k8s_api_backend mode tcp balance source server ocp-bootstrap 192.168.110.216:6443 check server cp1 192.168.110.217:6443 check server cp2 192.168.110.218:6443 check server cp3 192.168.110.219:6443 check # OCP Machine Config Server frontend ocp_machine_config_server_frontend mode tcp bind :22623 default_backend ocp_machine_config_server_backend backend ocp_machine_config_server_backend mode tcp balance source server ocp-bootstrap 192.168.110.216:22623 check server cp1 192.168.110.217:22623 check server cp2 192.168.110.218:22623 check server cp3 192.168.110.219:22623 check # OCP Ingress - layer 4 tcp mode for each. Ingress Controller will handle layer 7. frontend ocp_http_ingress_frontend bind :80 default_backend ocp_http_ingress_backend mode tcp backend ocp_http_ingress_backend balance source mode tcp server cp1 192.168.110.217:80 check server cp2 192.168.110.218:80 check server cp3 192.168.110.219:80 check server w1 192.168.110.220:80 check server w2 192.168.110.221:80 check frontend ocp_https_ingress_frontend bind *:443 default_backend ocp_https_ingress_backend mode tcp backend ocp_https_ingress_backend mode tcp balance source server cp1 192.168.110.217:443 check server cp2 192.168.110.218:443 check server cp3 192.168.110.219:443 check server w1 192.168.110.220:443 check server w2 192.168.110.221:443 check
simpan dan keluar dari file.
Mulai dan aktifkan haproxy untuk membuat perubahan di atas menjadi efek
[[email protected] ~]# setsebool -P haproxy_connect_any 1 [[email protected] ~]# systemctl start haproxy [[email protected] ~]# systemctl enable haproxy
Izinkan port HAProxy yang telah kami definisikan di file konfigurasinya di firewall OS. Jalankan di bawah perintah,
[[email protected] ~]# firewall-cmd --add-port=6443/tcp --zone=internal --permanent [[email protected] ~]# firewall-cmd --add-port=6443/tcp --zone=external --permanent [[email protected] ~]# firewall-cmd --add-port=22623/tcp --zone=internal --permanent [[email protected] ~]# firewall-cmd --add-service=http --zone=internal --permanent [[email protected] ~]# firewall-cmd --add-service=http --zone=external --permanent [[email protected] ~]# firewall-cmd --add-service=https --zone=internal --permanent [[email protected] ~]# firewall-cmd --add-service=https --zone=external --permanent [[email protected] ~]# firewall-cmd --add-port=9000/tcp --zone=external --permanent [[email protected] ~]# firewall-cmd --reload [[email protected] ~]#
Konfigurasi Server NFS
Kami membutuhkan server NFS untuk menyediakan penyimpanan persisten ke registri OpenShift.
Jalankan perintah berikut untuk menginstal server nfs,
[[email protected] ~]# dnf install nfs-utils -y
Buat direktori berikut dan atur izin yang diperlukan. Direktori ini akan diekspor sebagai bagian NFS,
[[email protected] ~]# mkdir -p /shares/registry [[email protected] ~]# chown -R nobody:nobody /shares/registry [[email protected] ~]# chmod -R 777 /shares/registry
Sekarang ekspor share dengan menambahkan baris berikut ke file /etc/exports.
[[email protected] ~]# vi /etc/exports /shares/registry 192.168.110.0/24(rw,sync,root_squash,no_subtree_check,no_wdelay)
Simpan dan tutup file dan jalankan 'exportfs -rv' untuk mengekspor direktori
[[email protected] ~]# exportfs -rv exporting 192.168.110.0/24:/shares/registry [[email protected] ~]#
Mulai dan aktifkan layanan NFS
[[email protected] ~]# systemctl start nfs-server rpcbind nfs-mountd [[email protected] ~]# systemctl enable nfs-server rpcbind
Izinkan layanan NFS di firewall OS, jalankan perintah berikut,
[[email protected] ~]# firewall-cmd --zone=internal --add-service mountd --permanent [[email protected] ~]# firewall-cmd --zone=internal --add-service rpc-bind --permanent [[email protected] ~]# firewall-cmd --zone=internal --add-service nfs --permanent [[email protected] ~]# firewall-cmd --reload
Langkah 3) Buat file Manifes dan Pengapian
Untuk menghasilkan file pengapian untuk bootstrap, control plane dan node pekerja, lihat langkah-langkah berikut
a) Buat kunci SSH
[[email protected] ~]# ssh-keygen
Kunci ssh ini akan digunakan untuk mengakses bootstrap, control plane, dan node pekerja dari jarak jauh.
b) Buat file install-config.yaml dengan konten berikut
[[email protected] ~]# vi /ocp-install/install-config.yaml apiVersion: v1 baseDomain: linuxtechi.lan #base domain name compute: - hyperthreading: Enabled name: worker replicas: 0 # Must be set to 0 for User Provisioned Installation as worker nodes will be manually deployed. controlPlane: hyperthreading: Enabled name: master replicas: 3 metadata: name: lab # Cluster name networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: none: {} fips: false pullSecret: '{"auths": ...}' # Copy the pullsecret here sshKey: "ssh-ed25519 AAAA..." # Copy ssh public key here
Pada Baris 23 dan 24 salin isi pull secret dan kunci publik yang kita buat di atas.
Setelah melakukan perubahan file akan terlihat seperti di bawah ini:
c) Buat file manifes
Jalankan perintah openshift-install berikut,
[[email protected] ~]# ~/openshift-install create manifests --dir ~/ocp-install
Pesan peringatan di atas mengatakan bahwa node master dapat dijadwalkan, itu berarti kita dapat memiliki beban kerja pada bidang kontrol (bidang kontrol juga akan berfungsi sebagai node pekerja). Jika Anda ingin menonaktifkan ini, jalankan perintah sed berikut,
# sed -i 's/mastersSchedulable: true/mastersSchedulable: false/' ~/ocp-install/manifests/cluster-scheduler-02-config.yml
Catatan:Dalam kasus saya, saya tidak menonaktifkannya.
d) Buat file Ignition dan auth
Jalankan di bawah perintah openshift-install,
[[email protected] ~]# ~/openshift-install create ignition-configs --dir ~/ocp-install/
Keluaran,
e) Sajikan file gambar Manifes, pengapian, dan inti OS melalui server web
Buat direktori /var/www/html/ocp4 dan salin semua file dari ‘/root/ocp-install’ ke ocp4.
[[email protected] ~]# mkdir /var/www/html/ocp4 [[email protected] ~]# cp -R ~/ocp-install/* /var/www/html/ocp4 [[email protected] ~]# mv ~/rhcos-metal.x86_64.raw.gz /var/www/html/ocp4/rhcos
Setel izin yang diperlukan pada direktori ocp4
[[email protected] ~]# chcon -R -t httpd_sys_content_t /var/www/html/ocp4/ [[email protected] ~]# chown -R apache: /var/www/html/ocp4/ [[email protected] ~]# chmod 755 /var/www/html/ocp4/
Verifikasi apakah file-file ini dapat diakses atau tidak melalui perintah curl
[[email protected] ~]# curl 192.168.110.215:8080/ocp4/
Outputnya akan terlihat seperti di bawah ini
Sempurna, sekarang kami siap untuk memulai penerapan.
Langkah 4) Mulai penerapan OpenShift
Boot VM bootstrap dengan file ISO rhcos-live. Kita akan mendapatkan tampilan berikut
Saat boot dengan file ISO, kita akan mendapatkan layar berikut,
Ketik perintah coreos-installer dan tekan enter
$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos --ignition-url http://192.168.110.215:8080/ocp4/bootstrap.ign --insecure-ignition
Setelah instalasi selesai, kita akan mendapatkan layar berikut,
Reboot node bootstrap sehingga boot dengan hard disk kali ini.
$ sudo reboot
Demikian pula, boot semua node bidang tiga kontrol dengan file ISO RHEL Core OS (rhcos). Setelah node kontrol boot, jalankan perintah berikut dan tekan enter
$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos --ignition-url http://192.168.110.215:8080/ocp4/master.ign --insecure-ignition
Reboot control plane dan boot dengan hard disk.
Ulangi prosedur ini untuk bidang kontrol lainnya dan pantau proses bootstrap menggunakan perintah berikut.
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug
Sekarang, boot kedua node pekerja dengan file Core OS ISO dan setelah boot, jalankan perintah berikut pada node
$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos --ignition-url http://192.168.110.215:8080/ocp4/worker.ign --insecure-ignition
Proses bootstrap untuk bidang kontrol dan node pekerja dapat memakan waktu 10 hingga 15 menit tergantung pada infrastruktur Anda. Periksa status node dengan menggunakan perintah berikut
[[email protected] ~]# export KUBECONFIG=~/ocp-install/auth/kubeconfig [[email protected] ~]# oc get nodes NAME STATUS ROLES AGE VERSION cp1.lab.linuxtechi.lan Ready master,worker 69m v1.22.0-rc.0+894a78b cp2.lab.linuxtechi.lan Ready master,worker 66m v1.22.0-rc.0+894a78b cp3.lab.linuxtechi.lan Ready master,worker 68m v1.22.0-rc.0+894a78b [[email protected] ~]#
Sekarang setujui semua CSR yang tertunda untuk node pekerja sehingga mereka dapat bergabung dengan cluster dan menjadi siap. Jalankan perintah oc berikut untuk melihat CSR yang tertunda
[[email protected] ~]# oc get csr
Jalankan perintah oc berikut untuk menyetujui CSR yang tertunda
[[email protected] ~]# oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
Output dari dua perintah di atas akan terlihat seperti di bawah ini:
Setelah beberapa menit, node pekerja akan bergabung dengan cluster dan harus dalam status siap, jalankan di bawah perintah untuk mengonfirmasi hal yang sama.
[[email protected] ~]# oc get nodes
Bagus, di atas mengonfirmasi bahwa kedua node pekerja bergabung dengan cluster dan dalam status siap.
Periksa juga status bootstrap dan pada output kita akan mendapatkan yang berikut,
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug
Di atas mengonfirmasi bahwa proses bootstrap juga telah selesai, dan sebaiknya hentikan dan hapus sumber daya VM bootstrap dan entri bootstrap dari file haproxy.
Ini menyimpulkan artikel; Saya harap Anda menemukannya informatif. Silakan bagikan umpan balik dan komentar Anda.
Baca Juga :Cara Menyiapkan Cluster OpenShift Node Tunggal di RHEL 8