Despliegue una aplicación basada en Helm con Oracle Cloud Infrastructure DevOps

La entrega rápida de software es esencial para ejecutar de forma eficaz sus aplicaciones en la nube. La automatización de versiones de software con el despliegue del pipeline aumenta la productividad de los desarrolladores y le permite lanzar funciones con más frecuencia y con menos errores. Ayuda a evitar el tiempo de inactividad durante los despliegues y automatiza la complejidad de actualizar las aplicaciones.

El servicio Oracle Cloud Infrastructure DevOps proporciona una experiencia completa de despliegue continuo a los desarrolladores. El servicio Oracle Cloud Infrastructure DevOps incluye pipelines de despliegue para automatizar la entrega continua de software y el proceso de despliegue (CD) a las plataformas de Oracle Cloud Infrastructure (OCI): Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Functions y Oracle Cloud Infrastructure Compute.

Los clientes que migren cargas de trabajo desde entornos locales u otras nubes a OCI y los clientes que desarrollan nuevas aplicaciones en OCI pueden utilizar Oracle Cloud Infrastructure.

Arquitectura

Esta arquitectura muestra una aplicación de ejemplo NodeJS desplegada con el gráfico de Helm desde el repositorio de código mediante el servicio DevOps de Oracle Cloud Infrastructure (OCI). La aplicación se despliega en el cluster de Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Para simplificar el proceso, utilizamos Terraform para la automatización de la infraestructura.

El siguiente diagrama ilustra esta arquitectura de referencia.

A continuación se muestra la descripción de deployment-helm-based-app.png
Descripción de la ilustración deployment-helm-based-app.png

deployment-helm-based-app-oracle.zip

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 de otras regiones y las grandes distancias pueden separarse (entre países e incluso continentes).

  • Red virtual en la nube (VCN) y subredes

    Una VCN es una red personalizable definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de centros de datos tradicionales, las VCN le proporcionan un control total de su entorno de red. Una VCN puede tener varios bloques CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes que se pueden acotar a una región o a un dominio de disponibilidad. Cada subred consta de un rango contiguo de direcciones que no se solapan con las demás subredes de VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Proyecto DevOps de OCI

    Un proyecto DevOps de OCI es una agrupación lógica de recursos necesarios para implementar su carga de trabajo de integración y despliegue continuos (CI/CD). Los recursos DevOps de OCI pueden ser artefactos, pipelines de despliegue y entornos. Los proyectos de OCI DevOps facilitan el registro, la supervisión y las notificaciones de los recursos de OCI 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, disparando un despliegue. El flujo y las instrucciones de la ejecución de creación se definen en el archivo de especificaciones de creación.

  • Etapas de creación

    Las etapas de creación son acciones individuales que se realizan durante una ejecución de un pipeline de creación. El pipeline de compilación DevOps de OCI incluye tres etapas:
    1. Build Container: ejecuta instrucciones build_spec.yaml para compilar, crear y preparar los artefactos necesarios.
    2. Cargar artefactos: carga todos los artefactos preparados como imágenes de docker en el repositorio de Oracle Cloud Infrastructure Registry configurado.
    3. Disparar despliegue: dispara el pipeline de despliegue para aplicar los cambios al OKE configurado.
  • 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, para que pueda controlar el flujo y la lógica de su versión de software.

  • Etapas de despliegue

    Las etapas son acciones individuales que se realizan durante una ejecución de un pipeline. El pipeline de despliegue DevOps de OCI incluye solo una etapa predefinida denominada Deploy Helm para desplegar la aplicación Kubernetes mediante el gráfico de Helm. La URL del gráfico de Helm y los artefactos opcionales de OCI DevOps del archivo values.yaml se envían como argumentos a la etapa de despliegue de Helm. Durante la ejecución, la etapa de despliegue de Helm recupera el gráfico de Helm de Oracle Cloud Infrastructure Registry y aplica lo mismo al entorno de OKE OCI DevOps configurado con un archivo values.yaml proporcionado opcionalmente.

  • Artefacto DevOps

    Un artefacto DevOps de OCI es una referencia o puntero a cualquier archivo, binario, paquete, manifiesto o imagen que constituya la aplicación. Al crear un artefacto, debe informar a OCI DevOps de la ubicación de origen del artefacto real. OCI DevOps soporta el registro de contenedor de OCI y los repositorios del registro de artefactos de OCI.

  • Repositorio de artefactos

    El repositorio de artefactos crea repositorios para agrupar artefactos similares. Puede cargar artefactos en los repositorios después de crearlos. 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 es una cadena para organizar los artefactos.

  • Helm

    Helm es un gestor de paquetes de Kubernetes que gestiona el despliegue de aplicaciones como un conjunto de gráficos de Helm, que permite gestionar los distintos servicios individuales y sus ciclos de vida fácilmente.

    El módulo Helm para Oracle Linux instala Helm en un módulo (cluster) de Kubernetes.

  • Gráfico de Helm

    Los manifiestos YAML de Kubernetes se combinan en un único paquete que se puede desplegar en los clusters de Kubernetes. Los gráficos de Helm contienen plantillas de archivos de manifiesto YAML de Kubernetes y un archivo values.yaml para proporcionar los valores de plantilla por defecto. Utilice gráficos de Helm para desplegar una aplicación o un componente de una aplicación más grande.

  • Servicios de registro de OCI y notificaciones de OCI

    Los servicios Oracle Cloud Infrastructure Logging y Oracle Cloud Infrastructure Notifications almacenan 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 OCI Notifications proporciona visibilidad del estado más reciente del proyecto de despliegue y sus recursos y toma cualquier acción necesaria.

  • Entornos de despliegue

    Un entorno es una recopilación de recursos informáticos de un cliente en los 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.

    • Oracle Kubernetes cluster (OKE): OCI 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, multi-inquilino, altamente escalable. Se basa en OCI de nivel empresarial y en el motor de código abierto Fn Project.

    Esta arquitectura utiliza un cluster de OKE como entorno. Los entornos pueden estar en distintas regiones de OCI de la región del pipeline de despliegue. Esto permite a los desarrolladores desplegar en varias regiones de OCI con el mismo pipeline de despliegue.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida. Sus requisitos pueden diferir 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 según el número de recursos que planea asociar a subredes en la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.

    Esta arquitectura utiliza una VCN pública para alojar un cluster de 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.

  • 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 en los nodos de cluster de OKE. Si la aplicación necesita más memoria o núcleos, puede elegir una unidad diferente.

  • Kubernetes (HORAS)

    Esta arquitectura se despliega en el cluster de OKE como punto final de destino. Los nodos de trabajador se despliegan en un sistema operativo Oracle Linux 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 Registry como 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 Registry como registro público de Docker, lo que permite a cualquier usuario con acceso a Internet y conocimiento de la URL correspondiente extraer imágenes de repositorios públicos en Oracle Cloud. En esta arquitectura, también se utiliza el mismo registro de contenedor para almacenar gráficos de Helm.

  • 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. Los binarios de software, las configuraciones de texto y despliegue se cargan y descargan desde el repositorio de registro de artefactos.

Consideraciones

Tenga en cuenta los siguientes puntos al desplegar esta arquitectura de referencia.

  • Oracle Cloud Infrastructure DevOps despliegues soportados

    DevOps soporta despliegues en Kubernetes (OKE), hosts informáticos y Oracle Functions. Esta arquitectura se despliega en un cluster de OKE mediante el gráfico de Helm. Considere el despliegue en otros puntos finales en función de los requisitos.

  • Hosts soportados

    Solo están soportados los hosts de Linux para despliegues de grupos de instancias en instancias de Oracle Cloud Infrastructure Compute.

  • Artefactos

    Los artefactos que desplegar con Oracle Cloud Infrastructure DevOps deben estar en un registro de artefactos de Oracle Cloud Infrastructure o en un repositorio de registro de imágenes de contenedor.

  • Proyectos

    La mejor práctica es agrupar cada aplicación y todos sus microservicios en un solo proyecto.

Despliegue

El código de Terraform de esta arquitectura de referencia está disponible en GitHub.

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

Confirmaciones

Autor: Ashok Raja CM

Colaborador: Saurabh Shah, Lukasz Feldman