GNU/Linux >> Belajar Linux >  >> Linux

Cara Install OpenShift 4.9 di Bare Metal (UPI)

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


Linux
  1. Cara menginstal Python di Linux

  2. Cara Menginstal Pemantauan Jaringan VnStat di CentOS 7

  3. Cara Menginstal Wireshark di Ubuntu 16.04 LTS

  1. Cara menginstal Linux dalam 3 langkah

  2. Bagaimana Cara Menginstal Server Ubuntu Tanpa Koneksi Jaringan?

  3. Cara memigrasi instalasi Linux bare metal ke mesin virtual

  1. Cara Menginstal Kubernetes di Server Bare Metal

  2. Cara Menyebarkan Server Cloud Bare Metal

  3. Cara menginstal iperf di RHEL 8