Configuración de PaaS con OpenShift Origin

Plataforma como servicio ( PaaS ) es un tipo de servicio en la nube donde el consumidor controla las implementaciones de software y la configuración de aplicaciones (principalmente web), y el proveedor proporciona servidores, redes y otros servicios para gestionar esas implementaciones. El proveedor puede ser externo (proveedor público) o interno (departamento de TI en una organización). Hay muchos proveedores de PaaS, como Amazon (https://aws.amazon.com), Heroku (https://www.heroku.com), OpenShift (https://www.openshift.com), y así sucesivamente. En el pasado reciente, los contenedores parecen haberse convertido en la elección natural para las aplicaciones que se implementan.

Anteriormente en este capítulo, examinamos cómo podemos crear una solución de CI/CD utilizando Shippable y Heroku, donde implementamos nuestra aplicación utilizando el PaaS de Heroku. Heroku es un servicio de nube pública, alojado en Amazon Web Service ( AWS ). OpenShift (https://github.com/openshift/origin) es un PaaS que aprovecha tecnologías como Docker y Kubernetes (https://kubernetes.io) entre otras, proporcionando un ecosistema completo para dar servicio a sus aplicaciones habilitadas para la nube. Como hablamos sobre Kubernetes en el Capítulo 8, Orquestación y alojamiento de Docker , se recomienda encarecidamente leer eso primero antes de continuar con esta receta. Voy a tomar prestados algunos conceptos de ese capítulo. Veamos el siguiente diagrama:

Diagrama

Kubernetes proporciona administración de clústeres de contenedores con características como programación de pods y descubrimiento de servicios, pero no tiene el concepto de una aplicación completa, ni construye y despliega imágenes de Docker a partir del código fuente. OpenShift amplía el modelo base de Kubernetes y llena esas brechas. Si avanzamos y miramos el Capítulo 8, Plataforma de orquestación y alojamiento de Docker , para la sección de Kubernetes, verás que para implementar una aplicación, necesitamos definir Pods, Servicios y Controladores de replicación. OpenShift intenta abstraer toda esa información y permitirte definir un solo archivo de configuración que se encargue de todo el cableado interno. Además, OpenShift proporciona otras características como implementación automática a través de push de código fuente, administración y gestión centralizadas de aplicaciones, autenticación, aislamiento de equipos y proyectos, y seguimiento y limitación de recursos, todas las cuales son necesarias para la implementación empresarial.

En esta receta, configuraremos OpenShift Origin todo en uno en una máquina virtual y iniciaremos un pod. En la siguiente receta, veremos cómo construir y desplegar una aplicación a través del código fuente utilizando la función de compilación De código a imagen ( S2I ). El ejemplo se puede encontrar en https://github.com/openshift/origin/tree/master/examples/sample-app .

Preparación

Configura una máquina virtual con CentOS 7.5 y al menos 4 GB de RAM, y accede a ella mediante SSH.

  1. Instala Docker:
$ curl https://get.docker.com | bash
  1. Agrega una entrada para un registro no seguro al archivo de configuración del demonio de Docker ( /etc/docker/daemon.json ):
$ cat /etc/docker/daemon.json
{ "insecure-registries": [ "172.30.0.0/16" ] }
  1. Inicia Docker:
$ systemctl start docker
  1. Instala el paquete wget :
$ yum install -y wget
  1. Descarga los binarios de OpenShift más recientes desde la página de lanzamientos en github (https://github.com/openshift/origin/releases):
$ cd /tmp
$ wget https://github.com/openshift/origin/releases/download/v3.10.0/openshift-origin-client-tools-v3.10.0-dd10d17-linux-64bit.tar.gz
  1. Utiliza tar para extraer el archivo y mueve el binario oc a un directorio en tu ruta ( /usr/local/bin ):
$ tar -xvzf openshift-origin-client-tools-v3.10.0-dd10d17-linux-64bit.tar.gz
$ cd openshift-origin-client-tools-v3.10.0-dd10d17-linux-64bit
$ sudo cp oc /usr/local/bin
$ cd ~

Cómo hacerlo…

Ahora que tenemos una máquina virtual configurada con Docker en ejecución y los binarios de OpenShift instalados, podemos iniciar nuestro clúster utilizando el binario oc . OpenShift tiene una consola web a la que puedes acceder, pero para que funcione correctamente, OpenShift necesitará determinar tu dirección IP. Si tu máquina virtual tiene más de una, es posible que debas indicarle explícitamente a OpenShift cuál utilizar al iniciar el clúster. En este ejemplo, mi dirección IP pública es 142.93.14.79 ; tu IP será diferente:

$ oc cluster up --public-hostname=<tu ip>

Diagrama

Después de unos minutos, el clúster estará en ejecución y verás algo como esto:

Diagrama

En este punto, tenemos dos opciones; podemos instalar nuestra aplicación a través de la shell de SSH o podemos utilizar la consola web. Probemos con la consola web primero y asegurémonos de que esté funcionando correctamente. Abre la URL de la consola web en tu navegador y accede con las credenciales que se muestran en la salida al iniciar tu clúster.

NOTA

Probablemente recibirás una advertencia de tu navegador de que el certificado SSL/TLS no coincide. Está bien y es esperado; puedes omitir esta advertencia y continuar.

Ahora que estás accediendo, deployemos una aplicación de ejemplo. Haz clic en el icono de Ruby en el catálogo:

Diagrama

Esto abre un asistente que nos ayudará a agregar nuestra aplicación al clúster. Haz clic en el botón Siguiente:

Diagrama

Haz clic en el enlace del repositorio de ejemplo y se autocompletará el formulario para nosotros; luego, haz clic en el botón Crear:

Diagrama

Así de fácil, nuestra aplicación ruby-ex se creó. Haz clic en el botón Cerrar:

Diagrama

Ahora deberías ver la aplicación enumerada en la consola web; una vez que la aplicación esté en ejecución, verás una URL donde puedes ver la aplicación en acción:

Diagrama

Abre la URL de la aplicación en tu navegador y deberías ver algo como lo siguiente:

Diagrama

Ahora que tenemos la aplicación de ejemplo de Ruby en ejecución, eliminémosla y hagamos lo mismo, pero utilizando la shell de SSH. Bajo aplicaciones, puedes hacer clic en la opción Acciones y seleccionar Eliminar. Esto eliminará la aplicación para nosotros:

Diagrama

Vuelve a la shell de SSH y creemos una nueva aplicación, pero esta vez utilizando el binario oc . Para este ejemplo, utilizaremos uno de los ejemplos integrados que vienen con OpenShift. Utilizaremos el ejemplo django-psql-persistent , que tiene dos servicios, un servicio web de Django y un servicio de base de datos de PostgreSQL:

$ oc new-app django-psql-persistent

Diagrama

Después de unos minutos, la aplicación se creará y deberías ver algo como lo siguiente:

Diagrama

Cuando ejecutamos el comando oc status , podemos ver la URL para nuestro proyecto:

$ oc status

Diagrama

Cuando abrimos esa URL en nuestro navegador, podemos ver que la aplicación está en ejecución:

Diagrama

Cuando vuelvas a la consola web, puedes ver los detalles de la aplicación que acabas de desplegar:

Diagrama

Si queremos eliminar la aplicación utilizando el binario oc , es bastante fácil. Solo necesitamos utilizar el comando delete :

$ oc delete dc/django/psql-persistent$ oc delete dc/postgresql

Diagrama

Cómo funciona…

Cuando OpenShift se inicia, todos los servicios de Kubernetes se inician también. Luego, nos conectamos al maestro de OpenShift a través de la CLI y solicitamos que inicie un pod. Esa solicitud se reenvía a Kubernetes, que inicia el pod. OpenShift actúa como intermediario entre tú y Kubernetes.

Hay más…

  • Si ejecutas el comando docker container ls , verás los contenedores correspondientes en ejecución

  • Si deseas detener el clúster de OpenShift, puedes ejecutar el siguiente comando:

$ oc cluster down

Ver también