Capítulo 1. Una plataforma de aplicaciones Kubernetes
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
OpenShift proporciona a tus aplicaciones potencia de computación distribuida sin obligarte a convertirte en un experto en computación distribuida. Traducido a la jerga, eso significa que OpenShift es una plataforma como servicio (PaaS).
OpenShift incluye herramientas para crear aplicaciones desde el código fuente en pipelines componibles. Añade una interfaz gráfica basada en navegador, la Consola Web de OpenShift, para la implementación y gestión de cargas de trabajo. Puedes apuntar y hacer clic para configurar las conexiones de red, el monitoreo y las alertas, y las reglas para escalar automáticamente las cargas de trabajo. Un clúster OpenShift aplica actualizaciones de software a sí mismo y a sus nodos sin tiempo de inactividad del clúster.
OpenShift es un producto de Red Hat. Puedes ejecutarlo en tu portátil, en un clúster de máquinas físicas o virtuales, en los principales proveedores de nubes y como servicio gestionado. Como la mayoría del software de Red Hat, OpenShift se desarrolla como un proyecto de código abierto, la OpenShift Kubernetes Distribution (OKD). A su vez, OpenShift se basa en dos pilares de código abierto: los contenedores de aplicaciones y el orquestador de contenedores Kubernetes.
Contenedores Linux
Los contenedores son una unidad atómica de ejecución. Cada instancia en ejecución de un contenedor se estampa a partir de una imagen de la Iniciativa de Contenedores Abiertos (OCI ) que empaqueta un ejecutable de aplicación con todas las piezas que necesita para ejecutarse. Estas dependencias pueden incluir bibliotecas compartidas, programas auxiliares, tiempos de ejecución de lenguajes y cualquier otra cosa que requiera la aplicación. Un paquete autocontenido de este tipo es más fácil de distribuir entre un equipo, en una serie continua de lanzamientos en un servidor, y a nodos arbitrarios de un clúster.
Las imágenes de los contenedores se almacenan en un repositorio a menudo llamado registro de contenedores. Las instalaciones del núcleo de Linux aíslan y median los contenedores en ejecución. Un contenedor en ejecución tiene su propio sistema de archivos y una parte definida de los recursos del nodo donde se ejecuta. Este aislamiento permite a un orquestador programar contenedores en un nodo con recursos suficientes sin evaluar todas las demás cargas de trabajo que se ejecuten allí en busca de posibles conflictos en nombres de archivos, números de puertos de red u otros recursos.
Kubernetes
OpenShift es una distribución de Kubernetes. Kubernetes es un proyecto de código abierto iniciado en Google y desarrollado por un grupo de empresas y particulares desde su lanzamiento en 2014. Esta comunidad ha adoptado un gobierno formal a través de la Cloud Native Computing Foundation (CNCF). Red Hat ha sido uno de los principales contribuyentes a Kubernetes desde el inicio del proyecto, y OpenShift se desarrolla en colaboración con la comunidad de Kubernetes.
Kubernetes en OpenShift es como el núcleo de Linux en una distribución de Linux. Una distribución de Linux combina el núcleo con los programas más familiares que utilizas directamente. También toma algunas decisiones básicas sobre cómo iniciar sesión, dónde se almacenan tus archivos y qué software es esencial, permitiéndote hacer un trabajo útil con el sistema sin tener que construirlo completamente desde cero.
Kubernetes define un conjunto de recursos comunes y una API para manipularlos. Esos recursos describen el estado deseado y rastrean el estado real del clúster y de las cosas que se ejecutan en él. Kubernetes intenta que el estado real de un recurso coincida con su estado deseado. Esto se repite durante toda la vida del clúster. Este ciclo continuo de vigilancia y atención se denomina bucle de reconciliación.
Kubernetes por sí solo no basta para mantener el software en producción. Hay muchas decisiones que tomar y componentes que configurar antes de que puedas hacer mucho con él. Imagina que tienes el código fuente de una aplicación y la tarea de implementarla en un clúster de Kubernetes. ¿Cómo compilarás el código fuente o lo emparejarás con su intérprete para empaquetarlo en una imagen de contenedor? ¿Necesitará tu proceso de construcción otros recursos informáticos, como un servidor de construcción especializado? Una vez construida la imagen, ¿dónde se almacenará para que tu clúster pueda acceder a ella? ¿Un registro público de contenedores (y dependencia externa) como Docker Hub o Quay? ¿O necesitarás ejecutar tu propio registro? Es probable que tu programa dependa de otros programas, como una base de datos o un servidor de aplicaciones. ¿Dónde y cómo se ejecutarán? ¿Puedes ejecutarlos en el clúster, o tendrás que mantener otro sistema? Estas son consideraciones básicas. Al abordarlas se obtiene una cápsula en funcionamiento y un nuevo conjunto de preguntas: ¿Cómo debe conectarse tu aplicación con el mundo exterior? ¿Cómo debe gobernarse la capacidad de escalar la aplicación, o desplegar nuevas versiones de la misma?
Qué añade OpenShift
OpenShift se basa en el núcleo de Kubernetes para añadir funciones y los componentes que las soportan. Algunos de sus desarrolladores originales llamaron a Kubernetes "una plataforma para construir plataformas". OpenShift les tomó la palabra. Proporciona la automatización y resistencia de la infraestructura moderna, al tiempo que te permite centrarte en el código de tu aplicación(Figura 1-1).
Este libro se centra en las funciones que utilizarás para ejecutar tus aplicaciones. No es una guía de administración del sistema OpenShift. En la siguiente sección se presentan algunas de las funciones de OpenShift para desarrolladores. Utilizarás la mayoría de ellas en los capítulos siguientes.
Consola Web
La Consola Web de OpenShift es una vista gráfica del clúster y de tus aplicaciones. Como su nombre indica, se ejecuta en un navegador web. La Consola Web te permite hacer todo lo necesario para implementar y ejecutar tus proyectos de software con controles gráficos y formularios para la configuración, en lugar de rebuscar entre tantas líneas e indentaciones de YAML subyacente. La consola muestra las conexiones entre servicios con una vista topológica de los componentes de la aplicación, y muestra el consumo de recursos del proyecto, la aplicación y el contenedor con indicadores y tablas gráficas(Figura 1-2).
Catálogos de Software Curados: Una tienda de aplicaciones OpenShift
La Consola Web también agrega catálogos de software, desde plantillas de aplicaciones hasta Operadores de Kubernetes. El OperatorHub de la Consola Web, por ejemplo, es como una tienda de aplicaciones de Kubernetes. Puedes utilizarlo para encontrar e implementar bases de datos, colas de mensajes y otros middleware, el tipo de componentes de los que dependen casi todas las aplicaciones. Al igual que las aplicaciones de tu dispositivo móvil, los Operadores mantienen sus aplicaciones en funcionamiento y actualizadas con las últimas funciones y correcciones.
CI/CD: Canalizaciones
OpenShift incorpora el sistema de integración continua y desarrollo continuo (CI/CD) al clúster. Las canalizaciones de OpenShift te permiten componer un proceso para construir, probar, empaquetar y lanzar tu aplicación. En este libro, pasarás de iniciar sesión en la consola web de OpenShift a hacer que la plataforma construya e implemente automáticamente tu código cuando envíes cambios a tu repositorio de código fuente. Una vez que hayas establecido las configuraciones de implementación y los activadores de compilación, OpenShift pasará a un segundo plano en el desarrollo diario de aplicaciones.
Redes y malla de servicios
OpenShift puede simplificar o incluso automatizar gran parte del tedioso trabajo de conectar los componentes de la aplicación entre sí y con el mundo exterior de tus usuarios y clientes.
Las Rutas OpenShift configuran un proxy inverso de Capa 7 incluido para conexiones HTTP externas a Servicios de clúster internos con equilibrio de carga. Un Servicio es un punto final estable que representa los pods en ejecución de una aplicación, ya que éstos pueden ir y venir con el escalado, la conmutación por error o las actualizaciones. Una ruta especifica los nombres de host DNS externos para los que retransmite el tráfico y el Servicio al que debe dirigirse ese tráfico.
OpenShift también dispone de una malla de servicios complementaria, Istio. Una malla de servicios mide y controla cómo se conectan los servicios entre sí y con el mundo exterior. Los detalles de Istio están fuera del alcance de este libro, pero una vez que domines la implementación de aplicaciones en OpenShift, puedes aprender más sobre las mallas de servicios e Istio en Introducing Istio Service Mesh for Microservices, de Christian Posta y Burr Sutter (O'Reilly).
Métricas, monitoreo y alertas integradas de Prometheus
OpenShift basa sus funciones de monitoreo de los recursos del clúster en el proyecto de código abierto Prometheus. La Consola Web presenta gráficos que muestran el uso de CPU, memoria y red de todo el clúster, un proyecto, una implementación o hasta un contenedor en ejecución. La Figura 1-3 muestra el uso de CPU de una implementación.
OpenShift puede recopilar métricas específicas de la aplicación a partir de programas que producen el formato de datos estándar de Prometheus. Las bibliotecas exportadoras de Prometheus disponibles para muchos lenguajes equipan a una aplicación para entregar estadísticas sobre su estado interno de forma interoperable.
Resumen
Ya has visto cómo OpenShift superpone herramientas para desarrolladores y gestión de aplicaciones sobre Kubernetes para facilitar la entrega de tu software y mantenerlo en funcionamiento. El siguiente capítulo presenta conceptos clave para crear e implementar aplicaciones en OpenShift.
Get OpenShift para desarrolladores, 2ª edición now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.