Cree un pipeline de integración y despliegue continuos mediante el servicio Oracle Cloud Infrastructure DevOps y las funciones de Oracle Cloud Infrastructure
Una entrega rápida de software es esencial para ejecutar sus aplicaciones en la nube de forma eficiente. El servicio Oracle DevOps proporciona una plataforma continua de integración y despliegue (CI/CD) para desarrolladores. Puede utilizar el servicio DevOps para crear, probar y desplegar fácilmente software y aplicaciones en Oracle Cloud. DevOps los pipelines de creación y despliegue reducen los errores basados en cambios y reducen el tiempo que los clientes dedican a crear y desplegar versiones.
El servicio también proporciona repositorios Git privados para almacenar su código y admite conexiones a repositorios de código externos. Tanto si migra cargas de trabajo a Oracle Cloud Infrastructure (OCI) desde entornos locales u otras nubes, como si desarrolla nuevas aplicaciones en OCI, puede utilizar el servicio DevOps para simplificar el ciclo de vida de entrega de software.
Arquitectura
En esta arquitectura de referencia, creará y desplegará la aplicación python mediante los servicios OCI DevOps y OCI Function.
El código fuente de la aplicación se aloja en un repositorio de código DevOps. El usuario final confirma el código en el repositorio de código. Una nueva confirmación en el repositorio de código disparará el inicio de un pipeline de compilación. El pipeline de compilación sigue un flujo definido por el usuario para crear los artefactos de función que desplegar en los servicios de función de OCI. La salida de la creación se almacena en el registro de contenedor como imágenes de Docker. A continuación, el pipeline de despliegue utiliza la imagen creada del registro de contenedores para desplegarla en el entorno de funciones de OCI. El siguiente diagrama de arquitectura muestra cómo se crea y despliega una aplicación mediante una imagen por defecto y una imagen personalizada (mediante un Dockerfile).
Para simplificar la configuración de este ejemplo de flujo de trabajo de integración y despliegue continuos, esta aplicación de ejemplo utiliza Terraform para automatizar la creación y configuración de recursos DevOps.
El siguiente diagrama ilustra esta arquitectura de referencia.
Descripción de la ilustración cicd-pipe-devops-functions-arch.png
cicd-pipe-devops-functions-arch-oracle.zip
- Región
Una región de OCI 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). La arquitectura utiliza una única región.
- Proyecto DevOps
Agrupación lógica de recursos DevOps necesarios para implantar un flujo de trabajo de integración y despliegue continuos. Los recursos DevOps pueden ser artefactos, pipelines de creación, pipelines de despliegue, conexiones externas, disparadores y entornos. Los proyectos DevOps facilitan la activación del registro, la supervisión y las notificaciones de todos los recursos DevOps.
- Crear pipeline
Un pipeline de compilación toma un ID de confirmación de los repositorios de código fuente y utiliza ese código fuente para ejecutar las instrucciones de compilación. Los pipelines de creación definen un juego de etapas para el proceso de creación: creación, prueba y compilación de artefactos de software, entrega de artefactos a repositorios de OCI y, opcionalmente, activación de un despliegue. Puede definir el flujo y las instrucciones de la ejecución de compilación en el archivo de especificación de compilación.
- Repositorio de código
Repositorios de Git privados alojados por el servicio DevOps. Puede almacenar, gestionar y desarrollar el código fuente con nuestros repositorios de código DevOps.
- Pipeline de despliegue
Secuencia de pasos para entregar y desplegar un juego de artefactos en un entorno de destino. El flujo y la lógica de su versión de software se pueden controlar mediante la definición de etapas que se pueden ejecutar en serie o en paralelo.
- Etapas de despliegue
Las etapas son acciones individuales que se realizan durante una ejecución de un pipeline. El pipeline de despliegue DevOps incluye los siguientes tipos de etapas predefinidos que puede utilizar en el proceso de versión:
- Despliegue dinámico: una versión incremental para Oracle Container Engine for Kubernetes (OKE), funciones o grupos de instancias
- Wait: Wait N segundos
- Aprobación manual: continúe si se da una aprobación; detenga si se rechaza una aprobación.
- Función de llamada: realice tareas o integraciones personalizadas llamando a una función y transfiera un artefacto de parámetros de solicitud.
- Artefacto DevOps
Un artefacto DevOps es una referencia o puntero a cualquier archivo, binario, paquete, manifiesto o imagen que forme parte de la aplicación. Al crear un artefacto, informe a Oracle DevOps de la ubicación de origen del artefacto real. DevOps soporta los repositorios de registro de imágenes de contenedor de OCI y registro de artefactos de OCI.
- Repositorio de artefactos
El repositorio de artefactos crea repositorios para agrupar artefactos similares. Cuando se crea el repositorio, puede cargar artefactos en él. Estos artefactos son una recopilación de archivos de texto, binarios y manifiestos de despliegue que se entregan al entorno de despliegue de destino. Cada artefacto tiene un nombre, que está formado por su ruta de acceso: versión. La ruta de acceso es una cadena para organizar los artefactos.
- Servicios de registro y notificación de OCI
El servicio de registro de OCI almacena los logs relacionados con el despliegue. La salida de tiempo de ejecución de despliegue y los resultados finales del despliegue se muestran como entradas de log. El servicio de notificaciones de OCI proporciona visibilidad del último estado del proyecto de despliegue y de sus recursos, y toma las medidas necesarias. Por ejemplo, se le notifica cuando un evento importante, como una etapa en un pipeline de despliegue en espera de aprobación. Cuando reciba el mensaje de notificación, puede ir a los pipelines de despliegue DevOps y aprobar la etapa.
- entornos de despliegue
Un entorno es una recopilación de recursos informáticos de un cliente en la que se despliegan artefactos. Los entornos pueden ser una función, una máquina virtual de recursos informáticos (VM), una instancia con hardware dedicado o un cluster de OKE.
- Cluster de Kubernetes de Oracle: OCI Container Engine for Kubernetes (OKE) es un servicio totalmente gestionado, escalable y con alta disponibilidad que puede utilizar para desplegar las aplicaciones en contenedores en la nube.
- Instancias informáticas: el servicio informático de OCI permite aprovisionar y gestionar hosts informáticos en la nube. Puede desplegar instancias informáticas con unidades que cumplan los requisitos de recursos para la CPU, la memoria, el ancho de banda de red y el almacenamiento.
- Funciones: Oracle Functions es una plataforma de funciones como servicio totalmente gestionada, multicliente, altamente escalable y bajo demanda. El servicio se basa en Oracle Cloud Infrastructure para empresas y en el motor de código abierto Fn Project.
Recomendaciones
- Asignación de memoria y timeout para funciones
Podemos modificar la configuración actualizando el archivofun.yaml, según los siguientes valores:
Descripción del parámetro Configuración Tiempo máximo de ejecución de una función - Valor por Defecto: 30
- Unidades: segundos
- parámetro func.yaml: timeout
- Variable de entorno: n/d
- Opción de la CLI de Fn: n/a
- Notas:
- Valor máximo: 300
- La práctica recomendada consiste en especificar un timeout cercano al que es probable que sea necesario, en lugar de uno mucho mayor.
Umbral máximo de memoria para una función - Valor por Defecto: 128
- Unidades: MB
- parámetro func.yaml: memoria
- Variable de entorno: FN_MEMORY
- Opción de la CLI de Fn: n/a
- Notas:
Uno de:
- 128
- 256
- 512
- 1024
- Red virtual en la nube (VCN)
Al crear una VCN, determine el número de bloques de 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 se encuentren dentro del espacio de direcciones IP privadas estándar.
Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques de CIDR.
Esta arquitectura utiliza una VCN pública para alojar OKE. También puede utilizar una VCN privada. En ese caso, utilice un gateway de NAT para otorgar acceso al cluster a través de la red pública de Internet.
- Registro de imágenes de contenedor
Esta arquitectura despliega el registro como un registro de Docker privado para uso interno. Las imágenes de Docker se envían y extraen del registro. También puede utilizar el registro como registro público de Docker, lo que permite a cualquier usuario con acceso a Internet y conocimientos de la URL correspondiente extraer imágenes de repositorios públicos en OCI.
Consideraciones
Al crear y desplegar aplicaciones Python mediante los servicios OCI DevOps y OCI Function, considere:
- DevOps soporta despliegues en OKE, hosts de Compute y funciones.
- Al desplegar un grupo de instancias en Compute, solo están soportados los hosts de Linux.
- Los artefactos desplegados con DevOps deben estar en un registro de artefactos de OCI o en un repositorio de registro de imágenes de contenedor.
- La mejor práctica es agrupar cada aplicación y todos sus microservicios en un solo proyecto.
Desplegar
El código necesario para desplegar esta arquitectura de referencia está disponible en GitHub. Puede extraer el código de Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarla. También puede descargar el código de GitHub en la computadora, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.
- Realice el despliegue con la pila de ejemplo en Oracle Cloud Infrastructure Resource Manager:
- Haga clic en
.
Si aún no ha iniciado sesión, introduzca las credenciales de usuario y arrendamiento.
- Seleccione la región en la que desea desplegar la pila.
- Siga las indicaciones e instrucciones en 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 es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
- Haga clic en
- Realice el despliegue con el código de Terraform en GitHub:
- Vaya a GitHub.
- Clone o descargue el repositorio en su computadora local.
- Siga las instrucciones del documento
README
.