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