IBM Cloud Docs
Desarrollo y despliegue de una aplicación en una máquina virtual

Desarrollo y despliegue de una aplicación en una máquina virtual

En esta guía de aprendizaje se muestra cómo configurar una cadena de herramientas de Continuous Delivery y distribuir una aplicación (app) simple a una máquina virtual. Puede configurar el control de origen y luego crear, probar y desplegar el código en distintas etapas de despliegue.

De forma predeterminada, la cadena de herramientas utiliza una app de ejemplo Java Hello World basada en Maven, aunque en lugar de ello también puede traer su propia app y enlazarla. Esta cadena de herramientas está configurada con canalizaciones para la integración continua y la entrega continua con Code Risk Analyzer, control de código fuente, seguimiento de incidencias y edición en línea.

El código de aplicación se almacena en el repositorio de control del origen de la aplicación (repo). Los scripts de compilación y despliegue se almacenan en el repositorio de control de origen del conducto. Puede personalizar los scripts de compilación y despliegue para cumplir los requisitos de desarrollo para la app.

La cadena de herramientas de esta guía de aprendizaje implementa las siguientes prácticas recomendadas:

  • Crea un binario de aplicación en cada confirmación de Git y establece una etiqueta basada en el número de compilación, la indicación de fecha y hora y el ID de confirmación para facilitar su rastreo.
  • Inserta automáticamente el binario creado en el manifiesto de despliegue.
  • Crea una instancia de Object Storage y un grupo para almacenar los archivos binarios transitorios que se han creado. Para los usuarios avanzados, se puede configurar e integrar un repositorio Artifactory existente con la cadena de herramientas para dar soporte a la creación de versiones de artefactos de compilación para facilitar el rastreo y cumplir los requisitos de conformidad.

La cadena de herramientas implementa tres conductos para crear y desplegar código de la app en una máquina virtual.

  • Conducto de integración continua (CI): este conducto se activa cuando un cambio se fusiona con la rama maestra del repositorio de código fuente de la aplicación. El conducto de CI ejecuta la prueba unitaria, la cobertura de código y exploraciones estáticas en el código fuente de la aplicación. El conducto de CI también genera el artefacto de compilación binario y lo carga en un grupo de Object Storage o Artifactory, según se haya configurado en la cadena de herramientas. Y el conducto de CI genera los metadatos de los artefactos de compilación y los almacena en el repositorio de inventario.

  • Conducto de despliegue continuo (CD): este conducto se activa mediante una ejecución correcta del conducto de CI. El conducto de CD es el responsable de desplegar los artefactos de compilación en el entorno de despliegue. El conducto verifica que el despliegue de la aplicación se ha realizado correctamente ejecutando la comprobación de estado y retrotrae los cambios si el despliegue no se ha realizado correctamente.

  • Conducto de solicitud de extracción (PR): este conducto se activa cuando se crea una solicitud de fusión o extracción en el repositorio de código fuente de la aplicación. Generalmente el desarrollador del código fuente de la aplicación crea esta solicitud manualmente para fusionar los cambios de su rama de desarrollo con la rama maestra o con cualquier otra rama. El conducto de PR ejecuta la prueba unitaria y las exploraciones estáticas sobre el código fuente de la aplicación.

Architectural diagram
Architectural diagram

Antes de empezar

Configure la instancia de servidor virtual para que la cadena de herramientas despliegue la app en la instancia del servidor virtual. Puede utilizar una instancia de servidor virtual existente o configurar una nueva que cumpla los requisitos siguientes:

  1. Configure la instancia del servidor virtual en IBM Cloud.
  2. Reserve una dirección IP flotante para hacer que la instancia del servidor virtual sea accesible a través de Internet público. Como alternativa, puede utilizar la entrada DNS disponible. En esta guía de aprendizaje se utiliza una dirección IP flotante.
  3. Cree el usuario (preferiblemente sin privilegios) y claves SSH para la instancia de servidor virtual.
  4. Configure grupos de seguridad para la instancia de servidor virtual. Permita que la cadena de herramientas realice comprobaciones de estado en la app desplegada añadiendo una regla de entrada para TCP para permitir el puerto 8080 pueda acceder al punto final de la app. Para obtener más información sobre cómo añadir una regla de entrada, consulte Gestión de grupos de seguridad.
  5. Asegúrese de que SDK de Java™ esté instalado en la máquina virtual o utilice el mandato siguiente para instalarlo: yum install -y tar java.
  6. Opcional. Si necesita almacenar secretos en Key Protect, ejecute la codificación base64 del valor. Para obtener más información sobre los detalles de mandato necesarios, consulte Firma de imágenes: generar una clave GPG.

Creación de la cadena de herramientas

Para crear una cadena de herramientas Desarrollar una aplicación para una máquina virtual, pulse

Crear cadena de herramientas

Como alternativa, desde la consola IBM Cloud, haga clic en el icono de menú hamburguesa > Automatización de la plataforma > Cadenas de herramientas. En la página Cadenas de herramientas, pulse Crear una cadena de herramientas. En la página Crear una cadena de herramientas, pulse Desarrollar una aplicación para una máquina virtual.

Configuración de una instancia de servidor virtual simple

  1. En el separador Crear, revise los valores predeterminados.

    Configuración de la cadena de " caption-side="bottom"} de la cadena{: caption="herramientas*

  2. El nombre de la cadena de herramientas la identifica en IBM Cloud. Si desea utilizar otro nombre, cambie el nombre de la cadena de herramientas. Puesto que el nombre de la cadena de herramientas se utiliza para crear el URL que se utiliza para acceder a la app, asegúrese de especificar un nombre exclusivo.

  3. De forma predeterminada, la cadena de herramientas crea el repositorio de origen en Git Repos and Issue Tracking. Para utilizar otro proveedor para el repositorio de origen de Git, como GitHub o GitLab, selecciónelo en la lista de repositorios disponibles.

    Esta cadena de herramientas utiliza herramientas que están incluidas en el servicio Continuous Delivery. Si aún no hay una instancia de dicho servicio en el grupo de recursos seleccionado, se añadirá automáticamente con el plan Lite gratuito cuando pulse Crear para crear la cadena de herramientas.

Configuración del repositorio de apps

  1. En el separador Git Repos and Issue Tracking revise el valor predeterminado que especifica la ubicación del código fuente de la app.

  2. De forma predeterminada, la cadena de herramientas utiliza una app de ejemplo Java Hello World basada en Maven. En su lugar, puede actualizar el valor de ubicación para enlazar con su propia app.

    caption-side=bottom"
    App

Configuración del repositorio de inventario

El repositorio de inventario almacena los metadatos para compilaciones y artefactos. Para activar el conducto para desplegar los artefactos que se describen en la confirmación en la instancia de servidor virtual, confirme el repositorio de inventario y luego ejecute las tareas de aceptación.

Repo de inventario de " caption-side="bottom"} de inventario de{: caption="

Configuración del conducto de entrega

  1. Vaya al separador Conducto de entrega.

    Delivery Pipeline configuration
    Delivery Pipeline configuration

  2. Especifique una clave de API de IBM Cloud existente o cree una clave. La cadena de herramientas utiliza esta clave para interactuar con otros servicios en la nube que están integrados en la cadena de herramientas.

  3. Especifique la región en la que se ejecuta la instancia del servidor virtual, como por ejemplo us-south.

  4. Especifique la dirección IP flotante de la instancia de servidor virtual en el formato aaa.bbb.ccc.ddd.

  5. Seleccione el tipo de autenticación SSH Key y especifique las credenciales siguientes:

    • Nombre de usuario: el nombre del usuario de la instancia de servidor virtual con permisos para desplegar y ejecutar la aplicación.
    • Clave SSH: la clave SSH privada del usuario para ejecutar y desplegar la aplicación.
  6. Ejecute los mandatos siguientes para crear un nuevo par de claves en la instancia de servidor virtual para el usuario con permisos para desplegar y ejecutar las aplicaciones.

            # Create the SSH key
                `ssh-keygen -C cloud.ibm.com`
            # copy public key to the VSI
                `ssh-copy-id -i .ssh/id_rsa.pub <UserName>@<xx.yy.zz.aa>`
    

Opcional. Creación de una configuración de almacenamiento transitorio

Cualquier cambio en el origen activa el conducto de integración continua. Cuando se ejecuta correctamente una integración continua, se crea y se guarda un artefacto de compilación o binario en el almacenamiento transitorio y luego se despliega en la instancia de servidor virtual de destino.

  1. En el separador Más herramientas de la cadena de herramientas, puede optar por utilizar Object Storage o Artifactory como almacenamiento transitorio para guardar los archivos binarios de compilación.
  2. Si su cuenta no contiene ninguna instancia de Object Storage, la cadena de herramientas crea una nueva instancia de Object Storage en el grupo de recursos predeterminado. A continuación, la cadena de herramientas crea un grupo que utiliza el mismo nombre que la cadena de herramientas dentro de la nueva instancia de Object Storage.
  3. Si la cuenta ya contiene instancias de Object Storage, la cadena de herramientas utiliza una de estas instancias para almacenar artefactos de compilación transitorios.
  4. Para configurar los detalles de Object Storage o Artifactory, consulte la sección Configuración de opciones avanzadas de usuario.
  5. Pulse Crear para crear la cadena de herramientas.

Exploración de su nueva cadena de herramientas

Después de crear la cadena de herramientas, muestra cada una de las integraciones de herramientas que forman parte de la cadena de herramientas en un diagrama.

Exploración de los conductos

Puede explorar los conductos para comprender el flujo de la cadena de herramientas y las distintas operaciones que se ejecutan dentro de cada conducto. Por ejemplo, para ver varios pasos como cra-discovery-scan y los detalles de parámetro y de estado, pulse la integración de la herramienta de conducto de CI y luego pulse Ejecuciones de conducto correctas.

CI PipelineRun
continua PipelineRun

Explorar DevOps Insights

DevOps Insights agrega datos de la cadena de herramientas para poder realizar un seguimiento y mejorar los procesos completos de DevOps. Puede ver métricas sobre calidad, realizar un seguimiento de los trabajos de compilación y despliegue, ver políticas y más.

Si el código no cumple o supera una política, el despliegue se detiene para evitar la exposición a riesgos. Puede utilizar DevOps Insights como red de seguridad para su entorno de entrega continua o como método para implementar y mejorar los estándares de calidad.

En la imagen siguiente se muestra el panel de control de calidad que proporciona conjuntos de datos de calidad, como pruebas de unidad, cobertura de código, pruebas de verificación funcional y exploraciones de seguridad estáticas para cada aplicación.

DevOps Insights Quality Dashboard
DevOps Insights Quality Dashboard

Exploración de GitOps

GitOps es un conjunto de prácticas y herramientas que coloca Git en el centro de la cadena de herramientas de DevOps y como origen de confianza de lo que se debe desplegar en la instancia del servidor virtual. Con GitOps, los desarrolladores y operadores utilizan flujos de trabajo de Git conocidos para definir, revisar, aprobar y auditar los cambios en su infraestructura y en las aplicaciones. Las herramientas automatizadas se encargan de sincronizar el estado activo de sus destinos con el estado deseado que se describe en Git.

Mediante la cadena de herramientas de esta guía de aprendizaje, puede controlar los despliegues en varios entornos mediante la creación de una rama para cada entorno. En el siguiente flujo de trabajo de ejemplo se activa un conducto de Continuous Delivery cuando se realiza una solicitud de extracción o una confirmación a una rama específica del repositorio de inventario.

  1. Cree una cadena de herramientas para la instancia de servidor virtual en IBM Cloud proporcionando detalles para la instancia del servidor virtual, como el repositorio de aplicaciones y Object Storage. No especifique ningún detalle para el repositorio de inventario.
  2. Una vez creada la cadena de herramientas, desde el repositorio de inventario, cree varias ramas, como Dev, Staging y Prod.
  3. Pulse el conducto de Continuous Delivery y vaya a los activadores. Añada un origen de activación como repositorio de inventario con la rama que desea que active el conducto de CD (maestro).
  4. Modifique el conducto de integración continua para que se comprometa a los respectivos repositorios de inventario después de una integración correcta.
  5. Cuando haya suficientes confirmaciones disponibles en el repositorio de inventario, fusione la solicitud de extracción del repositorio con el nodo maestro para iniciar una compilación de Continuous Delivery.

Mediante GitOps, puede controlar los despliegues en varios entornos mediante la creación de una rama para cada entorno.

Configuración de opciones avanzadas de usuario

Para acceder a las opciones avanzadas de usuario, vaya al separador Más herramientas.

  • Especifique una instancia existente de Cloud Object Storage para almacenar artefactos de compilación transitorios:

    • Especifique el nombre del grupo en su instancia de Object Storage donde desea almacenar los artefactos de compilación transitorios. Para cargar objetos en el grupo, deben residir en la misma región en la que se ha creado la cadena de herramientas.

    • Seleccione la clave de API que tenga acceso de lectura y escritura al grupo que haya especificado.

    Cloud Object Storage Integration Details
    Cloud Object Storage integration details

  • Para utilizar una cuenta de Artifactory para almacenar artefactos de compilación transitorios, especifique detalles para la instancia de Artifactory:

    • URL del servidor de Artifactory: URL de HTTPS del servidor de Artifactory
    • Tipo: elija entre npm, maven o docker
    • ID de usuario de Artifactory: ID de usuario para iniciar sesión en el servidor de Artifactory, en el formato xxx.xxx@xxx.com
    • Clave de API de Artifactory: clave de API que ha generado el usuario (existente o nueva)
    • URL del release: URL del release para el repositorio de Artifactory donde se almacenan los artefactos

Algunos campos de Artifactory solo son obligatorios cuando se utiliza la configuración de Artifactory.

Artifactory Integration Details
Artifactory integration details

Pulse Crear para crear la cadena de herramientas. Este proceso puede tardar algunos minutos en completarse.

Opcional. Retrotracción de la versión anterior de la aplicación desplegada

Es posible que desee retrotraer el código desplegado debido a resultados de pruebas, problemas de calidad de código y otros problemas. Puede utilizar el repositorio de inventario para retrotraer a la versión anterior de la aplicación.

  1. Escriba git clone <inventory-repo-url> para clonar y descargar el repositorio del inventario Git de la interconexión. El conducto de Continuous Delivery escucha la rama maestra del repositorio de inventario.
  2. Escriba git log para ver la lista de confirmaciones que ha realizado el conducto de integración continua.
  3. Escriba git checkout master para comprobar la rama maestra.
  4. Escriba lastCommitID=$(git log --format="%H" -n 1) para recuperar el ID de la última confirmación correspondiente al repositorio.
  5. Escriba git revert $lastCommitID para crear una nueva confirmación invirtiendo el cambio actual. Asegúrese de suministrar un mensaje de confirmación para esta inversión.
  6. Escriba git push para enviar el cambio al repositorio de inventario e iniciar el conducto de Continuous Delivery para el despliegue de la aplicación.

Próximos pasos

Aunque en esta guía de aprendizaje se ha utilizado una app Java de ejemplo, también puede desplegar otras apps basadas en lenguaje en una instancia de servidor virtual. Para desplegar una app basada en otro lenguaje en una instancia de servidor virtual, suprima la cadena de herramientas y la instancia de servidor virtual que ha creado para esta guía de aprendizaje.