[Kubernetes] Paso a paso: Desplegando Openshift en vSphere

[Kubernetes] Paso a paso: Desplegando Openshift en vSphere

Si bien durante mi andanza por el mundo Kubernetes, con las tecnologías que más he tenido la oportunidad de desenvolverme han sido las de VMware (vSphere with Tanzu y TKG), el otro día me entró la curiosidad por probar algo diferente, por lo que decidí ponerme manos a la obra y desplegar Openshift dentro de mi lab de vSphere.

Para mi sorpresa, fue mucho más fácil de lo que pensaba, y es por eso que os traigo este pequeño tutorial de despliegue básico, que espero que sirva de ayuda.

¿Que necesitamos?

El despliegue por defecto son 4 vCPUs/16GB de RAM por Master Node y 2vCPUs/8GB por Worker

Paso 1: Descargando el Instalador y preparando la VM:

Accedemos al site de descargas de Openshift y descargamos tanto el OpenShift Installer, como el Secret y las CLI-Tools:

https://console.redhat.com/openshift/install/vsphere/user-provisioned

Si no las hemos descargado directamente desde nuestra VM Linux, las subimos a ella usando nuestro método preferido.

Acto seguido procedemos a descomprimir el installer y a copiar el binario de la consola a /usr/local/bin:

tar xvf openshift-install-linux.tar.gz
tar xvf openshift-client-linux.tar.gz
cp oc /usr/local/bin/
1.1 Añadiendo los certificados de vCenter al repositorio de confianza

El instalador de OpenShift requiere que la VM confíe en los certificados de nuestro vCenter. Si nuestro vCenter ya cuenta con un certificado emitido por una CA de confianza, podemos saltar este paso.

Este paso puede variar en función de la distribución linux que estemos utilizando, en mi caso utilizo Ubuntu y los pasos a seguir son los siguientes:

wget https://<tu hostname o IP de vcenter>/certs/download.zip --no-check-certificate
unzip download.zip
cp certs/win/* etc/ssl/certs
sudo update-ca-certificates

Para verificar que los certificados se han instalado correctamente, podemos lanzar un CURL a nuestro servidor de vCenter, si no recibimos ningún error, el certificado es válido y podemos continuar:

curl https://<nuestra FQDN o IP de vCenter>
1.2 Creando una clave privada de SSH

Para que el instalador de Openshift pueda comunicarse con las máquinas que despliegue, será necesario que nuestra máquina de instalación cuente con una clave privada de SSH.

Si ya la tienes puedes saltar este paso.

Para crear esta clave, lanzaremos el comando:

ssh-keygen -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa

Hecho esto, nuestra clave estará lista.

Paso 2: Preparando la red

El siguiente paso será preparar nuestra infraestructura de red para el despliegue. Para ello necesitaremos crear nuestra red con un servidor DHCP y alcance hacia un servidor DNS que podrá estar dentro de la propia red o ser enrutado.

En mi caso, la red la he creado sobre un segmento de NSX-T donde he habilitado Gateway DHCP, pero esta topología se podría montar sin problemas en una red VLAN tradicional con servidor DHCP basado en WinServer o Linux.

Importante: Dejar fuera del rango de DHCP al menos 2 IPs, una para la API y otra para el cluster Ingress (Paso siguiente)

2.1. Dando de alta los registros en DNS

A continuación, necesitamos dar de alta los siguientes registros en DNS:

  • api.<nombre-del-cluster>.<dominiobase> – Esta será la FQDN de la API de Kubernetes
  • *.apps.<nombre-del-cluster>.<dominiobase> – Aquí se desplegarán los servicios de Ingress, que entre otros nos darán acceso a la consola de Openshift

Importante: Estas IPs deben de estar fuera del rango DHCP configurado en el paso anterior.

Una vez hecho esto, ya tendríamos la red preparada para el despliegue.

Paso 3: Desplegando Openshift

Si hemos llegado hasta aquí ¡Ya tenemos todo listo para avanzar con el despliegue de nuestro cluster!

En primer lugar, crearemos una carpeta de instalación donde se almacenarán los datos, logs y temporales de instalación

mkdir /home/juan/openshift/install

Acto seguido, podremos empezar la instalación:

./openshift-install create cluster --dir=/home/juan/openshift/install --log-level=info

El script comenzará y nos pedirá alguna información:

  • Clave pública SSH – Escogemos la clave pública creada en el paso 1.2
  • Plataforma – Escogemos vSphere
  • vCenter – Introducimos la FQDN o IP de nuestro vCenter
  • Username – Nuestro usuario de vCenter
  • Password – Password de vCenter
  • Datastore – El datastore donde se desplegaran las VMs
  • Network – La red configurada en el paso 2
  • VIP for API – La IP que hemos registrado en DNS para la API
  • VIP for Ingress – La IP que hemos registrado en DNS para el ingress
  • Base Domain – Nuestro Base Domain
  • Cluster Name – El nombre del cluster, debe coincidir con el registrado en DNS
  • Pull secret – Pegamos el contenido del txt descargado del site de Red Hat en el paso 1

Con estos datos, el instalador empezará a trabajar y nosotros podemos irnos tranquilamente a por un café, pues lleva tiempo…

Cuando finalice la instalación, tendremos el asistente nos indicará la URL de acceso a la consola y la password por defecto:

El kubeconfig queda localizado en la carpeta de instalación dentro del subdirectorio auth y podremos utilizarlo tanto con kubectl como con oc, o moverlo a nuestro directorio ~/.kube para que sea el kubeconfig por defecto:

3.1 Desplegando un Pod de prueba

Dentro de la consola, podremos empezar a crear proyectos y «jugar» con Kubernetes. Por ejemplo, para finalizar esta entrada, vamos a crear un Pod de prueba:

  • Vamos a la sección de Projects y hacemos click en Create Project:
  • Esto creará un nuevo namespace dentro de nuestro cluster de kubernetes, llamaremos a este proyecto, nginx:
  • Posteriormente, en el menú lateral, iremos a Workloads – Pods, escogeremos nuestro proyecto y haremos click en «Create Pod»
  • Aquí podremos aplicar nuestro yaml, y crear nuestro pod:
  • Pasados unos segundos, nuestro pod estará listo, podremos verificarlo tanto en la consola, como con kubectl/oc:

Y…

Espero que hayas disfrutado y aprendido leyendo mi post, tanto como yo creándolo. Como siempre, cualquier comentario o sugerencia será agradecida.

Mantén un ojo en mi blog si quieres leer más contenido próximamente sobre K8s, Integración del AVI-LB con clusters o Tanzu.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.