Despliegue de un pipeline de integración y despliegue continuos de Jenkins dockerizado mediante Terraform en Oracle Cloud Infrastructure

La entrega rápida de software es importante para ejecutar de forma eficiente sus aplicaciones en la nube. Jenkins es un producto conocido para automatizar los pipelines de integración y despliegue continuos (CI/CD) para cargas de trabajo en Oracle Cloud. Puede alojar Jenkins en Oracle Cloud Infrastructure (OCI) para centralizar la automatización de compilación y ampliar el despliegue a medida que crezcan sus proyectos de software.

Arquitectura

Esta arquitectura de referencia muestra cómo utilizar Terraform para desplegar un agente de controlador de Jenkins en contenedores en una única máquina virtual de Oracle Linux. Cuando se despliega, se creará una instancia informática de Oracle Linux. Esta instancia alojará dos contenedores de Docker independientes encima: uno para el controlador de Jenkins y el otro para el agente de Jenkins.

La solución también guarda la configuración del controlador y los espacios de trabajo del agente en el almacenamiento de bloques de OCI, que está asociado a la instancia informática. Se creará una VCN independiente en OCI para alojar todos los servicios del despliegue.

En el siguiente diagrama se ilustra esta arquitectura de referencia.


A continuación se muestra la descripción de dock-jenkins-cicd-pipe.png
Descripción de la ilustración dock-jenkins-cicd-pipe.png

dock-jenkins-cicd-pipe-oracle.zip

Esta arquitectura contiene los siguientes componentes:
  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones, y las grandes distancias pueden separarlas (entre países e incluso continentes).

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, es improbable que un fallo en un dominio de disponibilidad afecte a los otros dominios de la región.

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red definida por software y personalizable que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan un control completo de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Instancia informática

    Jenkins se despliega en una máquina virtual de instancia informática con dos contenedores en ejecución, uno como controlador y otro como agente.

  • Tabla de Direccionamiento

    Las tablas de rutas virtuales contienen reglas para enrutar el tráfico desde subredes hasta destinos fuera de una VCN, normalmente a través de gateways.

  • Lista de Seguridad

    Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.

  • Jenkins

    Jenkins es un servidor de automatización de código abierto que permite a los desarrolladores crear, probar e implementar software de forma fiable. Jenkins soporta el modo maestro/agente, donde el maestro delega la carga de trabajo de creación de proyectos a varios nodos de agente. Una única instalación de Jenkins puede alojar varios proyectos o proporcionar diferentes entornos para creaciones y pruebas.

  • Almacenamiento de bloques

    Con los volúmenes de almacenamiento en bloque, puede crear, asociar, conectar y mover los volúmenes de almacenamiento, así como cambiar el rendimiento de los mismos para que se ajusten a los requisitos de almacenamiento, rendimiento y aplicación. Después de asociar y conectar un volumen a una instancia, puede utilizar el volumen como si se tratara de una unidad de disco duro normal. También puede conectar un volumen y asociarlo a otra instancia sin perder datos. Se utilizará para guardar la configuración del controlador y los espacios de trabajo del agente de Jenkins.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida al desplegar un pipeline de integración y despliegue continuos de Jenkins en contenedores mediante Terraform en OCI. Sus requisitos pueden ser diferentes de la arquitectura descrita aquí.
  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Seleccione bloques CIDR que no se superpongan con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor de nube) a la que desea configurar conexiones privadas.

    Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.

    Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

    Utilizar subredes regionales.

  • Seguridad

    Utilice Oracle Cloud Guard para controlar y mantener la seguridad de los recursos en OCI de forma proactiva. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a operadores y usuarios en busca de actividades arriesgadas. Cuando se detecta una configuración incorrecta o una actividad no segura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que pueda definir.

    Para los recursos que requieren la máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta de políticas de seguridad definida por Oracle que se basa en las mejores prácticas. Por ejemplo, los recursos de una zona de seguridad no deben ser accesibles desde la Internet pública y deben cifrarse con claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, OCI valida las operaciones con respecto a las políticas de la receta de zona de seguridad y deniega las operaciones que violan cualquiera de las políticas.

  • Cloud Guard

    Clone y personalice las recetas por defecto que proporciona Oracle para crear recetas personalizadas de detector y responsable de respuesta. Estas recetas le permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de almacenamiento de objetos con visibilidad definida como públicos.

    Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa que supone el mantenimiento de varias configuraciones.

    También puede utilizar la función Lista gestionada para aplicar determinadas configuraciones a los detectores.

  • Listas de seguridad

    Utilice listas de seguridad para definir reglas de entrada y salida que se apliquen a toda la subred.

Consideraciones

Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.

  • Rendimiento

    Para obtener el mejor rendimiento, asegúrese de que la instancia informática tiene suficientes núcleos y memoria, que se basa en la compilación u otras tareas que ejecuta Jenkins.

  • Seguridad

    Utilice políticas para restringir quién puede acceder a los recursos de OCI que tiene su compañía y cómo hacerlo.

  • Disponibilidad

    Este es un diseño mínimo para ponerte en marcha lo más rápido posible. Para obtener una mayor disponibilidad, puede consultar el despliegue descrito en la arquitectura de referencia, Desplegar Jenkins en modo controlador/agente, al que puede acceder desde el tema Más información, a continuación.

  • Costo

    El costo de esta implantación se basa en las horas de recursos informáticos de la máquina virtual en ejecución.

Despliegue

El código de Terraform para desplegar un pipeline de integración y despliegue continuos de Jenkins en contenedores mediante Terraform en OCI está disponible en Oracle Cloud Infrastructure Resource Manager o en GitHub.

  • Despliegue mediante la pila de ejemplo en Oracle Cloud Infrastructure Resource Manager:
    1. Haga clic en Despliegue en Oracle Cloud.

      Si aún no ha iniciado sesión, introduzca el arrendamiento y las credenciales de usuario.

    2. Seleccione la región en la que desea desplegar la pila.
    3. Siga las indicaciones y las instrucciones en pantalla para crear la pila.
    4. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
    5. Espere a que se complete el trabajo y revise el plan.

      Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.

    6. Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
  • Despliegue con la CLI de Terraform:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en la computadora local.
    3. Siga las instrucciones del documento README (Léame).

Explorar más

Obtenga más información sobre el despliegue en un pipeline de integración y despliegue continuos de Jenkins en contenedores mediante Terraform en OCI.

Revise estos recursos adicionales:

Acuses de recibo

Autor: Ahmed Mansour