1. Preparar el entorno
Repositorio
Este tutorial se basa en el repositorio de Ceferino Jose II licenciado bajo MIT License.
git clone https://git.rwy.pub/pilasguru/mern-crud.git
Aplicación
La aplicación tiene tres servicios en Docker Compose:
db -> MongoDB
api -> Express/Node.js
web -> React
Compose utiliza bind mounts para desarrollo. Kubernetes utilizará una imagen autocontenida.
Construir la imagen
Desde el directorio de la aplicación:
docker build -t mern-crud:study .
Cargar la imagen en Minikube:
minikube image load mern-crud:study
Comprobar:
minikube image ls | grep mern-crud
La imagen debe aparecer como:
docker.io/library/mern-crud:study
En los manifiestos se utiliza:
image: mern-crud:study
imagePullPolicy: IfNotPresent
Iniciar Minikube
En este laboratorio Minikube terminó funcionando con Colima, el driver docker y runtime containerd.
colima start
minikube start
Comprobar el perfil:
minikube profile list
minikube status
kubectl get nodes
El nodo debe estar en estado Ready.
Liberar recursos y volver a iniciar
Apagar únicamente Kubernetes:
minikube stop -p minikube
Apagar completamente Colima y liberar sus recursos:
colima stop
Para volver a trabajar:
colima start
minikube start -p minikube
Problema inicial del API Server
Durante el primer arranque apareció:
K8S_APISERVER_MISSING
apiserver process never appeared
Los errores de storageclass eran una consecuencia. El problema real era que el kube-apiserver no había iniciado.
Si el perfil queda en un estado fallido y no contiene trabajo importante:
minikube delete -p minikube
minikube start