Configuración de un pipeline de CI/CD para despliegues en la nube
La entrega rápida de software es importante para ejecutar sus aplicaciones en la nube de manera eficiente. Jenkins es un producto popular para automatizar los pipelines de integración continua (CI) y despliegue continuo (CD) para cargas de trabajo en Oracle Cloud.
Arquitectura
En esta arquitectura de referencia, Jenkins se aloja en Oracle Cloud Infrastructure para centralizar la automatización de compilación y ampliar el despliegue. El proceso de integración continua crea una aplicación y la despliega mediante Oracle Cloud Infrastructure Registry (OCIR) y Container Engine for Kubernetes (OKE). GitHub se utiliza para gestionar el código fuente.
GitHub proporciona integración de gancho web, por lo que Jenkins comienza a ejecutar compilaciones y pruebas automatizadas después de cada protección de código. Se despliega una aplicación web de ejemplo como parte del pipeline CI/CD, al que los usuarios finales pueden acceder desde el cluster de Container Engine for Kubernetes. Para simplificar el proceso, Terraform se utiliza para la automatización de infraestructura.
En esta arquitectura de referencia, Terraform aprovecha un módulo de Terraform capaz de desplegar Jenkins en varias configuraciones diferentes desde una máquina virtual de Jenkins hasta una configuración de nodo de controlador (servidor) y agente (trabajador). Esto significa que el módulo de Jenkins se puede incorporar a otros despliegues de arquitectura para casos de uso que no sean de Kubernetes (por ejemplo, el desarrollo de aplicaciones APEX, WebLogic en máquinas virtuales, etc.).
La configuración del agente significa que el entorno se puede volver a configurar para proporcionar diferentes números de instancias informáticas que reflejen los requisitos de carga de trabajo. Esto incluye la posibilidad de sustituir máquinas virtuales de agente para evitar problemas de acumulación de dependencias antiguas, conflictos de dependencia transitorias y compilaciones que funcionan con dependencias no declaradas.
Los nodos de VM que ejecutan Jenkins se configuran mediante una imagen de VM predefinida que se ha creado previamente con todo el software necesario para admitir Jenkins.
En el siguiente diagrama, se ilustra esta arquitectura de referencia.

Descripción de la ilustración cicd-oci.png
- 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 grandes distancias pueden separarlas (entre países o incluso continentes).
- Dominios de disponibilidad
Los dominios de disponibilidad son centros de datos independientes e 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 energía o refrigeración, o la red de dominio de disponibilidad interna. Por lo tanto, es poco probable que un fallo en un dominio de disponibilidad afecte a otros dominios de disponibilidad de la región.
- Red virtual en la nube (VCN) y subredes
Jenkins se ejecuta en una instancia informática de máquina virtual (VM) desplegada en VCN que puede segmentar en subredes. Jenkins se aloja en la subred pública regional A y Container Engine for Kubernetes se despliega en la subred pública regional B.
- Instancia informática
Jenkins se despliega en una VM de instancia de Compute. El cluster de Container Engine for Kubernetes también ejecuta sus nodos en instancias de Compute.
- Motor de contenedores para Kubernetes
Container Engine for Kubernetes es un servicio totalmente gestionado, escalable y de alta disponibilidad que puede utilizar para desplegar las aplicaciones en contenedores en la nube. Especifique los recursos informáticos que necesitan las aplicaciones y Container Engine for Kubernetes los aprovisiona en Oracle Cloud Infrastructure en un arrendamiento existente.
- Registro
Registry es un registro gestionado por Oracle que permite simplificar el desarrollo del flujo de trabajo de producción. El registro facilita a usted, como desarrollador, almacenar, compartir y gestionar artefactos de desarrollo como imágenes de Docker.
- Jenkins
Jenkins es un servidor de automatización de código abierto que permite a los desarrolladores crear, probar y desplegar software de forma fiable. Jenkins soporta el modo maestro/agente, donde el maestro delega la carga de trabajo de los proyectos de creación en varios nodos de agente. Una sola instalación de Jenkins puede alojar varios proyectos o proporcionar diferentes entornos para las compilaciones y pruebas.
Recomendaciones
Sus requisitos pueden diferir de la arquitectura descrita aquí. Utilice las siguientes recomendaciones como punto de inicio.
- Formas informáticas
Esta arquitectura utiliza una imagen del sistema operativo Oracle Linux con la forma VM.Standard2.1 para alojar tanto el servidor Jenkins como los nodos de cluster Container Engine for Kubernetes. Si su aplicación necesita más memoria o núcleos, puede elegir una forma diferente.
- 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 subredes en VCN. Utilice bloques CIDR que se encuentran dentro del espacio de direcciones IP privadas estándar.
Después de crear VCN, puede cambiar, agregar y eliminar sus bloques CIDR.
Esta arquitectura utiliza un VCN público para alojar Container Engine for Kubernetes. También puede utilizar un VCN privado. En ese caso, utilice un gateway NAT para proporcionar al cluster acceso a través de Internet público.
- Jenkins
Esta arquitectura despliega Jenkins en una instancia informática. Se utiliza un nodo maestro de Jenkins para crear el pipeline CI/CD. Si tiene varios pipelines para crear y ejecutar en paralelo, puede utilizar un nodo de agente de Jenkins para desarrollar más pipelines.
- Motor de contenedores para Kubernetes
Esta arquitectura despliega el cluster de Container Engine for Kubernetes. Los nodos de trabajador se despliegan en un sistema operativo VM.Standard2.1 Oracle Linux. Esta arquitectura utiliza tres nodos de trabajador en el cluster, pero puede crear hasta 1000 nodos en cada cluster.
- Registro
Esta arquitectura despliega Registry como registro Docker privado para uso interno. Las imágenes de Docker se transfieren y extraen del registro. También puede utilizar Registry como registro público de Docker, lo que permite a cualquier usuario con acceso a Internet y conocimiento de la URL adecuada extraer imágenes de repositorios públicos de Oracle Cloud.
Consideraciones
- Escalabilidad
Puede ampliar la aplicación actualizando el número de nodos de trabajador en el cluster de Container Engine for Kubernetes, en función de la carga. También puede escalar reduciendo el número de nodos de trabajador en el cluster. Al crear un servicio en el cluster, puede crear un equilibrador de carga para distribuir el tráfico entre los nodos asignados a ese servicio. Para Jenkins, puede utilizar el nodo maestro de Jenkins para crear más agentes para varios pipelines.
- Disponibilidad de la Aplicación
Los dominios de fallo proporcionan la mejor resiliencia dentro de un único dominio de disponibilidad. Puede desplegar instancias de Compute que realicen las mismas tareas en varios dominios de disponibilidad. Este diseño elimina un único punto de fallo introduciendo redundancia.
- Gestión
Esta arquitectura utiliza una aplicación web de ejemplo alojada en GitHub para el control de origen. El registro se utiliza en el pipeline de creación para almacenar la imagen de creación de Docker para la aplicación.
- Seguridad
Utilice políticas para restringir quién puede acceder a los recursos de Oracle Cloud Infrastructure que tiene la compañía y cómo.
Container Engine for Kubernetes está integrado con Oracle Cloud Infrastructure Identity and Access Management (IAM), que proporciona una autenticación fácil con la funcionalidad de identidad Oracle Cloud Infrastructure nativa.
Desplegar
El código necesario para desplegar esta arquitectura de referencia está disponible en GitHub. Puede extraer el código a Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarlo. También puede descargar el código de GitHub en el equipo, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.
- Desplegar mediante Oracle Cloud Infrastructure Resource Manager:
- Haga clic en
Si aún no ha iniciado sesión, introduzca las credenciales de arrendamiento y usuario.
- Revise y acepte las condiciones.
- Seleccione la región en la que desea desplegar la pila.
- Siga las indicaciones e instrucciones de la pantalla para crear la pila.
- Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
- Espere a que finalice 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.
- Si no son necesarios otros cambios, vuelva a la página Detalles de Pila, haga clic en Acciones de Terraform y seleccione Aplicar.
- Haga clic en
- Despliegue mediante la CLI de Terraform:
- Vaya a GitHub.
- Descargue o clone el código en la computadora local.
- Siga las instrucciones de
README.md
.
Explorar más
Obtenga más información sobre el despliegue de aplicaciones en contenedores en Kubernetes en la nube.
- Visión general de Container Engine for Kubernetes
- Descripción general del registro
- Marco de mejores prácticas para Oracle Cloud Infrastructure
- terraform-oci-arch-ci-cd en Github
- Plugins de Jenkins para OCI
- Imágenes de documentación de Oracle Cloud Infrastructure
- oracle-quickstart / oci-jenkins en Github (módulo para desplegar solo componentes de Jenkins)
- Gestión de dependencias de Maven
- Mejores prácticas de pipeline de Jenkins
Log de Cambios
Este log muestra cambios significativos:
6 de enero de 2021 | Se han agregado instrucciones para desplegar la arquitectura mediante Oracle Cloud Infrastructure Resource Manager. |
5 de agosto de 2022 | Se ha agregado contenido nuevo al tema Arquitectura.
Se han agregado nuevos enlaces al tema Explorar más. |