GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer OpenShift 4.9 sur Bare Metal (UPI)

Bonjour les techniciens, comme vous le savez, Openshift fournit une plate-forme de conteneurs et peut être installé sur site ou dans un cloud public à l'aide de différentes méthodes telles que IPI (Installer Provisioned Installer), UPI (User Provisioned Infrastructure) et Assisted Bare Metal Installer.

Dans cet article, nous allons vous montrer comment installer Openshift 4.9 sur des nœuds bare metal avec l'approche UPI.

À des fins de démonstration, j'utilise des machines virtuelles KVM. Voici les détails de la configuration de mon laboratoire,

Nombre total de machines virtuelles :7

Nœud Bastion : 

  • SE – Rocky Linux 8 / CentOS 8,
  • RAM :4 Go, vPCU-4,
  • Disque :120 Go
  • Réseau :Gestion N/W – (169.144.104.228), ocp interne n/w – (192.168.110.115)

Nœud d'amorçage :

  • OS :OS de base
  • RAM :8 Go
  • processeur virtuel :4
  • Disque :40 Go
  • Réseau :réseau interne OCP (192.168.110.116)

Nœud du plan de contrôle 1 :

  • OS :OS de base
  • RAM :10 Go
  • processeur virtuel :6
  • Disque :60 Go
  • Réseau :réseau interne OCP (192.168.110.117)

Nœud du plan de contrôle 2 :

  • OS :OS de base
  • RAM :10 Go
  • processeur virtuel :6
  • Disque :60 Go
  • Réseau :réseau interne OCP (192.168.110.118)

Nœud du plan de contrôle 3 :

  • OS :OS de base
  • RAM :10 Go
  • processeur virtuel :6
  • Disque :60 Go
  • Réseau :réseau interne OCP (192.168.110.119)

Nœud de travail 1 :

  • OS :OS de base
  • RAM :12 Go
  • processeur virtuel :8
  • Disque :60 Go
  • Réseau :réseau interne OCP (192.168.110.120)

Nœud de travail 2 :

  • OS :OS de base
  • RAM :12 Go
  • processeur virtuel :8
  • Disque :60 Go
  • Réseau :réseau interne OCP (192.168.110.121)

Remarque : Dans l'hyperviseur KVM, nous avons créé un réseau hôte uniquement pour ocp-internal.

Utilisez le fichier et les commandes suivants pour créer un réseau hôte uniquement dans 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

Téléchargez le logiciel Openshift à partir du portail Red Hat

a)    Connectez-vous au portail Red Hat à l'aide de l'URL suivante :

https://cloud.redhat.com/openshift

b)    Cliquez sur Créer un cluster

c)     Choisissez l'onglet Centre de données -> Cliquez sur BareMetal

d)    Sélectionnez le type d'installation comme "UPI" (infrastructure fournie par l'utilisateur)

e)    Téléchargez les éléments suivants

  • Installateur OpenShift
  • Tirer le secret
  • Interface de ligne de commande
  • ISO RHCOS
  • RHCOS RAW

Passons maintenant aux étapes d'installation d'OpenShift

Étape 1) Préparer le nœud bastion

Créez une machine virtuelle avec les ressources mentionnées ci-dessus pour le bastion, vous pouvez installer le système d'exploitation Rocky Linux 8 ou CentOS 8. Attribuez l'adresse IP à partir du réseau interne de gestion et ocp.

De même, créez des bootstrap, des machines virtuelles de plan de contrôle et des machines virtuelles de travail et attachez le réseau OCP (réseau hôte) à l'interface et notez leur adresse MAC. Donc, dans mon cas, voici les adresses MAC,

  • Démarrage :  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

Étape 2) Configurer les services sur le nœud bastion

Transférez le logiciel Openshift téléchargé, y compris le secret, vers le nœud bastion sous le dossier racine.

Extrayez le fichier tar du client openshift à l'aide de la commande tar suivante,

# tar xvf openshift-client-linux.tar.gz
# mv oc kubectl /usr/local/bin

Confirmez l'installation de l'outil client openshift et sa version en exécutant,

# oc version
# kubectl version

La sortie de la commande ci-dessus ressemblerait à ceci :

Extraire le fichier tar du programme d'installation d'Openshift,

# tar xpvf openshift-install-linux.tar.gz
README.md
openshift-install
#

Configurer les zones et le masquage (SNAT)

Dans mon nœud bastion, j'ai deux cartes LAN, ens3 et ens8. Sur ens3, le réseau externe ou de gestion est configuré et sur ens8, le réseau interne ocp est configuré. Alors, définissez les zones suivantes et activez le masquage sur les deux zones.

# 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

Vérifiez les paramètres de zone en exécutant les commandes firewall-cmd suivantes,

# firewall-cmd --list-all --zone=internal
# firewall-cmd --list-all --zone=external

Configurons maintenant les services DNS, DHCP, Apache, HAProxy et NFS.

Remarque :à des fins de démonstration, j'utilise "linuxtechi.lan" comme domaine de base.

Configurer le serveur DNS

Pour installer le serveur DNS et ses dépendances, exécutez la commande dnf suivante

# dnf install bind bind-utils -y

Modifiez /etc/named.conf et assurez-vous que le fichier a le contenu suivant,

# vi /etc/named.conf

Créez maintenant un fichier de zone avant et arrière,

# mkdir /etc/named/zones
# vi /etc/named/zones/db.linuxtechi.lan

Enregistrez et quittez le fichier.

Créez un fichier de zone inversée avec les entrées suivantes,

# vi /etc/named/zones/db.reverse

Enregistrez et fermez le fichier, puis démarrez et activez le service DNS

# systemctl start named
# systemctl enable named

Autoriser le port DNS dans le pare-feu, exécutez

# firewall-cmd --add-port=53/udp --zone=internal --permanent
# firewall-cmd --reload

Configurer le serveur DHCP 

Installez et configurez le serveur DHCP, liez l'adresse mac du bootstrap, des plans de contrôle et des nœuds de travail à leurs adresses IP respectives. Exécutez la commande ci-dessous pour installer le package DHCP,

# dnf install -y dhcp-server

Modifiez le fichier /etc/dhcp/dhcpd.conf et ajoutez le contenu suivant, utilisez les adresses mac que nous avons collectées à l'étape 1 et spécifiez l'adresse IP des nœuds en fonction des entrées DNS. Donc, dans mon cas, le contenu du fichier ressemblera à ci-dessous,

[[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;
}

Enregistrez et fermez le fichier.

Démarrez le service DHCP et autorisez le service DHCP pour la zone interne dans le pare-feu, exécutez

[[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] ~]#

Configurer le serveur Web Apache

Nous avons besoin d'Apache pour servir le fichier d'allumage et rhcos, alors installons-le d'abord en utilisant la commande ci-dessous,

[[email protected] ~]# dnf install -y  httpd

Changez le port d'écoute apache par défaut de 80 à 8080 en exécutant sous la commande sed

[[email protected] ~]# sed -i 's/Listen 80/Listen 0.0.0.0:8080/' /etc/httpd/conf/httpd.conf

Démarrez et activez le service apache via la commande ci-dessous,

[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd

Autoriser le port de service Apache (8080) pour la zone interne,

[[email protected] ~]# firewall-cmd --add-port=8080/tcp --zone=internal --permanent
[[email protected] ~]# firewall-cmd --reload

Configurer HAProxy

Nous utiliserons haproxy pour équilibrer la charge des services Openshift comme ectd, ingress http &ingress https et des applications comme la console openshift.

Alors, installons d'abord haproxy en exécutant la commande dnf suivante,

[[email protected] ~]#  dnf install -y haproxy

Modifiez le fichier haproxy et ajoutez-y le contenu suivant

[[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

enregistrez et quittez le fichier.

Démarrez et activez haproxy pour apporter les modifications ci-dessus à l'effet

[[email protected] ~]# setsebool -P haproxy_connect_any 1
[[email protected] ~]# systemctl start haproxy
[[email protected] ~]# systemctl enable haproxy

Autoriser les ports HAProxy que nous avons définis dans son fichier de configuration dans le pare-feu du système d'exploitation. Exécutez sous les commandes,

[[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] ~]#

Configurer le serveur NFS

Nous avons besoin d'un serveur NFS pour fournir le stockage persistant au registre OpenShift.

Exécutez la commande suivante pour installer le serveur nfs,

[[email protected] ~]# dnf install nfs-utils -y

Créez le répertoire suivant et définissez les autorisations requises. Ce répertoire sera exporté en partage NFS,

[[email protected] ~]# mkdir -p /shares/registry
[[email protected] ~]# chown -R nobody:nobody /shares/registry
[[email protected] ~]# chmod -R 777 /shares/registry

Exportez maintenant le partage en ajoutant la ligne suivante au fichier /etc/exports.

[[email protected] ~]# vi /etc/exports
/shares/registry  192.168.110.0/24(rw,sync,root_squash,no_subtree_check,no_wdelay)

Enregistrez et fermez le fichier et exécutez "exportfs -rv" pour exporter le répertoire

[[email protected] ~]# exportfs -rv
exporting 192.168.110.0/24:/shares/registry
[[email protected] ~]#

Démarrer et activer le service NFS

[[email protected] ~]# systemctl start nfs-server rpcbind nfs-mountd
[[email protected] ~]# systemctl enable nfs-server rpcbind

Autoriser le service NFS dans le pare-feu du système d'exploitation, exécutez les commandes suivantes,

[[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

Étape 3) Générer des fichiers manifestes et Ignition

Pour générer des fichiers d'allumage pour le bootstrap, le plan de contrôle et les nœuds de travail, reportez-vous aux étapes suivantes

a)    Générer des clés SSH

[[email protected] ~]# ssh-keygen

Ces clés ssh seront utilisées pour accéder à distance au bootstrap, au plan de contrôle et aux noeuds worker.

b)    Créez le fichier install-config.yaml avec le contenu suivant

[[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

Aux lignes 23 et 24, copiez le contenu de la clé secrète d'extraction et de la clé publique que nous avons générées ci-dessus.

Après avoir apporté les modifications, le fichier ressemblera à ci-dessous :

c)   Générer un fichier manifeste

Exécutez la commande openshift-install suivante,

[[email protected] ~]# ~/openshift-install create manifests --dir ~/ocp-install

Le message d'avertissement ci-dessus indique que les nœuds maîtres sont planifiables, cela signifie que nous pouvons avoir une charge de travail sur les plans de contrôle (les plans de contrôle fonctionneront également comme nœuds de travail). Si vous souhaitez désactiver cela, exécutez la commande sed suivante,

# sed -i 's/mastersSchedulable: true/mastersSchedulable: false/' ~/ocp-install/manifests/cluster-scheduler-02-config.yml

Remarque :Dans mon cas, je ne le désactive pas.

d)    Générer un fichier d'allumage et d'authentification

Exécutez sous la commande openshift-install,

[[email protected] ~]# ~/openshift-install create ignition-configs --dir ~/ocp-install/

Sortie,

e)    Servir les manifestes, l'allumage et le fichier image du système d'exploitation principal via le serveur Web

Créez le répertoire /var/www/html/ocp4 et copiez tous les fichiers de ‘/root/ocp-install’ vers 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

Définissez les autorisations requises sur le répertoire 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/

Vérifiez si ces fichiers sont accessibles ou non via la commande curl

[[email protected] ~]# curl 192.168.110.215:8080/ocp4/

La sortie devrait ressembler à ci-dessous

Parfait, nous sommes maintenant prêts à commencer le déploiement.

Étape 4) Démarrer le déploiement d'OpenShift

Démarrez la VM bootstrap avec le fichier ISO rhcos-live. Nous aurons l'écran suivant

Quand il démarre avec le fichier ISO, nous aurons l'écran suivant,

Tapez la commande coreos-installer et appuyez sur Entrée

$ 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

Une fois l'installation terminée, nous aurons l'écran suivant,

Redémarrez le nœud d'amorçage pour qu'il démarre avec le disque dur cette fois.

$ sudo reboot

De même, démarrez tous les nœuds à trois plans de contrôle avec le fichier ISO RHEL Core OS (rhcos). Une fois les nœuds de contrôle démarrés, exécutez la commande suivante et appuyez sur Entrée

$ 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

Redémarrez le plan de contrôle et démarrez-le avec le disque dur.

Répétez cette procédure pour le reste des plans de contrôle et surveillez le processus d'amorçage à l'aide de la commande suivante.

[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug

Maintenant, démarrez les deux nœuds de travail avec le fichier ISO Core OS et une fois qu'il démarre, exécutez la commande suivante sur les nœuds

$ 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

Le processus d'amorçage pour les plans de contrôle et les nœuds de travail peut prendre 10 à 15 minutes selon votre infrastructure. Vérifiez l'état des nœuds à l'aide des commandes suivantes

[[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] ~]#

Approuvez maintenant tous les CSR en attente pour les nœuds de travail afin qu'ils puissent rejoindre le cluster et être prêts. Exécutez la commande oc suivante pour afficher le CSR en attente

[[email protected] ~]# oc get csr

Exécutez la commande oc suivante pour approuver les CSR en attente

[[email protected] ~]# oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve

La sortie des deux commandes ci-dessus ressemblerait à ceci :

Après quelques minutes, les nœuds de travail doivent rejoindre le cluster et doivent être à l'état prêt, exécutez les commandes ci-dessous pour confirmer la même chose.

[[email protected] ~]# oc get nodes

Parfait, ci-dessus confirme que les deux nœuds de travail rejoignent le cluster et sont à l'état prêt.

Vérifiez également l'état de bootstrap et dans la sortie, nous devrions obtenir ce qui suit,

[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug

Ci-dessus confirme que le processus d'amorçage est également terminé, et nous pouvons arrêter et supprimer les ressources de la VM d'amorçage et les entrées d'amorçage du fichier haproxy.

Ceci conclut l'article; J'espère que vous la trouverez instructive. S'il vous plaît partagez vos commentaires et commentaires.

Lire aussi  :Comment configurer un cluster OpenShift à nœud unique sur RHEL 8


Linux
  1. Comment installer Python sur Linux

  2. Comment installer la surveillance du réseau VnStat sur CentOS 7

  3. Comment installer Wireshark sur Ubuntu 16.04 LTS

  4. Comment installer Ubuntu Server sans connexion réseau ?

  5. Comment migrer une installation Linux bare metal vers une machine virtuelle

Comment installer Wireshark Network Analyzer sur Debian 11

Comment installer l'outil de surveillance du réseau Ntopng sur Ubuntu 20.04

Comment installer OmniOS ce

Comment installer la surveillance du réseau Cacti sur CentOS 8

Comment installer le réseau social Elgg sur Ubuntu 20.04

Comment installer FreeNAS 11.1