Red-Hat-OpenShift

Cómo instalar OpenShift 4.9 en Bare Metal (UPI)

Hola Techies, como saben, Openshift proporciona una plataforma de contenedores y puede instalarse en las instalaciones o en la nube pública utilizando diferentes métodos como IPI (instalador aprovisionado por el instalador), UPI (infraestructura aprovisionada por el usuario) y el instalador asistido de Bare Metal.

En esta publicación, demostraremos cómo instalar Openshift 4.9 en nodos bare metal con enfoque UPI.

Para fines de demostración, estoy usando máquinas virtuales KVM. Los siguientes son los detalles de configuración de mi laboratorio,

Total de máquinas virtuales: 7

Nodo bastión:

  • Sistema operativo: Rocky Linux 8 / CentOS 8,
  • RAM- 4GB, vPCU-4,
  • Disco- 120 GB
  • Red: Administración N/w – (169.144.104.228), ocp interno n/w – (192.168.110.115)

Nodo de arranque:

  • Sistema operativo: sistema operativo central
  • RAM: 8GB
  • vCPU: 4
  • Disco: 40GB
  • Red: Red Interna OCP (192.168.110.116)

Nodo del plano de control 1:

  • Sistema operativo: sistema operativo central
  • RAM: 10GB
  • vCPU: 6
  • Disco: 60GB
  • Red: Red Interna OCP (192.168.110.117)

Nodo del plano de control 2:

  • Sistema operativo: sistema operativo central
  • RAM: 10GB
  • vCPU: 6
  • Disco: 60GB
  • Red: Red Interna OCP (192.168.110.118)

Nodo del plano de control 3:

  • Sistema operativo: sistema operativo central
  • RAM: 10GB
  • vCPU: 6
  • Disco: 60GB
  • Red: Red Interna OCP (192.168.110.119)

Nodo trabajador 1:

  • Sistema operativo: sistema operativo central
  • RAM: 12GB
  • vCPU: 8
  • Disco: 60GB
  • Red: Red Interna OCP (192.168.110.120)

Nodo trabajador 2:

  • Sistema operativo: sistema operativo central
  • RAM: 12GB
  • vCPU: 8
  • Disco: 60GB
  • Red: Red Interna OCP (192.168.110.121)

Nota: En el hipervisor KVM, hemos creado una red solo de host para ocp-internal.

Use el siguiente archivo y comandos para crear una red solo de host en 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

Descargue el software Openshift desde el portal de Red Hat

a) Inicie sesión en el Portal de Red Hat usando la siguiente URL:

https://cloud.redhat.com/openshift

b) Haga clic en Crear clúster

c) Elija la pestaña Centro de datos -> Haga clic en BareMetal

d) Seleccione el Tipo de instalación como ‘UPI’ (infraestructura proporcionada por el usuario)

e) Descargar lo siguiente

  • Instalador de OpenShift
  • tirar secreto
  • Interfaz de línea de comandos
  • RHCOSISO
  • RHCOS CRUDO

Descargar-OpenShift-Software

Descargar-OCP-RHCOS-ISO-RAW

Pasemos ahora a los pasos de instalación de OpenShift

Paso 1) Preparar el nodo bastión

Cree una máquina virtual con los recursos mencionados anteriormente para el bastión, puede instalar el sistema operativo Rocky Linux 8 o CentOS 8. Asigne la dirección IP de la red interna de administración y ocp.

Del mismo modo, cree bootstrap, control plane VM y Worker VM y conecte la red OCP (hostnet) a la interfaz y anote su dirección mac. Entonces, en mi caso, las siguientes son las direcciones MAC,

  • Arranque: 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

Paso 2) Configurar servicios en el nodo bastión

Transfiera el software Openshift descargado, incluido el secreto, al nodo de bastión en la carpeta raíz.

OpenShift-Software-Requerido

Extraiga el archivo tar del cliente openshift usando el siguiente comando tar,

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

Confirme la instalación de la herramienta de cliente openshift y su versión ejecutando,

# oc version
# kubectl version

La salida del comando anterior se vería a continuación:

Versión de cliente de Openshift

Extraiga el archivo tar del instalador de Openshift,

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

Configurar zonas y enmascaramiento (SNAT)

En mi nodo bastión, tengo dos tarjetas LAN, ens3 y ens8. En ens3, se configura la red externa o de administración y en ens8, se configura la red interna ocp. Por lo tanto, defina las siguientes zonas y habilite el enmascaramiento en ambas zonas.

# 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

Verifique la configuración de la zona ejecutando los siguientes comandos firewall-cmd,

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

Zone-Settings-firewall-cmd

Ahora configuremos el servicio DNS, DHCP, Apache, HAProxy y NFS.

Nota: Para fines de demostración, estoy usando ‘linuxtechi.lan’ como dominio base.

Configurar servidor DNS

Para instalar el servidor DNS y sus dependencias, ejecute el siguiente comando dnf

# dnf install bind bind-utils -y

Edite /etc/named.conf y asegúrese de que el archivo tenga los siguientes contenidos,

# vi /etc/named.conf

ocp-dns-linux

ocp-dns-dominio-zona

Ahora cree un archivo de zona de avance y retroceso,

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

DNS-Registros-Zona-Archivo

Guardar y salir del archivo.

Cree un archivo de zona inversa con las siguientes entradas,

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

registro-dns-zona-inversa

Guarde y cierre el archivo y luego inicie y habilite el servicio dns

# systemctl start named
# systemctl enable named

Permitir el puerto DNS en el firewall, ejecutar

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

Configurar servidor DHCP

Instale y configure el servidor dhcp, vincule la dirección mac de bootstrap, los planos de control y los nodos de trabajo a sus respectivas IP. Ejecute el siguiente comando para instalar el paquete dhcp,

# dnf install -y dhcp-server

Edite el archivo /etc/dhcp/dhcpd.conf y agregue los siguientes contenidos, use las direcciones mac que hemos recopilado en el paso 1 y especifique la dirección IP de los nodos según las entradas de DNS. Entonces, en mi caso, el contenido del archivo se verá a continuación,

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

Contenido del archivo DHCP

Guarde y cierre el archivo.

Inicie el servicio DHCP y permita el servicio dhcp para la zona interna en el firewall, ejecute

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

Configurar el servidor web Apache

Necesitamos apache para servir el archivo de encendido y rhcos, así que primero lo instalaremos usando el siguiente comando,

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

Cambie el puerto de escucha predeterminado de apache de 80 a 8080 ejecutando el comando sed

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

Inicie y habilite el servicio apache a través del siguiente comando,

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

Permitir el puerto de servicio de Apache (8080) para la zona interna,

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

Configurar HAProxy

Usaremos haproxy para equilibrar la carga de los servicios de Openshift como ectd, ingreso de http e ingreso de https y aplicaciones como la consola de openshift.

Entonces, primero instalemos haproxy ejecutando el siguiente comando dnf,

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

Edite el archivo haproxy y agréguele los siguientes contenidos

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

Guardar y salir del archivo.

Inicie y habilite haproxy para realizar los cambios anteriores en el efecto

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

Permita los puertos HAProxy que hemos definido en su archivo de configuración en el firewall del sistema operativo. Ejecutar bajo los comandos,

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

Configurar servidor NFS

Necesitamos un servidor NFS para proporcionar el almacenamiento persistente al registro de OpenShift.

Ejecute el siguiente comando para instalar el servidor nfs,

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

Cree el siguiente directorio y establezca los permisos necesarios. Este directorio se exportará como recurso compartido NFS,

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

Ahora exporte el recurso compartido agregando la siguiente línea al archivo /etc/exports.

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

Guarde y cierre el archivo y ejecute ‘exportfs -rv’ para exportar el directorio

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

Iniciar y habilitar el servicio NFS

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

Permita el servicio NFS en el firewall del sistema operativo, ejecute los siguientes comandos,

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

Paso 3) Generar manifiestos y archivos de encendido

Para generar archivos de encendido para bootstrap, plano de control y nodos de trabajo, consulte los siguientes pasos

a) Generar claves SSH

[[email protected] ~]# ssh-keygen

Generar-ssh-claves-linux

Estas claves ssh se utilizarán para acceder de forma remota a los nodos de arranque, plano de control y trabajadores.

b) Cree el archivo install-config.yaml con los siguientes contenidos

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

En las líneas 23 y 24, copie el contenido de la clave pública y secreta de extracción que generamos anteriormente.

Después de hacer los cambios, el archivo se verá como se muestra a continuación:

OpenShift-Install-Config-yaml-archivo

c) Generar archivo de manifiestos

Ejecute siguiendo el comando openshift-install,

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

crear -k8s-manifiestos-archivo-openshift

El mensaje de advertencia anterior dice que los nodos maestros son programables, lo que significa que podemos tener una carga de trabajo en los planos de control (los planos de control también funcionarán como nodos de trabajo). Si desea deshabilitar esto, ejecute el siguiente comando sed,

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

Nota: En mi caso, no lo estoy deshabilitando.

d) Generar archivo de encendido y autenticación

Ejecutar bajo el comando openshift-install,

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

Producción,

Ignition-auth-files-openshift

e) Servir manifiestos, encendido y archivo de imagen del sistema operativo central a través del servidor web

Cree el directorio /var/www/html/ocp4 y copie todos los archivos de ‘/root/ocp-install’ a 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

Establezca los permisos requeridos en el directorio 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/

Verifique si estos archivos son accesibles o no a través del comando curl

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

La salida debería verse como a continuación

ocp4-curl-comando-verificar

Perfecto, ahora estamos listos para comenzar el despliegue.

Paso 4) Iniciar la implementación de OpenShift

Inicie la máquina virtual de arranque con el archivo ISO rhcos-live. Obtendremos la siguiente pantalla

RHEL-Core-OS-Pantalla

Cuando se inicie con el archivo ISO, obtendremos la siguiente pantalla,

Coreos-installer-bootstrap-openshift

Escriba el comando coreos-installer y presione 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

Una vez finalizada la instalación nos aparecerá la siguiente pantalla,

Descargar-rhcos-bootstrap-deployment

Reinicie el nodo de arranque para que arranque con el disco duro esta vez.

$ sudo reboot

Del mismo modo, inicie todos los nodos del plano de tres controles con el archivo ISO de RHEL Core OS (rhcos). Una vez que se inicien los nodos de control, ejecute el siguiente comando y presione 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

Coreos-instalador-maestro-openshift

Reinicie el plano de control y arránquelo con el disco duro.

Repita este procedimiento para el resto de los planos de control y monitoree el proceso de arranque usando el siguiente comando.

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

Ahora, inicie ambos nodos de trabajo con el archivo ISO Core OS y una vez que se inicie, ejecute el siguiente comando en los nodos

$ 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

El proceso de arranque para los planos de control y los nodos de trabajo puede demorar entre 10 y 15 minutos, según su infraestructura. Verifique el estado de los nodos usando los siguientes comandos

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

Ahora apruebe todos los CSR pendientes para los nodos trabajadores para que puedan unirse al clúster y estar listos. Ejecute el siguiente comando oc para ver la CSR pendiente

[[email protected] ~]# oc get csr

Ejecute el siguiente comando oc para aprobar las CSR pendientes

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

La salida de los dos comandos anteriores se vería a continuación:

Aprobar-Pendiente-CSR-Oc-Comando

Después de un par de minutos, los nodos de trabajo deberían unirse al clúster y deberían estar en estado listo, ejecute debajo de los comandos para confirmar lo mismo.

[[email protected] ~]# oc get nodes

OC-Nodos-Estado-OpenShift-Cluster

Genial, lo anterior confirma que ambos nodos trabajadores se unen al clúster y están listos.

También verifique el estado de bootstrap y en la salida deberíamos obtener lo siguiente,

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

Bootstrap-Estado-OpenShift

Lo anterior confirma que el proceso de arranque también se completó, y podemos detener y eliminar los recursos de VM de arranque y las entradas de arranque del archivo haproxy.

Esto concluye el artículo; Espero que lo hayas encontrado informativo. Por favor, comparta sus opiniones y comentarios.

Leer también : Cómo configurar un clúster de OpenShift de un solo nodo en RHEL 8

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *