Hands on para realizar el despliegue de una aplicación Node.js en kubernetes.
- Prerrequisitos.
- Correr imagen localmente.
- Despliegue imagen en el clúster de kubernetes creado previamente.
- Verificación del despliegue de la imagen.
- Referencias.
- Debe realizar todo lo que esta en la guía del laboratorio 0.
- Tener creada una aplicación de node.js.
- Tener un clúster aprovisionado y configurado correctamente (Puede ver cómo realizar este requisito en la guía del laboratorio 1).
- Debe tener el Dockerfile de la aplicación, para realizar la habilitación de la aplicación de node.js para el correcto despliegue en la nube y su respectiva creación del Dockerfile se puede dirigir al siguiente enlace: https://cloud.ibm.com/docs/node?topic=nodejs-enable_existing&locale=es
Para poder correr la imagen localmente, primero debe descargar o clonar el Git, luego debe abrir en la terminal la carpeta del proyecto que descargo del Git y descomprimió.
Luego debe abrir la terminal en la carpeta y copiar la ruta de la misma, e iniciar sesión en consola como super usuario, a continuación, vera el código de cómo acceder como super usuario a la carpeta.
sudo –i
cd ..
cd home/user/<Ruta del proyecto>
cd home/user/ <Ruta del proyecto>
Nota: En el recuadro amarillo está el usuario correspondiente a su máquina.
Luego usted debe crear la imagen Docker con el Docker local, para realizar esta acción debe ejecutar el siguiente comando tal cual como esta sin omitir puntos ni nada, lo único que debe modificar es el espacio donde esta el nombre de la imagen por el nombre que usted desee asignar, para esto si debe quitar los símbolos de mayor y menor.
docker build -t <Nombre de la imagen> .
EJEMPLO: docker build -t appnode .
Después de ejecutar el comando le aparecerán varios datos de la compilación del comando, pero debe estar pendiente de que al final de todo pueda ver lo siguiente que es la confirmación de la creación de la imagen, donde vera primero el ID y luego la etiqueta de la imagen.
Luego usted debe verificar que se ha creado la imagen Docker eso lo realiza con el siguiente comando.
docker images
Luego debe correr la imagen docker que se previamente creo, para esto debe ejecutar el siguiente comando, donde debe modificar el puerto de salida, el puerto de entrada y el nombre de la imagen.
Nota: El puerto está en el 3000 por defecto, pero si usted desea que se realice a otro puerto debe realizar el mapeo sobre el puerto al que quiere exponer la aplicación, en este caso se mapeo para exponer la aplicación en el puerto 8000.
docker run -p <Port de salida>:<Port de entrada> -d <nombre de la imagen>
EJEMPLO: docker run -p 8000:3000 -d appnode
Luego puede verificar el despliegue en el localhost:8000, el localhost depende del que usted asigno para su aplicación, en este caso es el 8000, para verificar en su navegador ingrese localhost:8000 y podrá ver su aplicación como se ve a continuación.
Para realizar el despliegue de la aplicación correctamente, primero debe configurar el espacio de trabajo.
- Para el paso anterior usted debe revisar la guía 0 de kubrenetes, para configurar correctamente la región, el grupo de recursos y el cluster con el que se desea trabajar.
Luego de realizar el paso anterior usted debe crear el namespace donde alojara su aplicación, para hacer eso usted debe ejecutar el siguiente comando en su terminal.
ibmcloud cr namespace-add <my_namespace>
ibmcloud cr namespace-add pruebanamespace
Luego debe crear la imagen docker en el container register de IBM Cloud, para realizar esta acción debe ejecutar los siguientes comandos y podrá ver lo que aparece en la siguiente imagen, donde aparecen todos los namespaces que tenga creados.
ibmcloud cr build --tag us.icr.io/<namespace>/<nombre de la imagen> .
ibmcloud cr build --tag us.icr.io/pruebanamespace/appnodemongos .
ibmcloud cr namespace-list
Despues de eso debe crear el servicio del despliegue en kubernetes para realizar eso ejecutara los siguientes comandos y para verificar que se realizo correctamente vera la siguiente imagen.
kubectl create deployment <nombreimagen>--image=us.icr.io/<manespace> /<nombreimagen>
kubectl create deployment appnodemongos --image=us.icr.io/pruebanamespace/appnodemongos
Luego usted debe exponer la imagen docker en el puerto que configuro.
kubectl expose deployment/<nombreimagen> --type=NodePort --port=<Port entrada>
kubectl expose deployment/appnodemongos --type=NodePort --port=3000
Para verificar el despliegue de la imagen usted primero debe verificar el nombre de su cluster, eso lo puede hacer con el siguiente comando.
ibmcloud cs clusters
Despues debe tomar nota de la ip publica del cluster ejecutando el siguiente comando.
ibmcloud cs workers <nombre del cluster>
ibmcloud cs workers iks-demo
Luego debe verificar el nombre del servicio que se ha creado, esta acción la puede realizar ejecutando el siguiente comando.
kubectl get services
Verifique en su navegador la aplicación en la dirección como vera a continuación:
<IP publica>:<NodePort>
169.47.168.98:30925
- Habilitar aplicaciones Node.js existentes para despliegue en la nube https://cloud.ibm.com/docs/node?topic=nodejs-enable_existing&locale=es
- Contenerizar una aplicacion web Node.js https://nodejs.org/de/docs/guides/nodejs-docker-webapp/
- Instalacion de docker en SO Ubuntu https://docs.docker.com/install/linux/docker-ce/ubuntu/