Crear un clúster de Kubernetes en AWS, Google Cloud, etc., puede ser un poco difícil y costarle una cantidad de dinero bastante decente. Si tiene una máquina con Windows o una Mac, es fácil crear un clúster de varios contenedores usando Docker Desktop para Windows/Mac y usar Kubernetes para administrar el clúster.
Requisitos: tener algunos conocimientos básicos de Docker y Kubernetes.
Pero para el sistema basado en Linux, debe optar por una solución basada en la nube que es costosa. Entonces podemos crear nuestro propio clúster en nuestra máquina local usando minikube . Es Kubernetes local y se centra en facilitar el aprendizaje y el desarrollo para Kubernetes. Solo necesita Docker instalado o cualquier entorno de máquina virtual. En el siguiente ejemplo, hemos utilizado la caja virtual.
Instalación de Minikube: para instalar minikube en Linux, use el siguiente comando:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Ejemplo: para probar esto, vamos a usar una aplicación web de venta de boletos que se creó con NodeJS, ExpressJS, NextJS y usó nats-streaming para transmisión de eventos, ingress-nginx para redes y equilibrio de carga. Una imagen de ventana acoplable diferente para diferentes servicios y han usado minikube para ejecutar el clúster localmente usando minikube.
Enlace Github de Repo: use el enlace https://github.com/afif1400/gittix-micro para bifurcar el proyecto.
Nota: Después de instalar docker o virtual box y minikube, solo tenemos que iniciar minikube y usar skaffold para ejecutar todos los contenedores o diferentes microservicios.
Entonces, después de clonar el repositorio, vaya al directorio raíz, primero inicie minikube: el controlador se usa para especificar el entorno, también puede cambiarlo a Docker. Pero hay un error en el ingreso al usar el entorno de la ventana acoplable.
minikube start --driver="virtualbox"
Ahora que minikube ha iniciado el clúster de Kubernetes en su interior, también puede configurar los recursos que utiliza consultando los documentos del sitio web oficial proporcionado en la referencia.
Necesitamos habilitar un par de complementos en minikube para ejecutar la aplicación. Primero está el tablero que es una GUI para monitorear los servicios de implementación del clúster, etc. y el segundo complemento es el ingreso .
Comando para habilitar el tablero:
minikube addons enable dashboard
Comando para habilitar el ingreso:
minikube addons enable ingress
Ahora debemos exponer la implementación de ingreso-nginx para que se pueda acceder desde el mundo exterior. Use el siguiente comando para hacerlo:
kubectl expose deployment ingress-nginx-controller --target-port=80 --type=NodePort -n kube-system
Ahora, para verificar que el servicio se está ejecutando, ejecute: y el resultado debe ser similar al que se muestra a continuación.
kubectl get services -n kube-system
A continuación, configure una variable de entorno que sea un jwt-secret , para configurar esto, ejecute el siguiente comando:
kubectl create secret generic jwt-secret --from-literal=JWT_KEY=asdf
Esto lo usaremos en nuestro servicio de autenticación para generar el token jwt .
Paso para ejecutar la aplicación:
Use el siguiente comando para ejecutar la aplicación:
skaffold dev
Cuando ejecute este comando, todas las dependencias para cada uno de los servicios se instalarán y construirán la imagen, iniciando el clúster. Si skaffold falla en el medio, simplemente vuelva a ejecutar el comando anterior.
Producción:
Detener minikube: El siguiente es el comando para detener minikube:
minikube stop
Eliminar el clúster: El siguiente es el comando para eliminar el clúster:
minikube delete
Referencias:
- Ventana acoplable: https://docs.docker.com/get-started/overview/
- Ingresonginx: https://kubernetes.github.io/ingress-nginx/
- Skaffold: https://skaffold.dev/docs/
- Minikube: https://minikube.sigs.k8s.io/docs