Creación de un pipeline de integración y despliegue continuos para OCI Functions con acciones de GitHub
Arquitectura
Esta arquitectura utiliza GitHub Actions como sistema de integración y despliegue continuo externo para crear código, contenedorizarlo y desplegar Oracle Cloud Infrastructure Functions. En lugar de la acción GitHub, puede utilizar otras herramientas de entorno de desarrollo integrado (IDE), como GitLab o Azure DevOps.
El siguiente diagrama ilustra esta arquitectura de referencia.

Descripción de la ilustración cicd-deploy-oci-functions.png
cicd-deploy-oci-functions-oracle.zip
La arquitectura incluye los siguientes sistemas externos:
- Sistema externo (CI/CD)
El sistema externo para integración y despliegue continuos incluye el entorno de desarrollo integrado (IDE), el repositorio de código y el pipeline.
Esta arquitectura utiliza GitHub Actions como sistema de repositorio de código de despliegue e integración continua externo. Se utiliza para crear código y, a continuación, en contenedores con Docker. Cuando la imagen en contenedores está lista, GitHub Actions transfiere la imagen a un OCI Registry. Después de completar la transferencia al registro, inicia el despliegue de OCI Functions. Puede utilizar otros sistemas de integración o despliegue continuos como OCI DevOps, Azure DevOps, Gitlab o Jenkins en función de sus requisitos.
- Sistema externo (SIEM/ITSM/OTHER)
El sistema externo para SIEM e ITSM representa otros sistemas de terceros o servicios no OCI.
La agregación y el enriquecimiento de logs de auditoría de OCI, logs de servicio y eventos de seguridad son requisitos fundamentales para sistemas SIEM o ITSM externos. La centralización de estos datos permite a las organizaciones analizar, supervisar y proteger sus arrendamientos.
La arquitectura tiene 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 entre sí y puede haber grandes distancias que las separen (entre países e incluso continentes).
- Red y subredes virtuales en la nube (VCN)
Una VCN es una red personalizable y definida por software que puede configurar en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan el control 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.
- Registro
Oracle Cloud Infrastructure Registry es un registro gestionado por Oracle que permite simplificar el desarrollo y el flujo de trabajo de producción. El registro facilita el almacenamiento, el uso compartido y la gestión de artefactos de desarrollo, como imágenes de Docker. La arquitectura altamente disponible y escalable de Oracle Cloud Infrastructure garantiza que pueda desplegar y gestionar sus aplicaciones de forma fiable.
- Functions
Oracle Cloud Infrastructure Functions es una plataforma de funciones como servicio (FaaS) totalmente gestionada, multi-inquilino, altamente escalable y bajo demanda. Se basa en el motor de origen abierto Fn Project. Las funciones le permiten desplegar el código y llamarlo directamente o dispararlo en respuesta a eventos. Oracle Functions utiliza contenedores de Docker alojados en Oracle Cloud Infrastructure Registry.
- Conectores de servicio
Oracle Cloud Infrastructure Service Connector Hub es una plataforma de bus de mensajes en la nube que organiza el movimiento de datos entre servicios de OCI. Puede utilizar conectores de servicio para mover datos de un servicio de origen a un servicio de destino. Los conectores de servicio también permiten especificar opcionalmente una tarea (como una función) que se debe realizar en los datos antes de que se entreguen al servicio de destino.
Puede utilizar el hub de conector de servicio de Oracle Cloud Infrastructure para crear rápidamente un marco de agregación de registros para sistemas de información de seguridad y gestión de eventos (SIEM).
- LoggingLogging es un servicio altamente escalable y totalmente administrado que proporciona acceso a los siguientes tipos de registros de sus recursos en la nube:
- Logs de auditoría: logs relacionados con eventos emitidos por el servicio de auditoría.
- Logs de servicios: logs emitidos por servicios individuales como API Gateway, eventos, funciones, equilibrio de carga, Object Storage y logs de flujo de VCN.
- Logs personalizados: logs que contienen información de diagnóstico de aplicaciones personalizadas, otros proveedores de nube o un entorno local.
- Flujo
Oracle Cloud Infrastructure Streaming proporciona una solución de almacenamiento duradero, escalable y totalmente gestionada para la ingesta de flujos de datos continuos y de alto volumen que puede consumir y procesar en tiempo real. Puede utilizar Streaming para ingerir datos de gran volumen, como logs de aplicación, telemetría operativa, datos de flujo de clics en la web o para otros casos de uso en los que se producen y procesan datos de forma continua y secuencial en un modelo de mensajería de suscripción.
- Notifications
El servicio Oracle Cloud Infrastructure Notifications transmite mensajes a componentes distribuidos a través de un patrón de publicación y suscripción, lo que permite que los mensajes dirigidos a aplicaciones alojadas en Oracle Cloud Infrastructure sean seguros, altamente fiables, duraderos y de baja latencia.
Recomendaciones
- 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 direcciones IP privadas estándar.
Seleccione bloques de CIDR que no se solapen con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor en la nube) a la que desee 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.
- Listas de seguridad
Utilice listas de seguridad para definir las reglas de entrada y salida que se aplican a toda la subred.
- Grupos de seguridad de red (NSG)
Puede utilizar NSG para definir un juego de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de la aplicación.
- Cloud Guard
Aplique Cloud Guard en el nivel de arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa de mantener varias configuraciones.
También puede utilizar la función de lista gestionada para aplicar determinadas configuraciones a los detectores.
- Security Zones
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, no se puede acceder a los recursos de una zona de seguridad desde la Internet pública y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure 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.
- Funciones de OCI
Las aplicaciones desplegadas a través del servicio OCI Functions tienen una alta disponibilidad, escalabilidad, seguridad y supervisión. Con OCI Functions, puede escribir código en Java, Python, Node, Go, Ruby y C# (y para casos de uso avanzados, traer su propio archivo Dockerfile y VM de Graal). A continuación, puede desplegar el código, llamarlo directamente o dispararlo en respuesta a eventos.
- OCI Registry
Esta arquitectura despliega un registro público de Docker. Las imágenes de Docker se transfieren y extraen del registro, lo que permite a cualquier usuario con acceso a Internet y conocimiento de la URL correspondiente extraer imágenes de los repositorios públicos de Oracle Cloud.
Consideraciones
Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.
- Integraciones de SIEM
Para ayudar a optimizar el despliegue de la información de log agregada en las regiones y configuraciones de aplicación de un arrendamiento, puede utilizar el servicio OCI Functions.
Puede utilizar OCI Functions para transferir logs al punto final de API HTTPS del SIEM. Para ello, agregue un hub de conector de servicio de OCI regional que lea de otros servicios de OCI.
- Funciones de Agrupamiento
Como mejor práctica, puede definir varias funciones (por ejemplo, una por entorno). Si tiene varios entornos (como DEV, UAT, PROD), puede realizar un seguimiento de líneas de código independientes para cada función en un entorno independiente.
Despliegue
Descargue el código de script de automatización de GitHub, personalice el código y despliéguelo.
Puede llamar a una función que haya desplegado en OCI Functions desde:
- La CLI de Fn Project.
- Los SDK de Oracle Cloud Infrastructure.
- Solicitudes HTTP firmadas al punto final de llamada de la función. Cada función tiene un punto final de llamada.
- Otros servicios de Oracle Cloud (por ejemplo, disparados por un evento en el servicio Events) o desde servicios externos.
- Vaya a GitHub.
- Clone o descargue el repositorio.
- Para desplegar esta arquitectura, siga el archivo YAML de referencia, el código de aplicación mundial de hola de ejemplo y el documento README.
Explorar más
Para obtener más información sobre las mejores prácticas y el despliegue de integración y despliegue continuos, consulte los siguientes recursos:
- Documentación de Oracle Cloud Infrastructure
- Crear un pipeline de integración y despliegue continuos mediante el servicio Oracle Cloud Infrastructure DevOps y OCI Functions
- Integración y despliegue continuos de Oracle Quick Start DevOps con Functions mediante Terraform
- Marco de mejores prácticas para Oracle Cloud Infrastructure