Uso de spinnaker con Kubernetes para entrega continua

Uso de spinnaker con Kubernetes para entrega continua

  • ITOps y DevOps
6 min de lectura Actualizado Jun 23, 2021

Puntos clave: Spinnaker están una plataforma de entrega continua de código abierto diseñada para despliegues multi-nube, mejorando los procesos automatizados de lanzamiento de software, especialmente con Kubernetes. Se integra con diversas herramientas de CI y soporta diversas estrategias de despliegue para una gestión eficaz de aplicaciones.

  • Soporta despliegues en AWS, Azure y GCP.
  • Se integra con Jenkins y Travis CI para flujos de trabajo más ágiles.

En esta era de tecnología acelerada, cada vez más organizaciones y equipos se son orientados hacia prácticas ágiles con ciclos de vida de desarrollo de software que evolucionan rápidamente. Con ello, la Entrega Continua (CD) se ha convertido en una parte fundamental del proceso DevOps, donde todo el proceso de lanzamiento de software está automatizado: la construcción, las pruebas, el despliegue.

Con la popularidad de Kubernetes para desarrollar aplicaciones contenedorizadas, está creciendo la necesidad de una plataforma de entrega continua fiable con soporte nativo para despliegues en clústeres Kubernetes.

En este artículo, exploraremos Spinnaker, una herramienta que facilita la integración de Kubernetes en una tubería de CD.

¿Qué es el spinnaker?

Spinnaker

Spinnaker es una plataforma de entrega continua de código abierto dirigida a despliegues multi-nube. Inicialmente desarrollado por Netflix como sucesor de su plataforma interna Asgard, Spinnaker ha evolucionado ahora a una plataforma independiente de entrega continua.

Spinnaker proporciona las herramientas necesarias para gestionar tu código desde el commit hasta la entrega multi-nube gracias a su potente capa de abstracción.

(Lee nuestra completa introducción sobre el spinnaker.)

Características del spinnaker

Veamos las características clave del Spinnaker.

Despliegue multi-nube

Características clave del spinnaker

Spinnaker soporta nativamente el despliegue de aplicaciones en múltiples proveedores de nube. Soporta plataformas en la nube como AWS, Azure, GCP, Oracle Cloud, Cloud Foundry y OpenStack.

Integraciones CI

Las robustas y automatizadas Pipelines de lanzamiento de Spinnaker pueden integrarse fácilmente con otras herramientas como:

  • Jenkins
  • Travis CI
  • Evento Git
  • Empleos en CRON

Esto permite a los desarrolladores realizar eficazmente diversas tareas, desde la recogida de artefactos hasta el disparo de la canalización.

Integraciones de monitorización y notificaciones

Spinnaker puede integrarse fácilmente con soluciones de monitorización como Datadog, Prometheus, SignalFx y Stackdriver para la recogida y análisis de métricas.

Además, te puede configura Spinnaker para que colabore con servicios como Slack, HipChat y SMS para proporcionar notificaciones.

Apoyo para diferentes estrategias de despliegue

Spinnaker incluye estrategias de despliegue integradas como highlander, canary y red/black, y puede configurarse fácilmente para adaptarse a cualquier estrategia de despliegue personalizada.

Además, la capacidad de Spinnaker para Crea y desplegar imágenes inmutables permite a los desarrolladores:

  • Despliega más rápido con retrocesos más fáciles
  • Gestiona los problemas de deriva de configuración de forma mucho más eficaz.

Prácticas de seguridad integradas

Spinnaker cuenta con potentes características de seguridad como control de acceso integrado basado en roles con soporte para múltiples mecanismos de autenticación, incluyendo Oauth, LDAP, certificados X.509, Azure Groups, etc. Además, permite aislar convenientemente los proyectos para máxima seguridad.

Otras características de Spinnaker, como los juicios manuales e integraciones con chaos monkeys, Permite a los desarrolladores revisar y probar los despliegues para detectar fallos de instancias antes de lanzarlos.

Entrega continua con spinnaker

Spinnaker consta de dos conjuntos de características principales que son útiles en el despliegue:

  • Gestión de aplicaciones
  • Despliegue de aplicaciones

Gestión de aplicaciones

La función de gestión de aplicaciones consiste en todas las herramientas necesarias para visualizar y gestiona infraestructura en la nube. Spinnaker opera con un modelo de servicios donde son se utilizan múltiples servicios para facilitar un producto. Este tipo de servicios a veces son denominan "aplicaciones" o "microservicios".

Las aplicaciones, clústeres y grupos de servidores son los componentes clave en la función de gestión de aplicaciones. Ellos Define los servicios. Luego, los balanceadores de carga y cortafuegos exponen esos servicios al mundo en general.

  • Las aplicaciones son cualquier conjunto de clústeres con balanceadores de carga y cortafuegos. Representan un servicio que debe desplegarse con todas las configuraciones de servicio e infraestructura.
  • Los clústeres son los agrupamientos lógicos de grupos de servidores. Es importante destacar que los clústeres no corresponden a los clústeres de Kubernetes. Simplemente son colecciones de grupos de servidores, independientemente de la arquitectura de hardware o software subyacente.
  • Los grupos de servidores son el recurso base de Spinnaker, que identifica el artefacto desplegable (imagen de contenedor, origen, imagen de VM, etc.) con las configuraciones básicas como número de instancias, políticas de escalado, metadatos, etc. Cuando se despliegan, estos grupos de servidores corresponden a una colección de instancias de software en ejecución como pods de Kubernetes o instancias de VM. Los grupos de servidores también pueden asociarse con balanceadores de carga y cortafuegos.
  • El balanceador de carga gestiona el tráfico a cada instancia de los Grupos de Servidores asociándolo con protocolos y puertos de entrada.
  • El cortafuegos actúa como una pasarela para gestionar el acceso al tráfico de red. Además, incorpora reglas de cortafuegos definidas por rangos de IP, protocolos de comunicación y puertos para permitir el tráfico.

Despliegue de aplicaciones

El conjunto de características de despliegue crea y gestiona las canalizaciones de entrega continua. Consiste en:

  • Pipeline. El componente central del despliegue de aplicaciones Spinnaker, el pipeline consta de múltiples etapas donde se son realizan diferentes tareas para desplegar la aplicación. Estos Pipelines pueden integrarse con otras herramientas de CI y métodos de notificación para construir una pipeline CI/CD sin interrupciones.
  • Etapa. Este están un conjunto de tareas secuenciales que se deben realizar en la pipeline. Spinnaker proporciona algunas etapas comunes que pueden integrarse fácilmente en la pipeline. Por ejemplo, podemos proporcionar etapas como Despliegue, Ruta, Escalar, Deshacer el Despliegue, etc., para Kubernetes. Además, los usuarios pueden Crea etapas personalizadas utilizando webhooks y ejecutar trabajos.
  • Tarea. El componente más pequeño de la función de despliegue, una tarea consiste en una tarea específica que debe realizarse dentro de una etapa de la pipeline.

Ejemplo sencillo: tubería de CD de spinnaker

El diagrama ilustra un flujo de trabajo sencillo de CI/CD que incorpora Spinnaker para construir una imagen contenedor y desplegarla en un clúster Kubernetes:

Spinnaker CD Pipeline

Veamos cada paso del flujo de trabajo:

  1. Los desarrolladores commiten o envían código push a un repositorio centralizado.
  2. El código terminado hace que Jenkins pruebe y construya un contenedor.
  3. Este contenedor se traslada a un registro de contenedores.
  4. Spinnaker escucha una nueva imagen en el registro de contenedores y activa la cadena de entrega para el despliegue.
  5. La tubería Spinnaker crea las configuraciones necesarias (configuraciones de aplicaciones, instancias, escalado, etc.) y despliega el contenedor en un clúster Kubernetes objetivo tras una revisión manual.

Crear un flujo de trabajo sólido de CI/CD permite a los desarrolladores automatizar fácilmente casi todas las etapas del proceso de desarrollo y despliegue.

Además, aprovechar herramientas como Spinnaker, que ofrece una sólida pipeline de entrega continua con Kubernetes, conducirá a ciclos de vida de desarrollo de software más rápidos, eficientes y menos propensos a errores. Consulta el tutorial oficial de Hello Deployment para una configuración completa de pipeline de despliegue.

(Crea tu propia cadena CI/CD.)

Ampliación de las Pipelines Spinnaker

En esta sección, vamos a ampliar un poco más el flujo de trabajo anterior. Considera un escenario con los siguientes requisitos:

  • Despliega la aplicación en un entorno de staging y luego la envía al entorno de producción tras las pruebas y la revisión manual.
  • Despliega la aplicación en clústeres Kubernetes alojados tanto en Azure como en AWS.

Podemos simplemente configurar una tubería Spinnaker para satisfacer todos los requisitos anteriores, como se muestra a continuación.

Tubería de spinnaker

En la pipeline anterior, hemos definido múltiples etapas para acomodar despliegues en dos proveedores de nube diferentes. (Esto están posible gracias al robusto soporte multi-nube de Spinnaker.) Una vez que las configuraciones iniciales son hechas, la pipeline ejecutará múltiples etapas simultáneamente para bakear y desplegar las imágenes en clústeres Kubernetes tanto en Azure como en AWS.

Luego, te puede verifica las imágenes y el despliegue de etapas en la fase de juicio manual y, finalmente, desplegarlos en los entornos de producción de AWS y Azure. Las capacidades de Spinnaker eliminan la necesidad de Crea Pipelines separados o Define flujos de trabajo diferentes para gestionar despliegues e infraestructura en despliegues multi-nube. Todas las configuraciones e infraestructuras necesarias son gestionadas a través de Spinnaker.

Estos Pipelines pueden ampliarse aún más para proporcionar notificaciones que informen a los equipos de DevOps sobre la progresión del pipeline, el estado del despliegue, etc.

Además, la capacidad de integrar chaos monkey permite a los desarrolladores probar fácilmente la resiliencia de una aplicación desplegada simulando fallos de instancias y abordar cualquier problema identificado.

Los casos de utiliza de Spinnaker son infinitos. Sea cual sea el requisito, Spinnaker puede adoptarse para facilitarlo. Spinnaker incluso puede desplegarse dentro de un clúster Kubernetes y utilizar Pipelines para desplegar aplicaciones en el propio clúster anfitrión.

Pipeline robusta de CI/CD

La combinación de Spinnaker y Kubernetes ayuda a los usuarios a Lograr el objetivo final de contar con una pipeline CI/CD robusta y automatizada para despliegues de aplicaciones contenedorizadas con buenas prácticas integradas.

Podemos disfrutar de los siguientes beneficios aprovechando estas dos tecnologías.

  • Mapeo de recursos fluido usando el proveedor Kubernetes v2
  • Integrar fácilmente usando estrategias avanzadas de desarrollo
  • Despliegues de rollback fáciles. Spinnaker utilizará los manifiestos versionados de las aplicaciones para estos rollbacks
  • Despliega fácilmente con soporte nativo para K8s
  • Supervisa la salud de las aplicaciones desplegadas y del clúster Kubernetes
  • Integra con múltiples almacenes de artefactos y registros de imágenes para obtener fácilmente aplicaciones e imágenes de contenedores
  • Aprovecha excelentes funciones de Kubernetes como escalado, balanceo de carga y alta disponibilidad en el despliegue de aplicaciones
  • Integrar y extiende fácilmente usando herramientas de terceros dentro de la cadena CI/CD

Obtén el máximo partido a los contenedores

Spinnaker y Kubernetes se complementan para Obtén el máximo partido al despliegue de aplicaciones contenedorizadas. Spinnaker es la plataforma líder para gestionar la entrega continua multi-nube con una comunidad activa que incluye a Netflix, Google, Microsoft, etc.

Lecturas relacionadas

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.