¿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.