En la entrada anterior se explicó cómo configurar localmente Kubectl para administrar por consola el clúster de Kubernetes y se creó el namespace dbigcloud. Ahora es el momento de desplegar una aplicación con alta disponibilidad sobre dicho clúster.
En el post de hoy se verá cómo desplegar una aplicación en alta disponibilidad en el clúster de Kubernetes creado anteriormente en Nutanix. La aplicación está basada en el ejemplo: Deploying PHP Guestbook application with Redis de la documentación oficial de Kubernetes. Ha sido adaptado para Nutanix y añadidas opciones de monitorización de PODs.
Esta consta de tres servicios distintos y tres despliegues. Dispone de los siguientes componentes:
- Servicio para el frontend que utiliza una interfaz programada con PHP, del cual se despliega tres PODs.
- Servicio para el master backend, que utiliza Redis como base de datos en memoria, únicamente se despliega un POD.
- Servicio para el slave backend, también utiliza Redis y se sincroniza con el master, se despliegan dos PODs.
Todos los ficheros YAML han sido adaptados para Nutanix y subidos al repositorio de GitHub de DBigCloud. Podéis utilizarlo para seguir el ejemplo o incluso para hacer demostraciones o POCs. Siempre bajo vuestra responsabilidad. En el post se configurará cada una de las opciones de la aplicación mediante ficheros YAML ya que es más cómodo.
Desplegando una aplicación con alta disponibilidad en un clúster de Kubernetes de Nutanix
Tal y como se ha comentado varias veces, el componente para desplegar aplicaciones en Nutanix es Calm. A través de este, se desplegará la aplicación de hoy. Es muy importante haber seguido las entradas anteriores, ya que si te has saltado algún paso, posiblemente no puedas desplegar PODs.
Lo primero que hay que hacer es crear un blueprint que va a servir de plantilla. Para ello hay que dirigirse al apartado de Blueprints, pulsar Blueprint -> Multi VM/Pod Blueprint.
El siguiente paso será identificar el Blueprint y asignarlo a un proyecto, este debe de estar creado anteriormente y asignado a un proveedor de tipo Kubernetes tal y como se ha visto en posts anteriores.
Una vez identificado se abrirá una nueva ventana que permitirá crear máquinas virtuales y PODs, permitiendo su configuración. Lo primero que hay que realizar es añadir tres "PODs", uno para cada componente. Realmente esto no es el equivalente de un POD en Kubernetes sino un Servicio. Se realiza pulsando en el símbolo + de la ventana que aparece abajo a la derecha. Es recomendable añadir un nombre descriptivo a cada componente para poderlos identificar.
Si se observa la imagen anterior, en la columna de la derecha aparece opciones para configurar los "PODs". Tal y como se comentó anteriormente, toda la configuración se realizará mediante ficheros YAML. Por ello es importante pulsar sobre Spec Editor, elegir YAML y luego pulsar sobre Edit para que se abra una ventana de mayor tamaño que será más cómoda de usar.
En Nutanix, cada "POD" (servicio) está compuesto por:
- Servicio
- Contenedor
- Despliegue
De esta forma es necesario crear las especificaciones de cada componente de la APP. Si accedéis al ejemplo en el repositorio de DBigCloud os encontrareis con la siguiente estructura:
- Frontend
- container.yaml
- deployment.yaml
- service.yaml
- Slave
- container.yaml
- deployment.yaml
- service.yaml
- Master
- container.yaml
- deployment.yaml
- service.yaml
En el propio editor, hay que añadir cada una de las especificaciones de los ficheros del repositorio: Pod Deployment Spec, Container Spec y Service Spec. Esto se hace por cada uno de los "PODs" creados.
IMPORTANTE: En el post anterior se creó el namespace dbigcloud, que es el utilizado en cada uno de los "PODs". También es importante conservar los tabulados de los ficheros YAML ya que sino aparecerán errores.
Una vez se hayan rellenado todas las especificaciones de cada uno de los componentes de la aplicación es posible guardar el blueprint y posteriormente crear una aplicación basada en él.
Para crearla hay que pulsar en Launch. En la nueva ventana hay que rellenar el nombre de la aplicación: DBigCloud_redis_example.
Se pulsa en Create y esta comenzará a desplegarse. Este proceso puede tardar aproximadamente 15/20 minutos. Hay que tener en cuenta que las imágenes de los contenedores se encuentran en una ubicación remota. Una vez haya terminado se podrá comprobar que aparece en estado Running, si no ha habido problemas.
Desde la propia ventana de aplicaciones se pueden observar diferentes escenarios. Por ejemplo, desde Audit se puede comprobar los logs sobre la creación de la aplicación. En la pestaña Services, se muestran los servicios de Kubernetes desplegados y muestra el estado de cada uno.
Ahora ya se encuentra la aplicación funcionando. Si se accede por consola mediante kubectl se pueden ver los PODs que hay en el namespace DBigCloud. Para ello se lanza el comando:
kubectl get pod --namespace dbigcloud
Si se observa la imagen anterior, están cada uno de los PODs de Kubernetes que se han desplegado correctamente.Para acceder a la aplicación desde el navegador, es necesario conocer la IP del clúster y el puerto que utiliza en la aplicación. Esto es debido a que se ha especificado el tipo de acceso como NodePort. Para conocer el puerto se deben listar los servicios del namespace dbigcloud con el comando:
kubectl get service --namespace dbigcloud
Sobre el servicio frontend se puede ver como en la columna PORT aparece 80:32558/TCP esto quiere decir que se hará una redirección del puerto 32558 del clúster al puerto 80 del servicio. Ahora que se conoce el puerto de acceso, hay que conocer que IP tiene asignada el clúster utilizando el comando:
kubectl config view
Con esto ya es posible acceder a la aplicación a través de la URL: https://10.42.94.133:32558 y dejar tus comentarios en el libro de visitas.
En el siguiente post se verá cómo actualizar los nodos del clúster con un clic.
Kubernetes en Nutanix:
- Cómo desplegar un clúster de Kubernetes
- Cómo ampliar el clúster de Kubernetes
- Cómo acceder a los logs del clúster de Kubernetes
- Cómo crear un proveedor de tipo Kubernetes para Nutanix Calm
- Cómo acceder al clúster de Kubernetes mediante kubectl
- Cómo desplegar una aplicación en alta disponibilidad sobre el clúster de Kubernetes
Compártelo: