Creación de un pipeline de integración y despliegue continuos para despliegues en la nube mediante acciones de Github y servicio Oracle Cloud Infrastructure DevOps
- Para evitar la exposición de todos los destinos de despliegue a un servicio que reside fuera de algunas de sus capas de seguridad.
- Las partes de un proceso de despliegue pueden diferir en función de cuándo la infraestructura como código (IaC) puede formar parte del proceso de despliegue.
- Minimice el posible impacto de la latencia en los procesos de despliegue. Por lo tanto, la ejecución del paso final se controla localmente solo con las conexiones y dependencias locales implicadas.
- Capacidad para gestionar y liberar activos de control que abarcan varios entornos en un único lugar. En lugar de tener fuentes distribuidas.
Esta arquitectura de referencia aborda estas consideraciones si tiene partes de su servicio fuera de Oracle Cloud (por ejemplo, GitHub y otras dentro de OCI, como DevOps). Esta arquitectura de referencia analiza el proceso de despliegue (CD) en plataformas de Oracle Cloud Infrastructure(OCI): Oracle Container Engine for Kubernetes (OKE), Functions y Compute. La imagen de contenedor común se crea mediante un servicio independiente (por lo que el elemento es universal) y, a continuación, se despliega mediante DevOps para que no se comunique directamente con OKE.
La automatización de las versiones de software con el despliegue de pipeline aumenta la productividad del desarrollador y le permite lanzar funciones con más frecuencia y con menos errores. Ayuda a evitar el tiempo de inactividad durante el despliegue y automatiza la complejidad de la actualización de aplicaciones. Oracle DevOps lo pueden utilizar tanto los clientes que migran cargas de trabajo desde entornos locales u otras nubes a OCI como los clientes que desarrollan nuevas aplicaciones en OCI.
Arquitectura
En esta arquitectura de referencia, se despliega una aplicación de ejemplo desde GitHub mediante acciones de GitHub y servicio OCI DevOps. La aplicación se despliega en el cluster de OKE.
El siguiente diagrama ilustra esta arquitectura de referencia.
Descripción de la ilustración devops-arch.png
- 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 sola región.
- Sistema IC externo
Esta arquitectura utiliza acciones GitHub como un sistema de integración continua externo. GitHub Las acciones automatizan, personalizan y ejecutan flujos de trabajo de desarrollo de software desde el repositorio GitHub. Aquí, las acciones GitHub se utilizan para crear código y, a continuación, en contenedores mediante Docker. Cuando la imagen en contenedores está lista, las acciones GitHub transfieren la imagen a un repositorio de artefactos de OCI (de manera alternativa, el artefacto se coloca en una ubicación central en la que las acciones GitHub se pueden configurar para que denuden DevOps para recuperar el artefacto. Esto significa que el contenido se extrae, no se inserta). Después de completar la transferencia al repositorio de artefactos, inicia el pipeline de despliegue DevOps de OCI. También puede utilizar otros sistemas de integración continua como Jenkins o Gitlab en función de sus necesidades.
Si se están utilizando las técnicas IaC, antes del despliegue, el pipeline podría utilizar servicios como el gestor de recursos para instanciar un entorno y, una vez completado, eliminar esos recursos mediante el gestor de recursos en .
El pipeline de despliegue de Devops también puede almacenar la salida resultante en algún lugar seguro para la generación de informes.
- DevOps project
Un proyecto DevOps es una agrupación lógica de recursos necesarios para implementar la carga de trabajo de integración y despliegue continuos (CI/CD). Los recursos DevOps pueden ser artefactos, pipelines de despliegue y entornos. Los proyectos DevOps facilitan el registro, la supervisión y las notificaciones de todos sus recursos DevOps.
- Pipeline de despliegue
Un pipeline de despliegue contiene los requisitos que se deben cumplir para entregar un juego de artefactos a un entorno. Los pipelines contienen etapas, que son los bloques de creación de un pipeline. Un pipeline puede tener etapas que se ejecuten en serie o en paralelo, de modo que pueda controlar el flujo y la lógica de la versión de software.
- Etapas de despliegueLas etapas son acciones individuales que se realizan durante la ejecución de un pipeline. El pipeline de despliegue de DevOps incluye los siguientes tipos de etapa predefinidos que se utilizarán en el proceso de versión:
- Despliegue continuo: una versión incremental en OKE, Functions o grupos de instancias.
- Wait: Wait N seconds.
- Aprobación manual: continúe si se proporciona una aprobación; detenga si se rechaza una aprobación.
- Función de llamada: realice tareas e integración personalizadas llamando a una función y transfiera un artefacto de parámetros de solicitud.
- DevOps artefacto
Un artefacto DevOps es una referencia o puntero a cualquier archivo, archivo binario, paquete, manifiesto o imagen que forme la aplicación. Al crear un artefacto, debe informar 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 de registro de artefactos de OCI.
- Repositorio de artefactos
El repositorio de artefactos se utiliza para crear repositorios para agrupar artefactos similares. Una vez creado el repositorio, los artefactos se pueden cargar en ellos. Estos artefactos son una recopilación de archivos de texto, binarios y manifiestos de despliegue que se entregarán al entorno de despliegue de destino. Cada artefacto tiene un nombre, que está hecho de su ruta de acceso: versión. La ruta de acceso es una cadena para organizar los artefactos.
- Servicios de registro y notificaciones de OCI
El servicio de registro de OCI almacena logs relacionados con el despliegue. La salida del tiempo de ejecución del 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 sus recursos, y realiza las acciones necesarias. Por ejemplo, se le notifica cuando un evento importante, como una etapa de 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 informática (VM) o una instancia con hardware dedicado, o un cluster de OKE.
- Cluster de Oracle Kubernetes (OKE): Oracle Container Engine for Kubernetes 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 OCI Compute permite aprovisionar y gestionar hosts informáticos en la nube. Puede iniciar instancias informáticas con unidades que cumplan los requisitos de recursos para CPU, memoria, ancho de banda de red y almacenamiento.
- Funciones: Oracle Functions es una plataforma de funciones como servicio totalmente gestionada, multicliente, altamente escalable y bajo demanda. Se basa en OCI de nivel empresarial y en el motor de código abierto Fn Project.
Recomendaciones
- VCN
Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque según el número de recursos que planea asociar a subredes de la VCN. Utilice bloques CIDR que estén 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 el cluster de OKE. También puede utilizar una VCN privada. En ese caso, utilice un gateway de NAT para proporcionar al cluster acceso a través de la red pública de Internet.
- Unidades informáticas
Esta arquitectura utiliza una imagen del sistema operativo Oracle Linux con unidad flexible E3 o E4 con recursos mínimos para alojar hosts informáticos en los nodos de cluster de OKE. Si la aplicación necesita más memoria o núcleos, puede elegir una unidad diferente.
- OKE
Esta arquitectura se despliega en el cluster de OKE como punto final de destino. Los nodos de trabajador se implementan en un sistema operativo Oracle Linux E3 o E4. Esta arquitectura utiliza tres nodos de trabajador en el cluster, pero puede crear hasta 1,000 nodos en cada cluster.
- Registro de imágenes de contenedor
Esta arquitectura despliega el registro como un registro privado de Docker para uso interno. Las imágenes de Docker se transfieren al registro y se extraen del mismo. 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 Oracle Cloud.
- Registro de artefactos
Esta arquitectura crea un artefacto para el software y la configuración utilizados por un cluster de OKE. La arquitectura crea un repositorio de registro de artefactos para uso interno. Las configuraciones de despliegue, texto y binarios de software se cargan y descargan desde el repositorio de registro de artefactos.
Consideraciones
Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.
- Despliegues compatibles con DevOps
DevOps soporta despliegues en OKE, hosts informáticos y funciones. Esta arquitectura se despliega en un cluster de OKE. Considere realizar el despliegue en otros puntos finales según los requisitos.
- Soporte de Linux
Solo están soportados los hosts de Linux para despliegues de grupos de instancias en instancias informáticas.
- artefactos desplegados
Los artefactos que se van a desplegar con DevOps deben estar en un registro de artefactos de OCI o en un repositorio de registro de imágenes de contenedor.
- Agrupación de aplicaciones
Como mejor práctica, agrupe cada aplicación y todos sus microservicios en un solo proyecto. Asegúrese de que se entiende la propuesta de valor de dividir el proceso y de que se mantienen las divisiones.
Desplegar
Para desplegar esta arquitectura, siga las instrucciones para el despliegue de la aplicación Java en este laboratorio activo: