Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Red_Hat_OpenShift_-_vitaminando_Kubernetes_con_...

 Red_Hat_OpenShift_-_vitaminando_Kubernetes_con_nube_hibrida.pdf

Nacho Álvarez

January 27, 2020
Tweet

More Decks by Nacho Álvarez

Other Decks in Technology

Transcript

  1. 3

  2. 3 • Ingeniero en Informática por la UCO • Certificado

    Scrum Manager en 2012 y PMP en 2017 • Trayectoria profesional: • Desarrollo Web • Desarrollo / Integración distribuciones GNU/Linux • Android mobile + backend developer (WUL4) • Técnico especialista Área de Innovación (Redsys) • Analista Técnico en Soluciones Sectoriales (Redsys) • Responsable área Servicios Digitales (Redsys Salud)
  3. 4 Docker Kubernetes ¿Nube híbrida? OpenShift: Enter The Matrix OpenShift:

    Vitaminando Kubernetes OpenShift: Build strategies Demo Time! INTRODUCCIÓN
  4. 5

  5. 6 La idea detrás de Docker es crear contenedores ligeros

    y portables para las aplicaciones software que puedan ejecutarse en cualquier máquina con Docker instalado. Docker Un poco de contexto Los dos elementos más básicos de Docker son las imágenes y los contenedores: El concepto «Imagen» viene siendo en sí nuestro «sistema operativo» osea podemos decir que tenemos una imagen de Centos, Ubuntu o Debian. Lo bueno de las imágenes es que pueden ser más que solo un sistema operativo y podemos decir que tenemos una imagen de Nginx o una imagen de MySQL o de Memcached ,que estos últimos en si son servicios pero en Docker podemos crear imágenes a partir de unos servicios ya instalados y hasta configurados. Los contenedores de Docker nacen a partir de una imagen y en estos contenedores podemos solo ejecutar e instalar servicios, viene siendo como crear una máquina virtual a partir de una imagen (snapshot) pero muchísimo más ligera.
  6. 7 Cuando utilizamos los contenedores de Docker, en lugar de

    virtualizar un sistema operativo completo, solo creamos un pequeño kernel con las librerías y dependencias necesarias para realizar nuestra tarea, obviando todo lo demás. De esta manera, los contenedores no son un sistema operativo virtual como tal, sino más bien se entienden como “paquetes” que se ejecutan aislados sobre el sistema operativo principal, pero sin depender de un sistema virtual. Docker Un poco de contexto
  7. 8

  8. 10 Un cluster Kubernetes consiste en una serie de máquinas

    llamadas nodos que ejecutan aplicaciones containerizadas. Cada cluster al menos tiene un nodo. Kubernetes Un poco de contexto El nodo sirve de host a los pods, que son los componentes de la aplicación. El Control Plane gestiona los nodos y los pods del cluster. En entornos de producción, el Control Plane puede correr sobre varias máquinas y un cluster sobre varios nodos físicos para proveer tolerancia a fallos y alta disponibilidad. La implementación principal de Kubernetes API server es kube-apiserver, que está diseñado para escalar desplegando más instancias. Puedes correr varias instancias de kube-apiserver para el balanceo entre instancias. Etcd es una base de datos de tipo (clave, valor) que se utiliza para mantener la configuración global del clúster. La información contenida en etcd es crítica y debe tenerse siempre un plan de copias de seguridad. kube-scheduler es el componente de Kubernetes encargado de decidir en qué nodo se ejecuta un determinado contenedor.
  9. 11 kubelet es el componente más importante de un nodo

    minion, cuya función principal es asegurarse de que todos los contenedores que deben ejecutarse en este nodo se están ejecutando. Es decir, cuando a kubelet se le ordena poner en marcha un contenedor, lo pone en marcha y luego monitoriza que siga en marcha (reiniciándolo si el contenedor termina debido a una excepción no controlada) hasta que le llega la orden de parar el contenedor. Kubernetes Un poco de contexto kube-proxy es el encargado de gestionar la red virtual y las IPs virtuales asignadas a cada contenedor kube-controller-manager es el encargado de ejecutar los distintos controladores. Un "controlador" es el encargado de asegurar que en todo momento se cumple el estado deseado de la aplicación y del clúster (p. ej. que en todo momento haya 5 instancias de un contenedor determinado). Varios proveedores de cloud permiten disponer de un clúster Kubernetes correctamente instalado y levantado en cuestión minutos, sin necesidad de montarlo por tu cuenta.
  10. 14

  11. 15 Cloud privada, pública e híbrida ¿Cloud híbrida? En términos

    generales, las nubes privadas son entornos de nube diseñados exclusivamente para un único usuario final, donde el entorno suele ejecutarse detrás del firewall de ese usuario. Todas las nubes se convierten en nubes privadas cuando la infraestructura de TI subyacente se destina a un solo cliente con acceso completamente aislado. Una nube pública es un depósito de recursos virtuales —desarrollados a partir de hardware que pertenece y es operado por una empresa de terceros—, que se aprovisiona y asigna automáticamente a múltiples clientes a través de una infraestructura de autoservicio. Es una forma sencilla de escalar horizontalmente las cargas de trabajo que experimentan fluctuaciones inesperadas de las demandas. Una nube híbrida es un entorno de TI aparentemente único creado a partir de muchos otros entornos. Las características de las nubes híbridas son complejas, y los requisitos pueden variar. Todos los sistemas de TI se convierten en nubes híbridas cuando las aplicaciones pueden trasladarse a varios entornos distintos, pero que aún están conectados, y fuera de ellos. Al menos algunos de esos entornos deben provenir de recursos de TI consolidados que puedan ampliarse, según se requiera.
  12. 16

  13. 21 RedHat OpenShift Vitaminando Kubernetes Una build en OpenShift es

    el proceso por el cual el contenido de aplicación, código o paquetes son construidos dentro de una imagen Un proyecto en OpenShift es un mecanismo de aislamiento utilizado para proporcionar a los usuarios la habilidad de crear recursos manteniéndolos separados y seguros de otros usuarios de OpenShift. Sería el equivalente de un namespace en Kubernetes. La información guardada en los pods no es persistente, si necesitamos que nuestras aplicaciones tengan persistencia la solución es añadir volúmenes (almacenamiento persistente) a los pods para que lo puedan utilizar los contenedores. Los volúmenes son considerados otro recurso de Kubernetes. Un despliegue en OpenShift es el proceso de instanciar una imagen para crear contenedores/pods que ejecuten la aplicación
  14. 22 RedHat OpenShift Build strategies Docker strategy: esta estrategia invoca

    el comando docker build, y por tanto espera un repositorio con un Dockerfile y todos los artefactos requeridos para producir una imagen ejecutable. Source-to-Image strategy: se utiliza para construir imágenes Docker listas para ejecutar inyectando el código de la aplicación dentro de un contenedor y ensamblando una nueva imagen. La nueva imagen incorpora la imagen base y el código construido y está lista para usar con el comando 'docker run'. S2I soporta builds incrementales, que reutilizan dependencias previamente descargadas, artefactos previamente construidos, etc. Pipeline strategy: esta estrategia permite a los desarrolladores definir un pipeline en Jenkins para su ejecución por parte del plugin correspondiente de Jenkins. La build puede ser iniciada, monitorizada y gestionada por OpenShift Container Platform de la misma manera que cualquier otro tipo de build. Custom strategy: esta estrategia permite a los desarrolladores definir una imagen específica para el proceso completo de construcción. Utilizar tu propia imagen de construcción te permite personalizar tu proceso de construcción.