OpenShift 4.5.1: Installation sur vSphere IPI

Si vous avez déjà utilisé OpenShift, vous savez à quel point il est laborieux d'installer un cluster OpenShift dans vSphere à partir de zéro. Principalement parce que les infrastructures environnantes doivent être préparées. Avec la sortie d'OpenShift 4.5.1, cette tâche est devenue beaucoup plus facile.







Avant la sortie d'OpenShift 4.5.1, il était possible d'installer un cluster sur la plate-forme vSphere uniquement dans la version UPI (User Provider Infrastructure). L'utilisateur devait préparer indépendamment l'infrastructure nécessaire à l'installation, à savoir préparer:



  • des équilibreurs de réseau externes (l'un pour l'équilibrage du trafic du cluster, l'autre pour l'équilibrage du trafic des applications);
  • un certain nombre d'enregistrements DNS, y compris l'enregistrement SRV;
  • Serveur DHCP pour délivrer des adresses aux nœuds du cluster (enfin, ou décider d'une méthode pour définir l'adressage statique);
  • Serveur HTTP pour le transfert de la configuration d'ingnition lors de l'installation de RHCOS.


Dans le même temps, toute erreur (et comme vous le savez - "errare humanum est") dans la préparation de l'environnement conduit à un échec lors de l'installation du cluster. Pour faciliter en quelque sorte cette tâche, des projets tiers ont commencé à apparaître pour accélérer la préparation de l'environnement et réduire l'influence du «facteur humain» dans ce processus. L'un des plus connus est le projet OCP Helper Node , qui prépare toute la configuration nécessaire à l'installation d'OpenShift sur un serveur via Ansible. Il y avait également des options pour installer un cluster avec la préparation de l'infrastructure via Terraform.



Mais ces projets n'ont pas résolu tous les problèmes liés au déploiement d'un cluster dans vSphere. Il est souvent nécessaire de fournir un cluster OpenShift en tant que service («kubernetes as service»), et dans ce cas, l'automatisation de l'installation d'OpenShift n'a pas été une tâche facile - une intervention manuelle était nécessaire: respect de l'ordre d'installation du système d'exploitation sur les nœuds du cluster, confirmation des certificats dans le cluster, attente de l'installation des opérateurs de cluster, et etc. Si nécessaire, vous pouvez automatiser ce processus, mais cela prend également du temps et des ressources pour créer et maintenir de telles solutions.



Depuis la version 4.5.1. publié le 13 juillet 2020, OpenShift prend en charge l'installation dans vSphere à l'aide d'IPI (Installer Provided Infrastructure). Cela signifie que le programme d'installation peut désormais:



  • préparer indépendamment toutes les ressources nécessaires dans vSphere;
  • créer un cluster OpenShift avec une seule commande;
  • supprimez le cluster OpenShift précédemment créé avec une commande.


De plus, après une telle installation, l'administrateur peut ajouter ou supprimer des nœuds de cluster avec une commande dans OpenShift. Ou activez complètement l'autoscaling, ce qui donne au cluster la possibilité de répondre indépendamment aux changements de charge.



Mais la nouvelle méthode d'installation a une limitation: tous les nœuds de cluster, ainsi que le serveur à partir duquel l'installation est effectuée, doivent avoir un accès direct à Internet. Si l'administrateur se trouve derrière un serveur proxy d'entreprise ou si Internet n'est pas disponible pour le cluster, le cluster devra être installé comme auparavant, dans la version UPI.



Préparer l'infrastructure environnante



Lors de l'installation d'OpenShift, vous ne pouvez pas vous passer de préparer l'infrastructure, mais la liste des tâches est devenue plus modeste:



  1. Un serveur DHCP est nécessaire (pour émettre des adresses aux nœuds OpenShift);
  2. Deux enregistrements DNS sont requis (VIP pour l'API du cluster et VIP pour le trafic Ingress);
  3. Vous aurez besoin d'un compte dans vSphere avec un ensemble de privilèges décrits dans la documentation pour installer OpenShift .


Dans notre cas, pour installer OpenShift et exécuter tous les services requis, nous avons utilisé le serveur shift-is01 exécutant CentOS 7.



Configuration DHCPD



Il n'y a rien de spécifique ici, nous sélectionnons le pool d'adresses (192.168.111.100 -192.168.111.150) pour les serveurs OpenShift:



[ocp@shift-is01 ~]$ sudo cat /etc/dhcp/dhcpd.conf 
authoritative;
ddns-update-style interim;
default-lease-time 14400;
max-lease-time 14400;

        option routers                  192.168.111.1;
        option broadcast-address        192.168.111.255;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.111.10;
        option domain-name              «ocp45.demo.local»;
        subnet 192.168.111.0 netmask 255.255.255.0 {
        interface ens192;
        pool {
                range 192.168.111.100 192.168.111.150;
                  # this is PXE specific
                filename «pxelinux.0»;
                next-server 192.168.111.10;
        }
}


Configuration DNS



Pour notre cluster, la zone ocp45.demo.local a été créée et les enregistrements A et PTR pour la plage DHCP ont été créés. Créez les entrées OpenShift requises pour l'API et Ingress:



Un morceau de la zone BIND ocp45.demo.local:



api             IN      A       192.168.111.190
*.apps          IN      A       192.168.111.191


Après cela, nous téléchargeons les certificats depuis notre vCenter et les installons comme approuvés sur notre serveur.



Installez les certificats vCenter:



[ocp@shift-is01 ~]$ mkdir certs; cd certs; curl -kO https://vc01.demo.local/certs/download.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5795  100  5795    0     0  15500      0 --:--:-- --:--:-- --:--:-- 15536

[ocp@shift-is01 certs]$ unzip ./download.zip
Archive:  ./download.zip
  inflating: certs/lin/e01a85a3.r1
  inflating: certs/mac/e01a85a3.r1
  inflating: certs/win/e01a85a3.r1.crl
  inflating: certs/lin/e01a85a3.0
  inflating: certs/mac/e01a85a3.0
  inflating: certs/win/e01a85a3.0.crt

[ocp@shift-is01 certs]$ sudo cp ./certs/lin/e01a85a3.* /etc/pki/ca-trust/source/anchors

[ocp@shift-is01 certs]$ sudo update-ca-trust extract


Installation d'un cluster OpenShift



La procédure d'installation elle-même est désormais aussi simple que possible:



  1. obtenir le programme d'installation et les clés (Pull Secret) sur le site Web de Red Hat ;
  2. préparer un fichier yaml avec install-config.yaml avec la configuration de cluster prévue;
  3. installez le cluster.


Nous obtenons l'installateur et les clés



Téléchargez le programme d'installation et PullSecret depuis RedHat, cette procédure est décrite dans le Guide d'installation . Dans notre exemple, tous les binaires nécessaires au travail se trouvent dans le répertoire bin du répertoire personnel de l'utilisateur ocp.



[ocp@shift-is01 bin]$ ll
total 499036
-rwxr-xr-x 1 ocp ocp  78599208 Jul 16 11:53 kubectl
-rwxr-xr-x 1 ocp ocp  78599208 Jul 16 11:53 oc
-rwxr-xr-x 1 ocp ocp 353804288 Jul 16 11:53 openshift-install
-rw-r--r-- 1 ocp ocp       954 Jul 16 11:53 README.md


Préparation de install-config.yaml



[ocp@shift-is01 ~]$ cat ./install-config.yaml 
apiVersion: v1
baseDomain: demo.local
compute:
- hyperthreading: Enabled
  architecture: amd64
  name: worker
  replicas: 3
  platform:
    vsphere:
      cpus: 2
      coresPerSocket: 1
      memoryMB: 8192
      osDisk:
        diskSizeGB: 120
controlPlane:
  hyperthreading: Enabled
  architecture: amd64
  name: master
  replicas: 3
  platform:
    vsphere:
      cpus: 4
      coresPerSocket: 1
      memoryMB: 16384
      osDisk:
        diskSizeGB: 120
metadata:
  name: ocp45
networking:
  networkType: OpenShiftSDN
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  serviceNetwork:
- 172.30.0.0/16
platform:
  vsphere:
    vcenter: _vCenter
    username: __vCenter
    password: _
    datacenter: _Datacenter
    defaultDatastore: _Datastre
    network: _Network
    cluster: _Cluster
    apiVIP: 192.168.111.190
    ingressVIP: 192.168.111.191
fips: false
pullSecret: '_PullSecret'
sshKey: '_SSH_Public_Key'


Lors de la préparation de ce fichier avec la future configuration du cluster, il y a trois choses à noter.



Tout d'abord, le cluster se souviendra de la configuration des nœuds de travail définis dans install-config. Et tous les nœuds suivants que vous créerez lors de la mise à l'échelle du cluster auront exactement la même configuration. Par conséquent, il est nécessaire de déterminer immédiatement la configuration optimale du nœud de travail.



Deuxièmement, il est souhaitable que l'adressage interne du cluster (réseau de cluster et réseau de service) ne soit pas interféré avec votre adressage interne. Sinon, il est possible que le POD à l'intérieur du cluster ne puisse pas ouvrir une connexion à des ressources externes (par exemple, accéder à une base de données externe).



Troisièmement, le nom du cluster (champ de métadonnées) doit correspondre à votre domaine pour ce cluster. Dans notre cas, le nom du cluster est ocp45 et ses adresses se trouvent dans le domaine ocp45.demo.local.



Vous pouvez également préparer install-config.yaml via le programme d'installation openshift-install, mais vous ne pourrez alors pas déterminer la configuration du nœud de travail et l'adressage interne. Dans tous les cas, il est logique de créer install-config.yaml via le programme d'installation, puis de le réparer.



Installation du cluster



La procédure même d'installation d'un cluster n'a pas fondamentalement changé. Après le démarrage du programme d'installation:



  • le programme d'installation crée un nœud d'amorçage avec des ressources pour initialiser le nœud maître;
  • l'installateur crée trois nœuds maîtres;
  • le nœud d'amorçage et trois nœuds maîtres forment un plan de contrôle de cluster;
  • le programme d'installation désactive et supprime le nœud d'amorçage;
  • Le plan de contrôle déploie les nœuds de calcul et configure les services de cluster nécessaires.




Processus de configuration du cluster.



Nous commençons l'installation du cluster et attendons. Le processus d'installation prend généralement 30 à 40 minutes:



Installation de cluster



[ocp@shift-is01 ~]$ mkdir ocp45; cp ./install-config.yaml ./ocp45
[ocp@shift-is01 ~]$ ./bin/openshift-install create cluster --dir=ocp45 --log-level=info
INFO Consuming Install Config from target directory
INFO Obtaining RHCOS image file from 'https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/rhcos-4.5/45.82.202007062333-0/x86_64/rhcos-45.82.202007062333-0-vmware.x86_64.ova?sha256=4189881eadb0b0cfd85c2f2ab1c32f6a320b71713cac3bd4179dba746ad4070a'

INFO Creating infrastructure resources...
INFO Waiting up to 20m0s for the Kubernetes API at https://api.ocp45.demo.local:6443...
INFO API v1.18.3+8b0a82f up
INFO Waiting up to 40m0s for bootstrapping to complete...
INFO Destroying the bootstrap resources...
INFO Waiting up to 30m0s for the cluster at https://api.ocp45.demo.local:6443 to initialize...
INFO Waiting up to 10m0s for the openshift-console route to be created...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp45.demo.local
INFO Login to the console with user: «kubeadmin», and password: «xxxxxxxxxxxxxxx»
INFO Time elapsed: 41m56s


Problèmes de démarrage RHCOS



Si la connexion Internet est lente, l'installation peut ne pas fonctionner: le programme d'installation n'attendra pas le chargement de l'image RHCOS. Vous pouvez télécharger l'image RHCOS à l'avance à partir du lien affiché par le programme d'installation. Le fichier résultant doit être placé dans le répertoire ~ / .cache / openshift-installer / image_cache avec le nom 5dad1f50634794b0e1ff8a830cad4b98 et redémarrer l'installation. Cette fois, openshift-install le prendra du système de fichiers:



INFO The file was found in cache: /home/ocp/.cache/openshift-installer/image_cache/5dad1f50634794b0e1ff8a830cad4b98. Reusing...



c'est tout, le cluster est prêt:



[ocp@shift-is01 ~]$ export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig
[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE   VERSION
ocp45-64clc-master-0       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   33m   v1.18.3+6025c28
ocp45-64clc-worker-f7bw2   Ready    worker   15m   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   15m   v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   15m   v1.18.3+6025c28




Mise à l'échelle et suppression d'un cluster OpenShift



Les avantages de la nouvelle méthode ne sont pas seulement que l'installation est désormais plus facile et nécessite moins d'efforts de préparation. Un cluster OpenShift installé dans vSphere via IPI perçoit vShpere comme une plate-forme cloud à part entière et peut tirer parti de ses avantages «d'élasticité».



Désormais, un cluster sur la plate-forme vSphere (comme les grandes plates-formes cloud comme Amazon AWS ou Google GCP) dispose d'un ensemble de machines qui est automatiquement généré par le programme d'installation:



OpenShift machineset 
[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api
NAME                 DESIRED   CURRENT   READY   AVAILABLE   AGE
ocp45-64clc-worker   3         3         3       3           50m


Cela vous permet de réduire la mise à l'échelle du cluster à l'exécution d'une seule commande. OpenShift créera indépendamment un nœud et l'ajoutera au cluster ou le supprimera.



Ajout d'un nœud à un cluster



[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=4 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled

[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api

NAME                 DESIRED   CURRENT   READY   AVAILABLE   AGE
ocp45-64clc-worker   4         4         3       3           61m

[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE     VERSION
ocp45-64clc-master-0       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   75m     v1.18.3+6025c28
ocp45-64clc-worker-f7bw2   Ready    worker   57m     v1.18.3+6025c28
ocp45-64clc-worker-hvjmn   Ready    worker   9m27s   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   57m     v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   57m     v1.18.3+6025c28


Suppression d'un nœud d'un cluster



[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=3 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled

[ocp@shift-is01 ~]$ ./bin/oc get nodes

NAME                       STATUS   ROLES    AGE   VERSION
ocp45-64clc-master-0       Ready    master   97m   v1.18.3+6025c28
ocp45-64clc-master-1       Ready    master   98m   v1.18.3+6025c28
ocp45-64clc-master-2       Ready    master   98m   v1.18.3+6025c28
ocp45-64clc-worker-hvjmn   Ready    worker   32m   v1.18.3+6025c28
ocp45-64clc-worker-m277w   Ready    worker   79m   v1.18.3+6025c28
ocp45-64clc-worker-wcjj7   Ready    worker   79m   v1.18.3+6025c28


La capacité du cluster à auto-créer et supprimer des nœuds peut être utilisée pour configurer la mise à l'échelle automatique d'un cluster OpenShfit .



En général, avec l'installation de vSphere IPI, toute la gestion de la plate-forme d'orchestration de conteneurs OpenShift est transférée du côté de kubernetes:



  1. la création et la suppression des ressources pour le cluster sont gérées par l'administrateur OpenShift via la machine;
  2. la configuration des paramètres OS sur les nœuds du cluster est également gérée par l'administrateur OpenShift via macheneconfig.


Cela correspond bien à l'approche d'administration zéro déclarée de RedHat pour l'infrastructure sous-jacente du cluster.



En plus d'automatiser la création de clusters, le nouveau programme d'installation peut les supprimer lui-même. «Sous le capot» du programme d'installation de Terraform et dans le répertoire contenant les fichiers de configuration d'installation, le fichier d'état de Terraform (terraform.tfstate) reste. Cela vous permet de supprimer un cluster précédemment créé sans craindre de "toucher" accidentellement les ressources d'autres personnes:



[ocp@shift-is01 ~]$./bin/openshift-install destroy cluster --dir=ocp45 --log-level=info


Si vous créez et supprimez constamment des clusters, par exemple pour des tests ou des environnements d'apprentissage, cette fonctionnalité permet également d'automatiser ce processus et d'éviter d'éventuelles erreurs humaines dans le processus.



Conclusion



L'installation d'OpenShift sur VMware vSphere est l'option d'installation la plus courante. Et la capacité d'OpenShift à fonctionner avec vSphere en tant que plate-forme cloud, apparue dans la version 4.5.1, simplifie considérablement son administration, en fournissant une solution clé en main pour automatiser les processus du cycle de vie depuis la création, la mise à l'échelle et la suppression de la plate-forme.



Désormais, l'approche Infrastructure as Code pour servir des solutions sur site basées sur Red Hat OpenShift et VMware vSphere devient beaucoup plus abordable à mettre en œuvre.



Auteur: Sergey Artemov, architecte du département DevOps Solutions , Jet Infosystems



PS Rejoignez la communauté Telegram DevSecOps Talks .



All Articles