OpenShift 4.5.1: Installation unter vSphere IPI

Wenn Sie sich bereits mit OpenShift befasst haben, wissen Sie, wie mühsam es ist, einen OpenShift-Cluster in vSphere von Grund auf neu zu installieren. Hauptsächlich, weil die umgebende Infrastruktur vorbereitet werden muss. Mit der Veröffentlichung von OpenShift 4.5.1 ist diese Aufgabe viel einfacher geworden.







Vor der Veröffentlichung von OpenShift 4.5.1 war es möglich, einen Cluster auf der vSphere-Plattform nur in der UPI-Version (User Provider Infrastructure) zu installieren. Der Benutzer musste die für die Installation erforderliche Infrastruktur unabhängig vorbereiten, nämlich Folgendes vorbereiten:



  • externe Netzwerkausgleicher (einer zum Ausgleichen des Clusterverkehrs, der andere zum Ausgleichen des Anwendungsverkehrs);
  • eine Reihe von DNS-Einträgen, einschließlich SRV-Einträgen;
  • DHCP-Server zum Ausgeben von Adressen an Clusterknoten (oder entscheiden Sie sich für eine Methode zum Festlegen der statischen Adressierung);
  • HTTP-Server zum Übertragen der Ingnition-Konfiguration bei der Installation von RHCOS.


Gleichzeitig führt jeder Fehler (und wie Sie wissen - "errare humanum est") bei der Vorbereitung der Umgebung zu einem Fehler bei der Installation des Clusters. Um diese Aufgabe irgendwie zu erleichtern, schienen Projekte von Drittanbietern die Vorbereitung der Umwelt zu beschleunigen und den Einfluss des "menschlichen Faktors" in diesem Prozess zu verringern. Eines der bekanntesten ist das OCP Helper Node- Projekt , das alle erforderlichen Konfigurationen für die Installation von OpenShift auf einem Server über Ansible vorbereitet. Es gab auch Optionen für die Installation eines Clusters mit der Vorbereitung der Infrastruktur über Terraform.



Solche Projekte lösten jedoch nicht alle Probleme bei der Bereitstellung eines Clusters in vSphere. Häufig ist es erforderlich, einen OpenShift-Cluster als Dienst bereitzustellen ("kubernetes as service"). In diesem Fall war die Automatisierung der OpenShift-Installation keine leichte Aufgabe. Manuelle Eingriffe waren erforderlich: Beobachten der Reihenfolge der Installation des Betriebssystems auf den Clusterknoten, Bestätigen der Zertifikate im Cluster, Warten auf den Abschluss der Installation der Cluster-Operatoren und etc. Bei Bedarf können Sie diesen Prozess automatisieren, dies erfordert jedoch auch Zeit und Ressourcen, um solche Lösungen zu erstellen und zu warten.



Seit Release 4.5.1. OpenShift wurde am 13. Juli 2020 veröffentlicht und unterstützt die Installation in vSphere mithilfe von IPI (Installer Provided Infrastructure). Dies bedeutet, dass das Installationsprogramm jetzt:



  • Bereiten Sie alle erforderlichen Ressourcen in vSphere unabhängig vor.
  • Erstellen Sie einen OpenShift-Cluster mit einem Befehl.
  • Löschen Sie den zuvor erstellten OpenShift-Cluster mit einem Befehl.


Darüber hinaus kann der Administrator nach einer solchen Installation Clusterknoten mit einem Befehl in OpenShift hinzufügen oder entfernen. Oder aktivieren Sie die automatische Skalierung vollständig, damit der Cluster unabhängig auf Laständerungen reagieren kann.



Die neue Installationsmethode weist jedoch eine Einschränkung auf: Alle Clusterknoten sowie der Server, von dem aus die Installation durchgeführt wird, müssen direkten Zugriff auf das Internet haben. Wenn sich der Administrator hinter einem Unternehmens-Proxyserver befindet oder das Internet für den Cluster nicht verfügbar ist, muss der Cluster wie zuvor in der UPI-Version installiert werden.



Vorbereitung der umgebenden Infrastruktur



Bei der Installation von OpenShift können Sie nicht auf die Vorbereitung der Infrastruktur verzichten, aber die Liste der Aufgaben ist bescheidener geworden:



  1. Ein DHCP-Server wird benötigt (um Adressen an OpenShift-Knoten zu vergeben);
  2. Es sind zwei DNS-Einträge erforderlich (VIP für Cluster-API und VIP für Ingress-Verkehr).
  3. Sie benötigen ein Konto in vSphere mit einer Reihe von Berechtigungen, die in der Dokumentation zur Installation von OpenShift beschrieben sind .


In unserem Fall haben wir den Shift-is01-Server mit CentOS 7 verwendet, um OpenShift zu installieren und alle erforderlichen Dienste auszuführen.



DHCPD-Konfiguration



Hier gibt es nichts Spezielles. Wir wählen den Adresspool (192.168.111.100 -192.168.111.150) für OpenShift-Server aus:



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


DNS-Konfiguration



Für unseren Cluster wurde die Zone ocp45.demo.local erstellt und A- und PTR-Datensätze für den DHCP-Bereich erstellt. Erstellen Sie die erforderlichen OpenShift-Einträge für die API und Ingress:



Ein Block aus der BIND-Zone ocp45.demo.local:



api             IN      A       192.168.111.190
*.apps          IN      A       192.168.111.191


Danach laden wir die Zertifikate von unserem vCenter herunter und installieren sie als vertrauenswürdig auf unserem Server.



Installieren Sie vCenter-Zertifikate:



[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


Installieren eines OpenShift-Clusters



Der Installationsvorgang selbst ist jetzt so einfach wie möglich:



  1. Holen Sie sich das Installationsprogramm und die Schlüssel (Pull Secret) von der Red Hat- Website .
  2. Vorbereiten einer Yaml-Datei mit install-config.yaml mit der geplanten Cluster-Konfiguration;
  3. Installieren Sie den Cluster.


Wir bekommen den Installer und die Schlüssel



Laden Sie das Installationsprogramm und PullSecret von RedHat herunter. Dieses Verfahren wird im Installationshandbuch beschrieben . In unserem Beispiel befinden sich alle für die Arbeit erforderlichen Binärdateien im bin-Verzeichnis des Home-Verzeichnisses ocp des Benutzers.



[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


Vorbereiten von 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'


Bei der Vorbereitung dieser Datei mit einer zukünftigen Clusterkonfiguration sind drei Dinge zu beachten.



Zunächst merkt sich der Cluster die Konfiguration der Arbeitsknoten des in install-config definierten Clusters. Alle nachfolgenden Knoten, die Sie beim Skalieren des Clusters erstellen, haben genau dieselbe Konfiguration. Daher ist es notwendig, sofort die optimale Konfiguration des Arbeitsknotens zu bestimmen.



Zweitens ist es wünschenswert, dass die interne Adressierung des Clusters (Clusternetzwerk und Servicenetzwerk) Ihre interne Adressierung nicht beeinträchtigt. Andernfalls besteht die Möglichkeit, dass der POD innerhalb des Clusters keine Verbindung zu externen Ressourcen herstellen kann (z. B. zu einer externen Datenbank wechseln).



Drittens muss der Clustername (Metadatenfeld) mit Ihrer Domain für diesen Cluster übereinstimmen. In unserem Fall lautet der Clustername ocp45 und seine Adressen befinden sich in der Domäne ocp45.demo.local.



Sie können install-config.yaml auch über das Installationsprogramm openshift-install vorbereiten, können dann jedoch die Konfiguration des Arbeitsknotens und die interne Adressierung nicht ermitteln. In jedem Fall ist es sinnvoll, install-config.yaml über das Installationsprogramm zu erstellen und dann zu beheben.



Cluster installieren



Das Verfahren zur Installation eines Clusters hat sich nicht grundlegend geändert. Nach dem Start des Installationsprogramms:



  • Das Installationsprogramm erstellt einen Bootstrap-Knoten mit Ressourcen zum Initialisieren des Masterknotens.
  • Das Installationsprogramm erstellt drei Hauptknoten.
  • Der Bootstrap-Knoten und drei Master-Knoten bilden eine Cluster-Steuerebene.
  • Das Installationsprogramm deaktiviert und entfernt den Bootstrap-Knoten.
  • Die Steuerebene stellt Arbeitsknoten bereit und konfiguriert die erforderlichen Clusterdienste.




Cluster-Setup-Prozess.



Wir starten die Installation des Clusters und warten. Der Installationsvorgang dauert normalerweise 30-40 Minuten:



Cluster-Installation



[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


RHCOS-Startprobleme



Wenn die Internetverbindung langsam ist, funktioniert die Installation möglicherweise nicht: Das Installationsprogramm wartet nicht auf das Laden des RHCOS-Images. Sie können das RHCOS-Image vorab über den vom Installationsprogramm angezeigten Link herunterladen. Die resultierende Datei muss im Verzeichnis ~ / .cache / openshift-installer / image_cache mit dem Namen 5dad1f50634794b0e1ff8a830cad4b98 abgelegt und die Installation neu gestartet werden. Dieses Mal wird es von openshift-install aus dem Dateisystem übernommen:



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



Das war's, der Cluster ist bereit:



[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




Skalieren und Löschen eines OpenShift-Clusters



Die Vorteile der neuen Methode bestehen nicht nur darin, dass die Installation jetzt einfacher ist und weniger Vorbereitungsaufwand erfordert. Ein über IPI in vSphere installierter OpenShift-Cluster betrachtet vShpere als vollwertige Cloud-Plattform und kann die Vorteile der "Elastizität" nutzen.



Jetzt verfügt ein Cluster auf der vSphere-Plattform (wie große Cloud-Plattformen wie Amazon AWS oder Google GCP) über einen Computersatz , der vom Installationsprogramm automatisch generiert wird:



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


Auf diese Weise können Sie die Cluster-Skalierung auf die Ausführung eines einzelnen Befehls reduzieren. OpenShift erstellt unabhängig einen Knoten und fügt ihn dem Cluster hinzu oder löscht ihn.



Hinzufügen eines Knotens zu einem 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


Entfernen eines Knotens aus einem 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


Die Fähigkeit des Clusters, Knoten selbst zu erstellen und zu löschen, kann verwendet werden, um die automatische Skalierung eines OpenShfit-Clusters zu konfigurieren .



Bei der Installation von vSphere IPI erfolgt die gesamte Verwaltung der OpenShift-Container-Orchestrierungsplattform im Allgemeinen auf der Seite der Kubernetes:



  1. Das Erstellen und Löschen von Ressourcen für den Cluster wird vom OpenShift-Administrator über den Computersatz verwaltet.
  2. Die Konfiguration der Betriebssystemeinstellungen auf Clusterknoten wird ebenfalls vom OpenShift-Administrator über macheneconfig verwaltet.


Dies passt gut zu RedHats angegebenem Zero Administration-Ansatz für die zugrunde liegende Infrastruktur unter dem Cluster.



Das neue Installationsprogramm automatisiert nicht nur die Erstellung von Clustern, sondern kann diese auch selbst entfernen. "Unter der Haube" des Terraform-Installationsprogramms und im Verzeichnis mit den Installationskonfigurationsdateien verbleibt die Terraform-Statusdatei (terraform.tfstate). Auf diese Weise können Sie einen zuvor erstellten Cluster löschen, ohne befürchten zu müssen, versehentlich die Ressourcen anderer Personen zu "berühren":



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


Wenn Sie ständig Cluster erstellen und löschen, z. B. für Tests oder Trainingsumgebungen, hilft diese Funktion auch dabei, diesen Prozess zu automatisieren und mögliche menschliche Fehler im Prozess zu vermeiden.



Fazit



Die Installation von OpenShift unter VMware vSphere ist die häufigste Installationsoption. Die in der Version 4.5.1 veröffentlichte Fähigkeit von OpenShift, mit vSphere als Cloud-Plattform zu arbeiten, vereinfacht die Verwaltung erheblich und bietet eine schlüsselfertige Lösung zur Automatisierung der Lebenszyklusprozesse von der Plattformerstellung über die Skalierung bis hin zur Entfernung.



Jetzt wird der Ansatz "Infrastruktur als Code" für die Bereitstellung von On-Premise-Lösungen auf Basis von Red Hat OpenShift und VMware vSphere für die Implementierung immer günstiger.



Autor: Sergey Artemov, Architekt der Abteilung DevOps Solutions , Jet Infosystems



PS Treten Sie der Telegramm-Community DevSecOps Talks bei .



All Articles