MicroShift – Openshift para Edge Computing

Photo by Tom Fisk from Pexels

¿Qué es MicroShift?

De acuerdo a la documentación: «MicroShift es un proyecto de investigación que está explorando cómo OpenShift(OKD) y Kubernetes pueden ser optimizados para cómputo small form factor y edge«

MicroShift está diseñado para ser instalado sobre un sistema operativo Linux optimizado para edge, como puede ser Fedora IoT o RHEL for Edge, aprovechando las capacidades de ese sistema operativo para la incorporación segura de dispositivos y la actualización transaccional y (auto)rollback del software y la configuración del sistema operativo. El aprovisionamiento de MicroShift debería ser finalmente una cuestión de crear imágenes de un dispositivo, conectarlo a la red y a la energía, a partir de lo cual puede ser gestionado a través del Red Hat Advanced Cluster Manager.

Al mismo tiempo, MicroShift pretende ser seguro y resiliente a condiciones de red adversas y tener una uso de recursos muy bajo (CPU, memoria, almacenamiento y red), por lo que puede desplegarse en entornos con recursos muy limitados.

Para desplegar MicroShift en ambientes de producción es necesario tener alguno de los Sistemas Operativos recomendados como son en RHEL 8, CentOS Stream 8, o Fedora 34+ usando uno de los dos métodos disponibles:

  • Ejecutando en contenedor con Podman
  • Instalando vía RPM (e.g usando rpm-ostree)

Para el uso de pruebas y el desarrollo, se puede usar una imagen All-In-One esta imagen se puede construir o se puede usar la que esta publicada en el repositorio Quay del proyecto que incluye todo lo necesario para ejecutar MicroShift.

Con esta imagen podemos tener una opción de Kubernetes fácil de ejecutar en tu laptop, como se hace con Kind o k3d pero con el sabor Openshift.

Probemos MicroShift

En este artículo, haremos un despliegue paso a paso usando docker.

Paso 1. Crear un volumen en docker.

docker volume create ushift-vol

Paso 2. Ejecutar MicroShift All-in-one

docker run --privileged -it --name microshift -v ushift-vol:/var/lib -p 6443:6443 -p 30001:30001 -p 30002:30002 quay.io/microshift/microshift-aio:latest

Paso 3. Instalar herramientas para administrar el clúster.

Kubectl y el cliente de OpenShift pueden utilizarse para acceder a los objetos del clúster.

curl -o oc.tar.gz https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/linux/oc.tar.gz
tar -xzvf oc.tar.gz
sudo install -t /usr/local/bin {kubectl,oc}

Paso 4. Copiar el archivo kubeconfig para poder conectarse al clúster.

docker cp microshift:/var/lib/microshift/resources/kubeadmin/kubeconfig $HOME/.kube/microshift
export KUBECONFIG=~/.kube/microshift

Paso 5. Comprobar la conexión al clúster.

kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
oc cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443

Paso 6. Configurar Openshift Ingress para consumir los servicios fuera del clúster

oc apply -f https://raw.githubusercontent.com/redhat-et/microshift/main/assets/core/0000_80_openshift-router-external-service.yaml
service/router-external-default created
oc get svc -n openshift-ingress
NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
router-external-default   NodePort    10.43.9.169    <none>        80:30001/TCP,443:30002/TCP   37s
router-internal-default   ClusterIP   10.43.178.12   <none>        80/TCP,443/TCP,1936/TCP      58s

Desplegar una aplicación prueba

Paso 1. Crear un namespace.

oc create ns test

Paso 2. Desplegar la aplicación

oc create deployment nginx -n test --image nginx

Paso 3. Crear el servicio asociado al despliegue

oc expose deployment nginx --port=80 -n test

Paso 4. Crear una ruta para exponer el servicio hacia el exterior

Por defecto MicroShift configurar un subdominio para las aplicaciones «*.cluster.local» con el cual se van a consumir las aplicaciones de manera externa a través de un navegador o una consola.

oc expose svc nginx --hostname=nginx-test.cluster.local -n test

Paso 5. Comprobar que se puede acceder a la aplicación.

Es necesario que nuestra maquina resuelva el nombre «nginx-test.cluster.local» en mi caso agregue una linea en el archivo «/etc/hosts» como sigue:

127.0.0.1 nginx-test.cluster.local

Ahora probemos que podemos acceder a la aplicación.

curl http://nginx-test.cluster.local:30001

Conclusión

MicroShift se presenta como una opción más para probar Kubernetes con un consumo de recursos bajo hay que destacar que MicroShift es un proyecto en desarrollo por lo que pueden faltar funciones o algunas otras se rompan, aunque como proyecto comunitario avanza rápidamente y si estas interesado en contribuir lo puedes hacer en su repositorio de código.

Más información

Deja una respuesta

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