On 9/25/2019 8:31 AM, Mike the Wolf wrote:
El martes, 24 de septiembre de 2019 16:40:56 CDT, Eriel Perez escribió:
Hola colegas.

Alguien aqui ha trabajado con kubernetes? lo ha implementado?

Tengo algunas dudas.

Gracias.


Date una vuelta por aca https://www.okd.io/#v3

_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu



Encontre un articulo muy bueno que me esclarecio algunas dudas. Aqui las comparto con la lista.

-----1------ (https://openwebinars.net/blog/docker-kubernetes-y-openshift/)


 Docker, Kubernetes y OpenShift

¿Quieres aclarar conceptos sobre Cloud Computing y sobre las tecnologías que se utilizan? Aquí te contamos los aspectos más importantes sobre contenedores y las tecnologías Docker, Kubernetes y OpenShift.


   Contenedores

Los contenedores es un término que está muy de moda en los últimos tiempos, y lo que nos permiten es tener una partición aislada dentro de un sistema operativo. Es algo parecido a una máquina virtual, pero mucho más liviano, porque un contenedor suele partir el núcleo del sistema operativo con los demás contenedores.

*El uso de contenedores tiene una serie de ventajas que queremos destacar:*

 * *Cada aplicación está aislada y se va a ejecutar en un contenedor*,
   por lo que cada una tiene su conjunto de librerías y la
   actualización de un contenedor no afecta.
 * *Se tiene un menor tamaño de hardware*, porque, como hemos dicho,
   son más livianos que un sistema operativo virtualizado, que una
   máquina virtual que tiene todas las características de una máquina
   completa, y los contenedores comparten normalmente el núcleo de
   sistema del sistema.
 * *La implementación es muy rápida*, porque al ser tan liviano, el
   inicio, la parada y la actualización de los contenedores se hace una
   manera muy ágil.
 * *Minimiza el impacto frente a cambios*, ya que al tener cada
   aplicación en un contenedor, si una aplicación cambia y hay que
   actualizarla, no afecta a las demás.


   Docker

*Docker es una tecnología que nos permite trabajar con contenedores*, más en concreto con un tipo de contenedores llamados contenedores de aplicación, que están especializados en implantación de aplicaciones web.

Es una virtualización ligera, como comentamos anteriormente, con la que se aprovecha mejor el hardware, y el contenedor finalmente es un sistema de archivos mínimo para que la aplicación funcione.

 * *El contenedor es autosuficiente*, solo se necesita una imagen para
   crearlo el contenedor.
 * De una forma muy simple podríamos entender una imagen como *“un
   sistema operativo con las aplicaciones ya instaladas”*.
 * El proyecto Docker nos ofrece un repositorio con imágenes con las
   que podemos trabajar, llamado *Docker Hub*.
 * Otro aspecto muy importante es que *un contenedor suele ejecutar un
   solo proceso*. Por ejemplo, si tenemos una base de datos es un
   contenedor, si tenemos una aplicación con PHP es un contenedor con
   un servidor web.


   Componentes de Docker

De forma muy básica podemos diferenciar varios componentes en Docker:

 * *Docker Engine*: Es un demonio Docker y es el responsable de
   ejecutar los contenedores. Corre sobre cualquier distribución de
   Linux y expone una API externa para la gestión de imágenes y
   contenedores.
 * *Docker Client*: Es el cliente de línea de comando (CLI) que nos
   permite interactuar con el Docker Engine. Se puede configurar para
   trabajar con un Docker Engine local o remoto.
 * *Docker Registry*: Es el repositorio de imágenes generadas por el
   Docker Engine, y nos permite distribuir nuestras imágenes. Podemos
   instalar un registro privado, o hacer uso de uno público como Docker
   Hub.


   Kubernetes

*Docker nos permite la ejecución de contenedores y trabaja en un servidor*, por lo que nos lo interesante sería tener un clúster de servidores donde los contenedores se fueran ejecutando en distintos servidores, y que además hubiera un control de esos contenedores. Aquí es donde aparece Kubernetes.

*Podemos definir Kubernetes como un orquestador de contenedores*, ya que es el responsable de que los contenedores que vamos a tener estén conectados pero se ejecuten en distintos en distintos nodos.

Está escrito en Go y originalmente fue un proyecto de Google, pero que rápidamente pues se alió con la Linux Foundation para crear una nueva fundación llamada Cloud Native Computing Foundation (CNCF), donde ahora mismo se desarrolla el proyecto.

Es un proyecto muy reciente, ya que comenzó en 2015, pero está en pleno auge y cada vez se utiliza más.


   Ventajas de Kubernetes

Las principales ventajas que ofrece Kubernetes son:

 * *Tolerancia a fallos*: asegura que el servicio y los contenedores
   siempre están en ejecución.
 * *Escalabilidad dinámica*: permite escalar de forma sencilla los
   contenedores.
 * *Actualizaciones continuas*: se puede actualizar las versiones de
   forma fácil.
 * *Despliegues automáticos.*
 * *Enrutamiento a nuestras aplicaciones*: permite enrutar y tener
   nombres de dominio o de máquinas para acceder.
 * *Balanceo de carga*: balancea la carga entre los distintos contenedores.
 * *Volúmenes persistentes*: al igual que en Docker, los contenedores
   tienen una característica que es que la información que tienen es
   efímera, es decir, se pierde, por lo tanto son necesarios mecanismos
   de volúmenes externos para guardar la información de la aplicación.


   OpenShift

*Kubernetes es un proyecto que se puede utilizar por sí mismo*, y están surgiendo muchos productos que se basan en él, siendo OpenShift uno de ellos.

*OpenShift es un producto que internamente utiliza Kubernetes*, que lo que hace es mejorar la funcionalidad del mismo introduciendo nuevas características.

Es la plataforma de desarrollo, con características de Cloud Computing en la capa de Plataforma como Servicio (PaaS), de Red Hat.

La Plataforma como Servicio de Cloud Computing ofrece la posibilidad a un desarrollador de tener una infraestructura donde colocar su aplicación con características de Cloud Computing, como la escalabilidad o el pago por uso, es decir, se usan más o menos recursos en función de las necesidades, y se paga según se consuman más o menos recursos.

*OpenShift permite que el desarrollador se centre en el desarrollo de aplicaciones y que no tenga que saber cómo funciona internamente Docker y Kubernetes*, ya que le permite desplegar aplicaciones de una manera muy sencilla con la funcionalidad y las ventajas de tener un sistema como Kubernetes, que internamente facilita esta implantación.

Se puede utilizar en la integración continua del desarrollo de una aplicación, para terminar implantando la aplicación en OpenShift.

Podemos trabajar con OpenShift con una aplicación web o con cliente de línea de comandos.


   Principal diferencia de OpenShift con Kubernetes

La novedad más importante que diferencia a OpenShift de Kubernetes es que *las imágenes Docker que se utilizan en Kubernetes las tenemos que generar nosotros, mientras que OpenShift tiene la característica de source2image*, que a partir de un repositorio con nuestro código, es capaz de crear una nueva imagen Docker de forma automática y es la que va a utilizar internamente.

Por lo tanto el desarrollador se centra en su desarrollo, tiene el mismo en un repositorio GitHub e internamente OpenShift es capaz de, a partir de una imagen base de un lenguaje de programación, extraer el contenido de este repositorio y crear una nueva imagen.


   Ventajas que ofrece OpenShift

OpenShift tiene las mismas ventajas que el uso de Kubernetes que vimos anteriormente, pero además ofrece algunas ventajas adicionales:

 * Gestión más sencilla de proyectos y usuarios.
 * Conjunto de imágenes base con el que podemos trabajar.
 * Asignación de forma automática de las rutas para acceder a la
   aplicación.
 * Gestiona de forma sencilla los volúmenes.
 * Se puede incluir en un flujo de integración continua y entrega continua.
 * Tiene ya incluidas herramientas de métricas y monitorización.


   Conclusiones

Tras todo lo visto anteriormente ya te puedes hacer una idea de cómo funciona el ecosistema del trabajo con contenedores:

 * Lo más básico de trabajar con Docker, que trabaja con contenedores
   en una máquina.
 * Posteriormente con Kubernetes, que gestiona los contenedores que se
   ejecutan en un conjunto de máquinas.
 * Y OpenShift se puede decir que es una versión mejorada de
   Kubernetes, que añade la posibilidad de que un desarrollador, sin
   conocimientos de Docker y Kubernetes, pueda utilizar las ventajas de
   Kubernetes en un sistema sencillo.




----2----(https://openwebinars.net/blog/kubernetes-vs-openshift/)


 Kubernetes vs OpenShift

Conoce las principales diferencias que existen entre Kubernetes y Openshift, dos tecnologías que han cobrado gran importancia en los últimos tiempos.

Vamos a ver tanto las similitudes como las diferencias que existen entre ambos proyectos.

*Kubernetes es un gestor de contenedores*, que permite gestionar los contenedores que se ejecutan en un clúster de ordenadores.

OpenShift, que trabaja internamente con Kubernetes, es la plataforma de desarrollo de la empresa Red Hat, que tiene características de Cloud Computing en la capa de Plataforma como Servicio o PaaS, y añade nuevas funcionalidades que Kubernetes no tiene.


   Proyecto vs producto

La primera diferencia entre ambas tecnologías es que podemos entender Kubernetes como un proyecto de código abierto, mientras que OpenShift es un producto.

Realmente se puede decir que OpenShift es una distribución certificada de Kubernetes, de las muchas que existen, que podemos ver en esta página:

https://www.cncf.io/certification/software-conformance/#logs

*OpenShift también tiene una versión que es de código abierto, que se conoce como OKD o como OpenShift Origin*. Para instalar esta versión necesitamos tener como sistema operativo Red Hat Linux o CentOS, sin embargo Kubernetes se puede instalar en cualquier distribución de Linux.


   Seguridad

En cuanto a la comparación sobre seguridad,*OpenShift por defecto tiene políticas de seguridad más estrictas que la de Kubernetes*.

Esto a veces plantea ciertos problemas, porque la mayoría de las imágenes Docker de contenedores disponibles, por ejemplo en Docker Hub, que es el repositorio oficial de Docker, no se pueden ejecutar en OpenShift, porque no permite ejecutar ciertas imágenes como root.

La gestión de autorización de recursos, que se hace por medio de RBAC (Control de Acceso Basado en Roles), se puede deshabilitar en Kubernetes. Esto no es apropiado si tenemos un Kubernetes en producción, pero en OpenShift no podemos deshabilitar las reglas de autorización.


   Build

Sobre la construcción de imágenes, *Kubernetes trabaja con imágenes de contenedores, pero esas imágenes las debemos crear nosotros o utilizar un software adicional que automatice esa creación*, pero Kubernetes por si solo no puede crear imágenes de contenedores.

Sin embargo, en OpenShift, al estar pensada para desarrolladores que no te necesitan conocer en profundidad cómo funcionan los contenedores y como funciona Kubernetes, *tiene diversos métodos de construcción de imágenes*, como por ejemplo desde un Dockerfile o con la característica soucer2image.


   Gestión de las imágenes

*OpenShift mejora la gestión de las imágenes con un nuevo recurso llamado ImageStream*, que mejora el recurso Image de Kubernetes.

Con OpenShift es más fácil trabajar con las etiquetas de las imágenes, y además tiene un sistema que detecta la versión de la imagen ha cambiado, porque tiene una nueva etiqueta, lanza un despliegue de forma automática para implantar la nueva versión de la aplicación.


   Ingress vs Routers

*En Kubernetes tenemos el recurso Ingress*, que nos permite asociar una ruta a nuestra aplicación. En OpenShift se le ha cambiado el nombre y la implementación y se conoce como Routers.

*En OpenShift se utiliza internamente un proxy inverso HAProxy*, mientras que en Kubernetes el recurso Ingress lo podemos implementar con distintas soluciones, ya sea con un proxy inverso nginx, con Traefick o con otras soluciones.

Se podría decir que las rutas de OpenShift, porque se lleva trabajando más tiempo que el proyecto Kubernetes en el tema de asignación de ruta, es más madura, pero también hay que decir que el recurso Ingress de Kubernetes las últimas versiones está evolucionando de una manera muy positiva.


   Ingress vs Routers

Finalmente compararemos los mecanismos que utilizan estas tecnologías para crear el conjunto de recursos para que una aplicación funcione.

Por ejemplo, si necesitamos instalar un WordPress, necesitaremos una base de datos y un despliegue de WordPress, por lo que van a ser contenedores distintos y deben ser persistentes, por lo tanto hay que crear también volúmenes para que la información no desaparezca.

*Todos los recursos que se crean para instalar una aplicación se pueden empaquetar.*

Kubernetes normalmente utiliza una herramienta, llamada Helm, para empaquetar todos los recursos que nos permiten implantar una aplicación, sin embargo OpenShift utiliza un recurso que se llama Template.

En esta caso podemos decir que *Helm de Kubernetes es mucho más flexible y permite muchas más funcionalidades que los Templates de OpenShift*.

La versión actual de Helm, utilizando un componente que se llama Tiller, que se ejecuta en un pod que debe tener muchos privilegios, es incompatible con la política de seguridad de OpenShift, y por lo tanto optaron por utilizar otro mecanismo para empaquetar las aplicaciones.


   Conclusión

Como conclusión podemos decir que *OpenShift es una distribución de Kubernetes que mejora ciertos aspectos y añade nuevas funcionalidades*, pero que aprovecha todas las ventajas de la implantación de aplicaciones en un clúster de servidores como las que ofrece Kubernetes.

Con Kubernetes se necesita un equipo de sistemas para que mantenga el clúster, mientras que OpenShift está claramente centrado en el desarrollador, para que no necesite conocer en profundidad los conceptos de contenedores y orquestadores de contenedores, y se centre en el desarrollo de la aplicación, y de forma sencilla sea capaz de implantar su aplicación en un entorno de Cloud Computing, que internamente utiliza Kubernetes.

_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu

Responder a