Utilice OCI DevOps para desplegar gráficos de Helm con instancias de proveniencia y contenedor mediante la etapa Shell

Una entrega rápida de software es esencial para ejecutar de forma eficiente sus aplicaciones en la nube. El servicio Oracle Cloud Infrastructure DevOps (OCI DevOps) proporciona una plataforma de integración y despliegue continuos (CI/CD) para desarrolladores.

Puede utilizar el servicio OCI DevOps para crear, probar y desplegar fácilmente software y aplicaciones en Oracle Cloud. Los pipelines de creación y despliegue de OCI DevOps reducen los errores basados en cambios y reducen el tiempo que dedica a crear y desplegar versiones.

El servicio OCI DevOps también proporciona repositorios Git privados para almacenar su código y soporta conexiones al código externo repositories.Whether que está migrando cargas de trabajo a Oracle Cloud Infrastructure (OCI), desde entornos locales u otras nubes o desarrollando nuevas aplicaciones en OCI, puede utilizar el servicio OCI DevOps para simplificar el ciclo de vida de entrega de software.

Arquitectura

En esta arquitectura de referencia, desplegaremos un despliegue de aplicación en la nube mediante OCI DevOps. Las instancias de contenedor de Oracle Container Engine for Kubernetes (OKE) y OCI se utilizan como destino de despliegue para OCI DevOps.

Las principales funciones que se tratan en esta arquitectura de referencia son:

  • Desplegar gráfico de Helm con comprobaciones de integridad y proveniencia: firma de un paquete de Helm y validación de la integridad mediante las claves de protección de privacidad de GNU mediante pipelines de despliegue.
  • Utilice la etapa Shell para desplegar la aplicación en instancias de contenedor de OCI: la etapa Shell permite ejecutar comandos personalizados en el pipeline de despliegue. Esta etapa se puede agregar en cualquier punto del pipeline de despliegue. En esta arquitectura de referencia, utilizamos la etapa Shell para desplegar una aplicación en instancias de contenedor de OCI.
  • Disparar la ejecución basada en archivos del pipeline de compilación de OCI: en OCI DevOps, una ejecución de compilación se puede disparar automáticamente al confirmar los cambios en un repositorio de código. Con esto podemos definir la exclusión e inclusión de un juego de archivos/carpetas en el que se ejecutan los pipelines de compilación durante un cambio de código.
  • Ejecutar etapas de compilación gestionadas mediante un ejecutor de compilación personalizado: el ejecutor de compilación personalizado permite definir la OCPU y la memoria deseadas para que el ejecutor de compilación soporte los recursos necesarios para ejecutar instrucciones de compilación.
  • Utilice Terraform con backend de estado remoto del pipeline de compilación DevOps de OCI: el cubo de OCI Object Storage compatible con S3 se utiliza como backend remoto para almacenar los estados de Terraform. Terraform se ejecuta desde el pipeline de compilación de OCI, que se activa con el principal de recurso para que el cliente pueda controlar el acceso a los recursos según las políticas.

En el siguiente diagrama se ilustra esta arquitectura de referencia.



oci-devops-helm-shell-oracle.zip

La arquitectura tiene los siguientes componentes:

  • arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un solo arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una sola suscripción, y una única suscripción suele tener un solo arrendamiento.

  • 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).

  • 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.

  • Repositorio de código

    Los repositorios de Git privados se pueden alojar mediante el servicio DevOps de OCI. Puede almacenar, gestionar y desarrollar código fuente con los repositorios de código DevOps de OCI.

  • Pipeline de creación

    El pipeline de compilación define un juego de etapas para el proceso de compilación: creación, prueba y compilación de artefactos de software, entrega de artefactos a repositorios de OCI y, opcionalmente, disparo de un despliegue.

  • Etapa de creación gestionada

    La etapa de compilación gestionada, crea y prueba el software con un programa de ejecución de compilación gestionada por servicio DevOps de OCI rápido y escalable que ejecuta instrucciones de compilación. En esta arquitectura de referencia, estamos utilizando una etapa de creación con unidades por defecto (OCPU y memoria predefinidas) y unidades personalizadas (valores definidos por el usuario de OCPU y memoria).

  • Etapa de entrega de artefacto

    La etapa de entrega de artefacto es una de las etapas de creación que ayudan a transferir un artefacto o una imagen de contenedor al registro de contenedor de OCI o al registro de artefactos de OCI, después de la etapa de creación gestionada.

  • Despliegue del pipeline

    Secuencia de pasos para desplegar un juego de artefactos en un entorno de destino. Un pipeline de despliegue contiene etapas que se ejecutan de forma secuencial o en paralelo.

  • Etapa de despliegue de gráfico de Helm

    Helm es un gestor de paquetes de código abierto para Kubernetes que proporciona la capacidad de compartir, empaquetar y desplegar software creado para Kubernetes. El servicio DevOps de OCI soporta el despliegue de gráficos de Helm en clusters de Container Engine for Kubernetes (OKE). La etapa de despliegue del gráfico de Helm también verifica la integridad del gráfico de Helm antes del despliegue.

  • Etapa de despliegue de shell

    La etapa de shell permite ejecutar comandos personalizados en el pipeline de despliegue. Esta etapa se puede agregar en cualquier punto del pipeline de despliegue.

  • Instancias de contenedor

    Las instancias de contenedor de OCI son un servicio de recursos informáticos sin servidor que le permite ejecutar contenedores de forma rápida y sencilla sin gestionar servidores. Las instancias de contenedor ejecutan sus contenedores en recursos informáticos sin servidor optimizados para cargas de trabajo de contenedor que proporcionan el mismo aislamiento que las máquinas virtuales.

  • Vault

    Oracle Cloud Infrastructure Vault permite gestionar de forma centralizada las claves de cifrado que protegen los datos y las credenciales secretas que utiliza para proteger el acceso a los recursos en la nube. Puede utilizar el servicio Vault para crear y gestionar almacenes, claves y secretos.

  • Object Storage

    El servicio Oracle Cloud Infrastructure Object Storage es una plataforma de almacenamiento de alto rendimiento a escala de Internet que ofrece durabilidad de datos fiable y rentable. El servicio Object Storage puede almacenar una cantidad ilimitada de datos no estructurados de cualquier tipo de contenido, incluidos datos analíticos y contenido enriquecido, como imágenes y vídeos.

  • Registro

    El servicio Oracle Cloud Infrastructure Logging es un panel único altamente escalable y totalmente gestionado para todos los logs del arrendamiento. Logging proporciona acceso a los registros desde los recursos de Oracle Cloud Infrastructure. Estos logs incluyen información de diagnóstico crítica que describe el rendimiento de los recursos y cómo se está accediendo a ellos.

  • Notificaciones

    Utilice el servicio Oracle Cloud Infrastructure Notifications para configurar canales de comunicación para la publicación de mensajes utilizando temas y suscripciones.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida. Es posible que sus requisitos difieran 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.

  • Unidades informáticas

    Esta arquitectura utiliza una imagen del sistema operativo Oracle Linux con una unidad flexible E4 con recursos mínimos para alojar hosts informáticos o nodos virtuales en los nodos de cluster de OKE. Si su aplicación necesita más memoria o núcleos, puede elegir una unidad diferente.

  • Registro de artefactos

    Esta arquitectura crea un artefacto para el software y la configuración utilizados por un despliegue de grupo de instancias, OKE y Functions. La arquitectura crea un repositorio de registro de artefactos para uso interno. Los binarios de software, el texto y las configuraciones de despliegue se cargan y descargan del repositorio de registro de artefactos.

  • Registro de imágenes de contenedor

    Esta arquitectura despliega Registry como un registro de Docker privado para uso interno. Las imágenes de Docker se transfieren al registro y se extraen del mismo. 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 en Oracle Cloud.

  • Integración y seguridad

    Aquí hay varias áreas específicas para garantizar la seguridad e integridad del software de aplicaciones. OCI Vault se utiliza para almacenar el cifrado del gráfico de helm y para garantizar la validación del gráfico antes del despliegue. Los registros (artefacto y contenedor) garantizan que las imágenes y los artefactos de la aplicación se guarden y almacenen con la seguridad necesaria. Se aplican varias reglas de seguridad y las reglas de ruta necesarias a través de la red virtual en la nube de OCI para permitir solo el tráfico de red necesario para la aplicación y la infraestructura. Además, el almacenamiento de objetos se marca como privado para que el tráfico esté protegido y controlado.

  • Object Storage

    Object Storage proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin problemas sin que se produzca ninguna degradación del rendimiento o la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento "activo" al que tenga que acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivos para el almacenamiento "en frío" que retiene durante largos períodos y a los que rara vez o rara vez accede. El código de aplicación se define en un repositorio alojado de forma privada. Además de todos los recursos necesarios, las políticas de OCI Identity se aplican según corresponda.

Consideraciones

Al utilizar el servicio OCI DevOps para desplegar una plataforma de integración y despliegue continuos (CI/CD), tenga en cuenta estos factores.

  • Despliegues soportados por DevOps

    DevOps soporta despliegues en Oracle Container Engine for Kubernetes (OKE), hosts informáticos y funciones OCI. Esta arquitectura se despliega en un cluster de OKE y utiliza una etapa de shell para otros destinos posibles. Considere desplegar en otros puntos finales según sus requisitos específicos.

  • 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 Container Image Registry.

  • Agrupación de aplicaciones

    Como práctica recomendada, agrupe cada aplicación y todos sus microservicios en un solo proyecto.

Despliegue

El código de Terraform para esta arquitectura de referencia está disponible como pila de ejemplo en Oracle Cloud Infrastructure Resource Manager. También puede descargar el código de GitHub y personalizarlo para que se ajuste a sus requisitos específicos.

  • 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.
  • Realice el despliegue con el código de Terraform en GitHub:
    1. Vaya a GitHub.
    2. Clone o descargue el repositorio en la computadora local.
    3. Siga las instrucciones del documento README.

Explorar más

Revise estos recursos adicionales para obtener más información sobre las funciones de esta arquitectura de referencia.

Confirmaciones

  • Author: Rahul M R